画出其对应的控制流图如下:
逐一:如果在程序中遇到复合条件,例如条件语句中的多个布尔运算符(逻辑OR、AND)时,为每一个条件创建一个独立的节点,包含条件的节点称为判定节点,从每一个判定节点发出两条或多条边。例如:
1 if ( a or b)
2 x
3 else
4 y
5 …
对应的逻辑为:
3.2.2计算圈复杂度
圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。
有以下三种方法计算圈复杂度:
流图中区域的数量对应于环型的复杂性;
给定流图G的圈复杂度-V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中节点的数量;
给定流图G的圈复杂度-V(G),定义为V(G)=P+1,P是流图G中判定节点的数量。
对应3.2.1图一中代码的圈复杂度,计算如下:
流图中有四个区域;
V(G)=11条边-9节点+2=4;
V(G)=3个判定节点+1=4。