下载此文档

程序复杂性度量.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
程序复杂性度量
程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。
减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少
一、代码行度量法
度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法基于两个前提:
(1) 程序复杂性随着程序规模的增加不均衡地增长;
(2) 控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。
方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。若设每行代码的出错率为每 100行源程序中可能有的错误数目, 例如每行代码的出错率为1%,则是指每 100行源程序中可能有一个错误。
Thayer曾指出,%~ 7%之间,~7个错误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。Lipow进一步指出,对于小程序,%~%;对于大程序,%~%之间,但这只是考虑了程序的可执行部分,没有包括程序中的说明部分。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。所以,代码行度量法只是一个简单的,估计得很粗糙的方法。
二、McCabe度量法
McCabe度量法是一种基于程序控制流的复杂性度量方法。McCabe定义的程序复杂性度量值又称环路复杂度,它基于一个程序模块的程序图中环路的个数。
如果把程序流程图中每个处理符号都退化成一个结点,原来联结不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。
计算有向图G的环路复杂性的公式:
V(G)=m-n+2
其中,V(G)是有向图G中的环路个数,m是图G中有向弧个数,n是图G中结点个数。
以图9-5-1为例,其中,结点数n=11,弧数m=12,则有
V(G)=m-n+2=12-11+2=3。
abe环路复杂度度量值为3 。它也可以看做由程序图中的有向弧所封闭的区域个数。
图 9-5-1 程序图的例子
当分支或循环的数目增加时,程序中的环路也随之增加,abe环路复杂度度量值实际上是为软件测试的难易程度提供了一个定量度量的方法,同时也间接地表示了软件的可靠性。实验表明,abe环路复杂度度量值有明显的关系。
Myers建议,对于复合判定,例如(A=0)∩(C=D)∪(X='A')算做三个判定。
abe环路复杂度度量时,有几点说明。
·环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。
·环路复杂度是可加的。例如,模块A的复杂度为3 ,模块B的复杂度为4,则模块A与模块B的复杂度是7。
·McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。Walsh 用实例证实了这个建议的正确性。他发现,abe复杂度为10的附近,存在出错率的间断跃变。
·M

程序复杂性度量 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人水中望月
  • 文件大小38 KB
  • 时间2019-01-10