软件工程McCabe环路复杂度计算,自环情况详解。
McCabe环路复杂度的三种方法
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
推荐使用方法三,是万能的。不用考虑自环是否涉及到程序。
这里就通过网上流传的最多的例子,也是具有代表性的例子来说明
方法一:区域数就是平面分成了几部分,如图
这里就出现了E的自环算上了一个区域,而G 的自环不算一个区域
而同样在方法二中计算边时,下图中G的自环边不计算在边数中
上半年:E-N+2=8-7+2=3
下半年:E-N+2=9-7+2=4
方法三很完美,只需要看判定结点数目,判定结点就是出去有分支的
结点(出度>2)。
上半年:C分支成了D,E,是判定结点;E分支了E,F,是判定结点。
下半年:C分支成了D,E,是判定结点;D分支了G,F,是判定结点;E分支了E,F,是判定结点。
G只指向G,不算判定结点,这也和前面G的自环不计算为区域数和边数吻合
*