如何计算圈复杂度?
圈复杂度(Cyclomaticcomplexity)是⼀种代码复杂度的衡量标准,在1976年由,Sr.提出。在软件测
试规范中,通常要求每个软件单元的圈复杂度不⼤于10。
那么,如何计算圈复杂度呢?
要计算圈复杂度,⾸先要会使⽤流图。
所谓流图,就是⼀种表⽰程序控制流的图形(也称为程序图)。
流图中有3个概念:节点、边、区域。流图中的圆称为节点,⼀个节点代表⼀条或多条语句;流图中的箭头线称为边,
代表控制流;由边和节点围成的部分称为区域。
流图⽤于表⽰程序的控制流,所以程序流程图可以很⽅便地转换成流图。
实际上,⽤任何⽅法表⽰的过程设计结果都可以转换成流图。
⼀个程序流程图转换成流图的例⼦如下:
其中,2、3和4、5节点都是对应程序流程图中的两个语句,但它们都是在同⼀条路径上,所以在流图中只能是⼀个节
点。
有了流图,就可以开始计算圈复杂度。计算圈复杂度有3种⽅法,分别和这3个概念相关。
⽅法1:圈复杂度V(G)=E−N+2,其中E是流图中边的条数,N是流图中节点数。
⽅法2:圈复杂度V(G)=P+1,其中P是流图中判定节点的数⽬。在流图中当⼀个节点分出两条或多条边指向其他节点
时,这个节点就是⼀个判定节点。
⽅法3:圈复杂度V(G)=R,其中R是区域数。计算区域数时不仅包括由边和节点围起来的区域,也包括图外部未被围起
来的那个区域(或者说⼀个流图的区域数=由边和节点围成的区域数+1)。
对下⾯这个流图进⾏圈复杂度如下:
在这个图中,边数E=17,节点数N=13,使⽤⽅法1:
圈复杂度=E-N+2=17-13+2=6
这个流图中的判断节点是2、3、5、6、10,所以判断节点数P=5,使⽤⽅法2:
圈复杂度=P+1=5+1=6
这个流图中的被围的区域有2、3、10区域,10、11、12、13区域,5、6、8区域,6、7、8区域以及2、3、4、5、6、
8、9区域,共5个,所以区域数R=5+1=6,使⽤⽅法3:
圈复杂度=6
学会计算复杂度,⾸先学会⽤流图
会数区域节点边,这个计算不算难
本文发布于:2022-12-08 04:09:10,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/63747.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |