[VS2010 Ultimate] 程式碼量度

  • 4869
  • 0
  • 2011-12-12

[VS2010 Ultimate軟體工程實戰手冊]程式碼量度

品質一向是使用者評判東西好不好的一項重要指標,軟體品質也不例外,當然大部份使用者不會去在乎程式碼裡寫了些什麼

,所謂的品質也一向涉及很多層面,像是使用者操作介面、系統是否穩定、執行效能等等因素,這裡面有主觀面的也有客觀

面向的部份。那麼該如何評估品質呢?

 

是的,量度,量度是一種數量性的指標,可以表示某個目標物的特徵,有了可以具體量化的數據,一般來說也就可以有了改善

的依據或是做為未來預測之用的基礎,在軟體工程裡有個所謂的『軟體量度(Software Metrics)』,用來衝量軟體本身的特徵,

像是程式碼行數、複雜度等等

 

在ISO 9126裡以6個面項來作為軟體品質評估的基礎,分別為Functionality、Reliability、Usability、Efficiency、Maintainability、Portability

 

File:ISO9126QualityFactors.png

(取自:http://www.chrisbunney.com/wiki/index.php/ISO_9126)

 

而在INSTAC (Information Technology Research and Standardization Center)則以外部量度及內部量度二方面,來做為評估軟體品質的量度

,外部量度(External Metrics)是指對系統的整體使用或測試所得到的量度,而內部量度(Internal Metrics)則是針對程式碼或文件所分析得到的量度

,過去在實務上很難有個什麼樣的數據來個客觀的評估,通常必須依賴開發人員自已的經驗或是透過review的方式來討論改善

,但這可能引發一種主觀的現象

 

在VS2010 Ultimate裡提供了我們一個可以評估程式碼量度的工具『程式碼度量Code Metrics』

,透過Code Analysis(FxCop)引擎掃描.exe或dll檔,可依據已定義的度量項目進行計算,分析可得到幾個數據

(可維護性指數、循環複雜度、繼承深度、類別結合程度、程式碼行數)

image

image

 

 

 

 

可維護性指數:採用SEI發展出來的公式來評估,數值介於0~9屬於低維護性,10~19屬於中維護性,20~100則屬於高維護性

循環複雜度:用來評估程式邏輯複雜的程度,像是有使用到if , while , for 等,點數愈高表示循環複雜度愈高

繼承深度:因所有類別至少是繼承Object Class,故至少值會是1以上,相對的數值愈高,表示繼承關係愈多層,則在找尋定義或是重新調整方法較困難

類別結合程度:數值愈高表示類別間相依性愈高,結合程度高表示設計不易重複使用

程式碼行數:扣除註解、縮排、宣告等等的行數,所得到的程式碼行數,當然數值愈高,相對後續要維護上較不易,應適當做切割

 

當然這些數據所呈現是一個客觀面的評量,對於系統可用性上來說不見得具有直接的關係,但對於維護上或品質的維持上可以提供一些幫助跟評量

開發人員也可以適時的評量自已所撰寫的程式,做為持續改善的依據

 

 

Ref:

程式碼度量資訊概觀

Visual Studio 2010 Ultimate軟體工程實戰手冊

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18