软件工程-第14章第2-3节_第1页
软件工程-第14章第2-3节_第2页
软件工程-第14章第2-3节_第3页
软件工程-第14章第2-3节_第4页
软件工程-第14章第2-3节_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

14.2质量度量模型

14.2.1McCall质量度量模型McCall质量度量模型是McCall等人于1979年提出的软件质量模型,如图14.2所示。图14.2McCall软件质量度量模型14.2.1McCall质量度量模型针对面向软件产品的运行、修正和转移,软件质量概念包括如下11个特性。1)面向软件产品运行面向软件产品运行的定义如下:(1)正确性:指软件满足设计说明及用户预期目标的程度。(2)可靠性:指软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度。(3)效率:为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度。(4)完整性:对非授权人访问软件或数据行为的控制程度。(5)可用性:用户熟悉、使用及准备输入和解释输出所需工作量的大小。14.2.1McCall质量度量模型2)面向软件产品修正面向软件产品修正的定义如下:(1)可维护性:指找到并改正程序中的一个错误所需代价的程度。(2)可测试性:指测试软件以确保其能够执行预定功能所需工作量的程度。(3)适应性:指修改或改进一个已投入运行的软件所需工作量的程度。14.2.1McCall质量度量模型3)面向软件产品转移面向软件产品转移的定义如下:(1)可移植性:指将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量。(2)可重用性:指一个软件(或软件的部件)能再次用于其他相关应用的程度。(3)互操作性:指将一个系统耦合到另一个系统所需的工作量。14.2.1McCall质量度量模型通常,对以上各个质量特性直接进行度量是很困难的,在有些情况下甚至是不可能的。因此,McCall定义了一些评价准则,这些准则可对反映质量特性的软件属性分级,并以此来估计软件质量特性的值。软件属性一般分级范围为0(最低)~10(最高)。主要评价准则定义如下:(1)可跟踪性:指跟踪一个设计说明或一个实际程序部件返回到需求的能力(可追溯)。(2)完备性:指所需功能实现的程度。14.2.1McCall质量度量模型(3)一致性:指在整个软件开发项目中使用统一的设计和文档编制技术的程度。(4)安全性:指防止软件受到意外的或蓄意的存取、使用、修改及毁坏,或防止失密的程度。(5)容错性:指在系统出错时,能以某种预定方式做出适当处理,得以继续执行和恢复系统的能力,容错性又称为健壮性。(6)准确性:指能达到的计算或控制精度,又称为精确性。(7)可审查性:指检查与标准是否符合的难易程度。(8)可操作性:指软件操作的难易程度。(9)可训练性:指软件使新用户使用该系统的辅助程度。14.2.1McCall质量度量模型(10)简洁性:指在不复杂、可理解的方式下,定义和实现软件功能的程度。(11)简明性:又称可理解性,指软件易读的程度。(12)模块性:指软件系统内部接口达到的高内聚、低耦合的程度。(13)自描述性:指对软件功能进行自身说明的程度。(14)通用性:指软件功能覆盖面宽广的程度。(15)可扩充性:指软件的体系结构、数据设计和过程设计的可扩充的程度。(16)硬件独立性:指不依赖于某个特定设备及计算机而能工作的程度。(17)通信共用性:指使用标准接口、协议和带宽的程度。(18)数据共用性:指使用标准数据结构和数据类型的程度。14.2.2ISO的软件质量评价模型按照ISO/TC97/SC7/WG3/1985-1-30/N382,软件质量度量模型由三层组成,如图14.3所示。高层是软件质量需求评价准则(SQRC)。中层是软件质量设计评价准则(SQDC)。低层是软件质量度量评价准则(SQMC)。14.2.2ISO的软件质量评价模型14.2.2ISO的软件质量评价模型ISO认为,应对高层和中层建立国际标准,在国际范围内推广软件质量管理(SQM)技术,而低层可由各使用单位视实际情况制定。ISO的三层次模型来自McCall等人的模型。高层、中层和低层分别对应于McCall模型中的特性、度量准则和度量。其中SQRC由8个元素组成。按1991年ISO发布的ISO/IEC9126质量特性国际标准,SQRC已降为6个。在这个标准中,三层次中的第一层称为质量特性,第二层称为质量子特性,第三层称为度量。14.3软件复杂性14.3.1软件复杂性的基本概念

软件度量的一个重要分支就是软件复杂性度量。对于软件复杂性,至今尚无一种公认的精确定义。软件复杂性与质量属性有着密切的关系,从某些方面反映了软件的可维护性、可靠性等质量要素。软件复杂性度量的参数很多,主要有如下几种:14.3.1软件复杂性的基本概念(1)规模:即总共的指令数,或源程序行数。(2)难度:通常由程序中出现的操作数的数目所决定的量来表示。(3)结构:通常用与程序结构有关的度量来表示。(4)智能度:即算法的难易程度。软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性,它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少,同时它也是软件可理解性的另一种度量。14.3.1软件复杂性的基本概念减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。为了度量程序复杂性,要求复杂性度量满足以下假设:(1)它可以用来计算任何一个程序的复杂性。(2)对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算。(3)如果程序中指令条数、附加存储量及计算时间增多,不会减少程序的复杂性。14.3.2软件复杂性的度量方法1.代码行度量法度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的度量。若设每行代码的出错率为每100行源程序中可能的错误数目,例如每行代码的出错率为1%,则是指每100行源程序中可能有一个错误。Thayer曾指出,程序出错率的估算范围是0.04%~7%,即每100行源程序中可能存在0.04~7个错误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。14.3.2软件复杂性的度量方法Lipow进一步指出,对于小程序,每行代码的出错率为1.3%~1.8%;对于大程序,每行代码的出错率增加到2.7%~3.2%。但这只是考虑了程序的可执行部分,没有包括程序中的说明部分。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的;随着程序的增大,出错率以非线性方式增长。所以,代码行度量法只是一个简单的,估计得很粗糙的方法。14.3.2软件复杂性的度量方法2.

McCabe度量法McCabe度量法是一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称环路度量,它认为程序的复杂性很大程度上取决于控制的复杂性,单一的顺序程序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图,即把程序流程图中每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,得到的有向图就叫做程序图(或叫控制流图)。14.3.2软件复杂性的度量方法程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。因此,它往往把一个简单的IF语句与循环语句的复杂性看成是一样的,把嵌套的IF语句与CASE语句的复杂性看成是一样的。下面给出计算环路复杂性(或称圈复杂度)的方法。(1)利用弧边和结点数计算。根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:V(G) =

m

-

n

+

2p14.3.2软件复杂性的度量方法其中,V(G)是有向图G中的环路数,m是图G中的弧数(边数),n是图G中的结点数,p是图G中的强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式来计算环路复杂性了。14.3.2软件复杂性的度量方法在图14.4所给出的示例中,结点数n

=

6,弧数m

=

9,p

=

1,则有V(G) =

m

-

n

+

2p

=

9

-

6

+

2

=

5即McCabe环路复杂度度量值为5。(2)利用区域数计算。这种方法是利用程序图的拓扑结构把平面划分为封闭区域和开放区域的个数进行计算。在图14.4中,有4个封闭区域和1个开放区域(封闭区域外面的区域),共5个区域,则V(G)

=

5。14.3.2软件复杂性的度量方法图14.4程序图的复杂性14.3.2软件复杂性的度量方法(3)利用判定结点数进行结算。这种方法是找出控制流图中有多少个分支结点(IF个数),这个结点数加1就是圈复杂度。当分支或循环的数目增加时,程序中的环路也随之增加,因此McCabe环路复杂度量值实际上是为软件测试的难易程序提供了一个定量度量的方法,同时也间接地表示了软件的可靠性。实验表明,源程序中存在的错误数以及为了诊断和纠正这些错误所需的时间与McCabe环路复杂度度量值有明显的关系。14.3.2软件复杂性的度量方法利用McCabe环路复杂度度量时,有以下几点说明:(1)环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。(2)环路复杂度是可加的。例如,模块A的复杂度为3,模块B的复杂度为4,则模块A与模块B的复杂度是7。(3)

McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。14.3.2软件复杂性的度量方法M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论