日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

McCabe度量法是由托馬斯·麥克凱提出的一種基于程序控制流的復雜性度量方法。McCabe復雜性度量又稱環路度量。它認為程序的復雜性很大程度上取決于程序圖的復雜性。單一的順序結構最為簡單,循環和選擇所構成的環路越多,程序就越復雜。這種方法以圖論為工具,先畫出程序圖,然后用該圖的環路數作為程序復雜性的度量值。程序圖是退化的程序流程圖。也就是說,把程序流程圖的每一個處理符號都退化成一個結點,原來連接不同處理符號的流線變成連接不同結點的有向弧,這樣得到的有向圖就叫做程序圖。

程序圖僅描述程序內部的控制流程,完全不表現對數據的具體操作分支和循環的具體條件。因此,它往往把一個簡單的IF語句與循環語句的復雜性看成是一樣的,把嵌套的IF語句與CASE的復雜性看成是一樣的。

根據圖論,在一個強連通的有向圖G中,環的個數V(G)由以下公式給出:

V(G)=m-n+2p其中,V(G)是有向圖G中環路數,m是圖G中弧數,n是圖G中結點數,p是圖G中強連通分量個數。在一個程序中,從程序圖的入口點總能到達圖中任何一個結點,因此,程序總是連通的,但不是強連通的。為了使圖成為強連通圖,從圖的出口點到入口點加一條用虛線表示的有向邊,使圖成為強連通圖。這樣就可以使用上式計算環路復雜性了。

例1:

(2016年上半年試題)對下圖所示流程圖采用白盒測試方法進行測試,若要滿足路徑覆蓋,則至少需要___個測試用例。采用McCabe度量法計算該程序對環路復雜性為___。

路徑覆蓋是指設計若干個測試用例,覆蓋程序中的所有路徑。
上圖中一共有6條路徑:12345678,1234568,1235678,123568,12678,1268。
根據McCabe度量法環路復雜性公式V(g)=m-n+2p,圖中m=10,n=8,p=1,V(g)=10-8+2=4。
那么答案應是:6個用例,環路復雜度為4。

【紅色虛線為強連通】

例2:

(2015年上半年試題)若采用白盒測試方法測試以下代碼,并滿足條件覆蓋,則至少需要___個測試用例。采用McCabe度量法算出該程序的環路復雜性為___。

int find_max(int i, int j, int k){int max;if(i > j) {if(i > k){max = i;} else {max = k;}} else {if(j > k) {max = j;} else {max = k;}}return max; }

一開始我隨手畫的流程圖:(貌似缺了很多東西。。。)

改良之后:

上圖中一共有4條路徑,測試需要4個用例。
根據McCabe度量法環路復雜性公式V(g)=m-n+2p,圖中弧數m=9,節點數n=7,p=1,V(g)=9-7+2=4。
那么答案應是:4個用例,環路復雜度為4。

參考文章1:軟考必考題型之McCabe度量法

參考文章2:McCabe度量方法計算程序復雜度

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。