5.6.1 McCabe方法

更新于 2026年10月10日 版权声明
5.6.1 McCabe方法

McCabe方法是一种软件质量度量方法,它是基于对程序拓扑结构复杂度的分析。Mc-Cabe于1976年指出:一个程序的环形复杂程度取决于它的程序图(流图)包含的判定结构的数量。定义中所谓的环形复杂度是指根据程序控制流的复杂程度度量程序的复杂程度。程序图是指退化的程序流程图,仅仅描述程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。

(1)程序图

程序图具有以下三个特点。

①它是一个简化了的流程图。

②流程图中的各种处理框(如加工框、判断框等)都被简化成用圆圈表示的结点。

③可由流程图导出或其他工具(PAD图、代码等)变换获得。

程序图的基本元素如下。

①圆圈为程序图的结点,表示一个或多个无分支的语句。

②箭头为边,表示控制流的方向。

③边和结点圈定的封闭范围称为区域。

④从图论的观点来看,它是一个可以用G=<N,E>来表示的有向图。其中,N表示结点,E表示有向边,指明程序的流程。

⑤包含条件的结点称为判定结点。

图5.16表示出了四种基本的程序图。

图示

图5.16 流程图对应的4种基本的程序图

例5.9 用McCabe方法求出图5.17中的结点数、边数、判定结点数和区域数。

图示

图5.17 程序流程图

图示

图5.18 由图5.17转换的程序图

解:步骤1:程序流程图和程序图中符号对应关系,如图5.19所示。(https://www.daowen.com)

图示

图5.19 程序流程图和程序图中序号对应关系

步骤2:将图5.17所示的程序流程图转化为图5.18所示的程序图。

步骤3:根据图5.18得出结点数N=8;边数E=10;判定结点数p=3;区域数为4。

(2)环形复杂程度

对于环形复杂度V(G)的图论解释是强连通图G中线性无关的有向环的个数。环形复杂度的用途如下。

①环形复杂度是对测试难度的一种定量度量。

②对软件最终的可靠性给出一种预测。

③软件规模以V(G)<10为宜。

这里给出以下三种计算方法。

①V(G)=图中平面区域的个数。

②V(G)=P(判定结点的个数)+1。

③V(G)=E(边数)-N(结点数)+2。

例5.10 用McCabe方法计算图5.20的环形复杂度。

解:方法1:V(G)=图中平面区域的个数(包括图外区域)。如图5.21所示,V(G)=4。

图示

图5.20 程序流程图

图示

图5.21 程序图

方法2:V(G)=P(判定结点的个数)+1。如图5.21所示,V(G)=3+1=4。

方法3:V(G)=E(边数)-N(结点数)+2。如图5.21所示,V(G)=11-9+2=4。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)