【STMT】McCabe環路複雜度

McCabe環路複雜度

McCabe環路複雜度用於度量程序邏輯複雜性,計算程序的基本獨立路徑數目,即確保所有語句至少執行一次的最小測試數量。
McCabe環路複雜度需要先根據代碼畫出程序流程圖,然後畫出對應的程序控制流圖,再通過以下三種方法計算:

  • 給定流圖GG的邊數mm,結點數nn,那麼環路複雜度V(G)=mn+2V(G) = m - n + 2
  • 根據歐拉拓撲公式V+FE=X(P)V + F - E = X(P)VV是多面體PP的頂點數,FF是多面體PP的面數,EE是多面體PP的棱數,應用於平面時X(P)=2X(P) = 2,得EV+2=FE - V + 2 = F,因此環路複雜度即流圖GG的區域數
  • 給定流圖GG的單判定結點數dd,那麼環路複雜度V(G)=d+1V(G) = d + 1

獨立路徑

一條獨立路徑是指,和其它的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路,一個程序的獨立路徑條數等於環路複雜度。
需要注意的是,獨立路徑條數並非覆蓋所有路徑的最小路徑數,一條程序通路只需要滿足與其它任意獨立路徑相比都至少覆蓋一條新的路徑就是一條獨立路徑,哪怕這條通路上的所有路徑都已經被其它獨立路徑覆蓋了也沒關係。舉個例子,類似於88字的程序流圖有33條而不是22條獨立路徑。

題目

程序流程圖如下,計算環路複雜度並找出一個獨立路徑集合。
src

解答

首先給程序流程圖加入編號如下
PFG
然後畫出程序控制流圖如下
CFG
計算McCabe環路複雜度如下

  • m=10m = 10n=7n = 7V(G)=mn+2=5V(G) = m - n + 2 = 5
  • V(G)=F=5V(G) = F = 5
  • d=4d = 4V(G)=d+1=5V(G) = d + 1 = 5

一個獨立路徑集合如下

  • 路徑1:1 - 2 - 5,6 - 9
  • 路徑2:1 - 2 - 3,4 - 5,6 - 9
  • 路徑3:1 - 3,4 - 5,6 - 9
  • 路徑4:1 - 3,4 - 5,6 - 7 - 9
  • 路徑5:1 - 3,4 - 5,6 - 7 - 8 - 9
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章