程序复杂性度量

  • 语句行度量方法
  • Halsted霍尔特斯度量方法
  • 环路度量方法

语句行度量方法

依据程序的数据行数目作为估算其复杂性的定量指标。数据行数目越多,越复杂

Halsted方法

Halsted方法根据程序中运算符和操作数的总数来度量程序的复杂程度。

另N1为程序中运算符出现的总次数,N2为操作数(变量和常量的出现的次数)出现的总次数,实际Halstead层序长度H定义为:H=N1+N2 无法使用,因为设计阶段不知道程序具体内容

不同运算符(包括关键字)的个数n1,不同操作数(变量和常数)的个数n2。

预测Halstead程序长度的公式如下:

  • N=n1 log2 n1 + n2 log 2 n2

预测程序中包含错误的个数的公式如下:

  • E= N log2 (n1+n2)/3000

例题:一个程序对75个数据库共访问1300次,对150个运算符共使用1200次,那么预测改程序的错误数:

H=N1+N2         H=1300+1200=2500

N=n1 log2 n1 +n2 log2 n2      N=75log2(75)+150log2(150)=2551.75

E=N log2 (n1+n2)/3000          E=N log2(75+150)/3000=6.5

因此可能出现6~7个错误

McCabe方法【重点!】

McCabe方法根据程序控制流的复杂程度定量度量程序复杂程度,这样度量出的结果称为程序的环形复杂度

这种方法需要画出程序图,然后计算程序图中的环路个数【需要把(程序流程图)修改为(程序图)】,程序图仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。

如图:⚪—->⚪—->⚪  (表示顺序结构)

环路复杂度【V(G)】计算方法:

  • 方法一:区域数:V(G)=流图中的区域数(包括图外的区域)
  • 方法二:判定数:V(G)=判定的节点数+1(判定节点,分支语句处)
  • 方法三:公式法:V(G)=边数-点数+2【V(G)=m-n+2p】

实践证明:模块规模以V(G)<=10为宜,环形复杂度越高往往容易出问题。

 

 

分类: 软件工程

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注