您好,欢迎访问三七文档
第19章软件的技术度量软件工程第19章软件的技术度量19.1软件质量19.2软件技术度量框架19.3分析模型的度量19.4设计模型的度量19.5源代码度量19.6对测试的度量19.7对维护的度量19.8小结19.1软件质量三个重点:1.软件需求是质量测度的基础。2.特定的标准定义了一套开发标准,用以指导软件开发的方式。3.要有一套经常未被提及的隐式需求(例如,对好的可维护性的期望)。19.1.1McCall的质量因素影响软件质量的因素可以分为两大类:(1)可以直接测度的因素(例如,每个功能点的错误)(2)只能间接测度的因素(例如,可用性和可维护性)软件质量因素在软件产品的三个方面:操作特性承受改变的能力对新环境的适应能力正确性可靠性功效完整性可用性质量的因素:•可维护性•灵活性•可测试性•可移植性•可复用性•互操作性正确性可靠性可用性完整性效率产品运行产品修订产品变迁可移植性可复用性互操作性可维护性灵活性可测试性McCall的软件质量因素Fq=c1×m1+c2×m2+…+cn×mnFq是一个软件质量因素cn是回归系数mn是影响质量因素的度量值定义一组度量,并被用于按照下面的关系为每个因素开发表达式:考虑软件质量的因素,简称为FURPS:功能性(functionality)可用性(usability)可靠性(reliability)性能(performance)支持度(supportability)19.1.2FURPSFURPS五个主要因素的评估方式:功能性可用性可靠性性能支持度19.1.3ISO9126质量因素6个关键质量属性:功能性可靠性可用性效率可维护性可移植性19.2.2测度原则五个活动为特征:•公式化•收集•分析•解释•反馈19.2软件技术度量框架19.2.3有效软件度量的属性有效软件度量包含的属性:简单的和可计算的经验和直觉上有说服力一致的和客观的在其单位和量纲的使用上是一致的编程语言独立的高质量反馈的有效机制功能点(FP)度量(第4章)可以用来作为预测从分析模型得到的系统大小的手段。19.3.2bang度量象功能点度量一样,bang度量可以由分析模型得到对将要实现的软件的大小的指示。为了独立计算bang,软件工程师必须首先评价一组原语——在分析层次不能再划分了的分析模型的元素。19.3分析模型的度量功能原语(FuP)数据元素(DE)对象(OB)关系(RE)状态(ST)变迁(TR)原语是通过评价分析模型和开发以下项的计数来决定的:除了上述的六个原语,另外如下的计数也需确定:修改的手工功能原语(FuPM)输入数据元素(DEI)输出数据元素(DEO)存储数据元素(DER)数据记号(TCi)RE/FuP<0.7意味着一个功能很强型应用程序0.8<RE/FuP<1.4意味着混合型应用程序RE/FuP>1.5意味着数据复杂型应用程序因为不同的分析模型将模型分成或大或小的细化程度,一个对每个原语的平均记号计数:TCavg=ΣTCi/FuP它被用来控制在某应用程序领域中跨越很多不同模型划分的一致性。为了计算功能很强型应用软件的“撞击值”,可以用以下算法:setinitialvalueofbang=0;dowhilefunctionalprimitivesremaintobeevaluatedcomputetoken-countaroundtheboundaryofprimitivei;computecorrectedFuPincrement(CFuPI);Allocateprimitivetoclass;Assessclassandnoteassessedweight;MultiplyCFuPIbytheassessedweight;bang=bang+weightedCFuPI;enddo为了计算数据强型应用程序,可以用以下算法:setinitialvalueofbang=0;dowhileobjectsremaintobeevaluatedinthedatamodelcomputecountofrelationshipsforobjecti;computecorrectedOBincrement(COBI);bang=bang+COBI;enddo明确性(无二义性)完全性正确性可理解性可验证性内部和外部一致性19.3.3规约质量的度量•可完成性•简洁性•可追踪性•可修改性•精确性•可复用性评价分析模型和相应的需求规约质量的特征:三个软件设计复杂度测度:结构复杂度数据复杂度系统复杂度19.4设计模型的度量19.4.1体系结构设计度量一个模块i的结构复杂度,S(i):S(i)=f²out(i)其中fout(i)是模块i的扇出数据复杂度,D(i),提供了一个模块i的内部接口的复杂度的指示:D(i)=v(i)/[fout(i)+1]其中V(i)是传入传出模块i的输入输出变量的个数。系统复杂度,C(i),定义为结构复杂度和数据复杂度的总和C(i)=S(i)+D(i)复杂性度量:HKM=length(i)×[fin(i)+fout(i)]²其中length(i)是在模块i中编程语言语句的数目,fin(i)是模块i的扇入。构件级设计度量集中于软件的内部特性且包括“三个C”的测度:模块内聚(cohesion)耦合(coupling)复杂度的度量(complexity)19.4.2构件级设计度量数据切片数据记号胶合记号超胶合记号粘度内聚度量定义:强功能内聚(SFC)弱功能内聚(WFC)SFC(i)=SG(SA(i))/tokens(i)其中SG(SA(i))指超胶合记号——位于一个模块i的所有数据片的数据记号集合。当超胶合表征比上模块i中的所有的记号的总和上升到最大值1的时候,模块的功能内聚也增加。对数据和控制流耦合:di=输入数据参数的个数ci=输入控制参数的个数do=输出数据参数的个数co=输出控制参数的个数19.4.2.2耦合度量gd=用作数据的全局变量的个数gc=用作控制的全局变量的个数对全局耦合:w=被调用模块的个数(扇出)r=调用所考虑的模块的模块数(扇入)使用这些度量,一个模块耦合指示器,mc,以下面方式定义:mc=k/M其中k=1,一个比例常数,而且M=di+a×ci+do+b×co+gd+c×gc+w+r其中a=b=c=2mc的值越高,整体模块耦合越低一个改进的耦合度量:C=1-mc其中耦合度在最小值0.66到接近1的最大值之间非线性上升。对环境耦合:开销=∑[变迁频率(k)×变迁开销(k)]其中k是当一个特定任务完成时,从一个布局实体到下一个实体的特定变迁对完成某应用功能所需的一个特定任务或任务集的所有变迁形成一个总和。开销可以用时间、处理延迟、或其他合理的值,例如一个鼠标在布局实体之间移动的距离,来标识。19.4.3界面设计度量LA=100×[(LA开销-最优布局)/(提出的布局开销)]其中对于一个最优布局LA=100。布局恰当性定义成:为了计算GUI的最优布局,界面区域(屏幕的区域)被分成方格,每个方格代表着一个布局实体可能的位置。对于一个有N个可能位置的且放置K个不同的布局实体的方格,可能的布局数以下面方式给出[SEA93]:可能的布局数=[N!/(K!×(N-K)!)]×K!当布局位置数上升,可能的布局数增长得十分大。为发现一个最优布局,可采用树搜索算法。n1——在一个程序中出现的不同操作符n2——在一个程序中出现的不同操作数N1——操作符出现的总数N2——操作数出现的总数19.5源代码度量Halstead展示了长度N可以这样来估计:N=n1log2n1+n2log2n2程序体积可以如下定义:V=Nlog2(n1+n2)以基本测度而言,体积比率可以写成:L=2/n1×n2/N2使用程序体积的定义V程序层次PL软件科学工作量e:PL=1/[(n1/2)×(N2/n2)]e=V/PL将被分配给模块k的整体测试工作量百分比:测试工作量百分比(k)=e(k)/Σe(i)19.6对测试的度量软件成熟度指标(SMI):MT=当前发布中的模块数Fc=当前发布中已经变更的模块数Fa=当前发布中已经增加的模块数Fd=当前发布中已删除的前一发布中的模块数19.7对维护的度量软件成熟度指标以下面的方式计算:SMI=[MT-(Fa+Fc+Fd)]/MT当SMI接近1.0的时候,产品开始稳定19.8小结软件度量提供了一个定量的方法来评价产品内部属性的质量,因此可以使得软件工程师能够在产品完成之前进行质量评估。度量提供了创建有效的分析和设计模型、可靠的代码、和完全的测试必需的洞察。
本文标题:19软件的技术度量
链接地址:https://www.777doc.com/doc-3101593 .html