程序复杂性度量 程序复杂性主要指模块内程序的复杂性
它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少
同时它也是软件可理解性的另一种度量
减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少 一、代码行度量法 度量程序的复杂性,最简单的方法就是统计程序的源代码行数
此方法基于两个前提: ( 1) 程序复杂性随着程序规模的增加不均衡地增长; ( 2) 控制程序规模的方法最好是采用分而治之的办法
将一个大程序分解成若干个简单的可理解的程序段
方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量
若设每行代码的出错率为每 100 行源程序中可能有的错误数目, 例如每行代码的出错率为1%,则是指每 100 行源程序中可能有一个错误
Thayer 曾指出,程序出错率的估算范围是从0
04%~ 7%之间,即每100 行源程序中可能存在0
04~ 7 个错误
他还指出, 每行代码的出错率与源程序行数之间不存在简单的线性关系
Lipow 进一步指出,对于小程序,每行代码的出错率为1
8%; 对于大程序,每行代码的出错率增加到2
2%之间,但这只是考虑了程序的可执行部分,没有包括程序中的说明部分
Lipow 及其他研究者得出一个结论:对于少于 100 个语句的小程序,源代码行数与出错率是线性相关的
随着程序的增大,出错率以非线性方式增长
所以,代码行度量法只是一个简单的,估计得很粗糙的方法
二、McCabe 度量法 McCabe 度量法是一种基于程序控制流的复杂性度量方法
McCabe 定义的程序复杂性度量值又称环路复杂度,它基于一个程序模块的程序图中环路的个数
如果把程序流程图中每个处理符号都退化成一个结点,原来联结不同处理符号的流线变成连接不同结点的有向弧,