霍爾斯特德複雜度量測

来自testwiki
imported>InternetArchiveBot2022年12月8日 (四) 17:16的版本 (Add 1 book for verifiability (20221207)) #IABot (v2.0.9.2) (GreenC bot
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

霍爾斯特德複雜度量測Template:Lang)是由霍爾斯特德在1977年提出的一種軟體度量方法[1],是有關軟體開發經驗科學的論文中的一部份。 霍爾斯特德觀察到軟體度量應該要反映在不同程式語言演算法實現的方式,但又要獨立於使用的平台及語言。這些度量要可以由靜態代碼中計算而得。

霍爾斯特德的目標是識別軟體中可量測的性質,以及各性質之間的關係。有點類似識別物體中可量測的性質(如氣體的體積、質量及壓強),以及各性質之間的關係(如理想氣體方程式的體積、質量及壓強),因此霍爾斯特德複雜度量測不單單只是一種Template:Link-en的度量。

計算

針對特定的演算法,首先需計算以下的數值:

  • η1 為不同運算子的個數。
  • η2 為不同運算元的個數。
  • N1 為所有運算子合計出現的次數。
  • N2 為所有運算元合計出現的次數。

上述的運算子包括傳統的運算子及保留字,運算元包括變數及常數。

依上述數值,可以計算以下的量測量:

  • 程式詞彙數(Program vocabulary):η=η1+η2
  • 程式長度(Program length):N=N1+N2
  • 計算程式長度(Calculated program length):N^=η1log2η1+η2log2η2
  • 容量(Volume):V=N×log2η
  • 難度(Difficulty):D=η12×N2η2
  • 精力(Effort):E=D×V

難度量測和撰寫程式或是瞭解程式(例如代碼審查時)的困難度有關。 精力可以用以下的關係式轉換為實際的程式撰寫時間。

  • 程式撰寫時間:T=E18秒。

霍爾斯特德交付錯誤(Halstead's delivered bugs)是估計在實現過程中會產生的錯誤。

  • 交付錯誤數量(Number of delivered bugs):B=E233000,或者是B=V3000

參考資料

相關條目

外部連結