霍爾斯特德複雜度量測

霍爾斯特德複雜度量測Halstead complexity measures)是由霍爾斯特德在1977年提出的一種軟體度量方法。是有關軟體開發經驗科學的論文中的一部分。

基本介紹

  • 中文名:霍爾斯特德複雜度量測
  • 外文名:Halstead complexity measures
  • 性質軟體度量方法
  • 領域:計算機
簡介,計算,循環複雜度,

簡介

霍爾斯特德觀察到軟體度量應該要反映在不同程式語言算法實現的方式,但又要獨立於使用的平台及語言。這些度量要可以由靜態代碼中計算而得。
霍爾斯特德的目標是識別軟體中可量測的性質,以及各性質之間的關係。有點類似識別物體中可量測的性質(如氣體的體積、質量及壓強),以及各性質之間的關係(如理想氣體方程式的體積、質量及壓強),因此霍爾斯特德複雜度量測不單單只是一種程式複雜度的度量。

計算

針對特定的算法,首先需計算以下的數值:
1.
為不同運運算元的個數。
2.
為不同運算元的個數。
3.
為所有運運算元合計出現的次數。
4.
為所有運算元合計出現的次數。
上述的運運算元包括傳統的運運算元及保留字,運算元包括變數及常數。
依上述數值,可以計算以下的量測量:
1.程式辭彙數(Program vocabulary):
2.程式長度(Program length):
3.計算程式長度(Calculated program length):
4.容量(Volume):
5.難度(Difficulty):
6.精力(Effort):
難度量測和撰寫程式或是了解程式(例如代碼審查時)的困難度有關。 精力可以用以下的關係式轉換為實際的程式撰寫時間。
程式撰寫時間:
秒。
霍爾斯特德交付錯誤(Halstead's delivered bugs)是估計在實現過程中會產生的錯誤。
交付錯誤數量(Number of delivered bugs):
,或者是

循環複雜度

循環複雜度Cyclomatic complexity)也稱為條件複雜度圈複雜度,也是一種軟體度量,是由老托馬斯·J·麥凱布在1976年提出,用來表示程式的複雜度,其符號為VG或是M。循環複雜度由程式的原始碼中量測線性獨立路徑的個數。此概念有些類似的量測文字複雜度的Flesch-Kincaid可讀性測試,不過方法不完全相同。

循環複雜度是由程式的控制流圖來計算:有向圖的節點對應程式中個別的代碼,而若一個程式運行後會立刻運行另一代碼,會有邊連結二代碼對應的節點。圈複雜度可套用在程式的子程式模組方法類別
麥凱布首先提出一種稱為“基礎路徑測試”(Basis Path Testing)的軟體測試方式,是測試程式中的每一線性獨立路徑,此情形的測試用例個數即為程式的循環複雜度。
“循環複雜度”的名稱有時會讓人誤解,因為此複雜度不只計算程式中的循環(循環)個數。循環複雜度是指程式的控制流圖中,若將結束點到啟始點再增加一個邊時,控制流圖中的圈(幾個邊形成封閉路徑)的個數。

相關詞條

熱門詞條

聯絡我們