霍尔斯特德复杂度量测

霍尔斯特德复杂度量测Halstead complexity measures)是由霍尔斯特德在1977年提出的一种软体度量方法[1],是有关软体开发经验科学的论文中的一部份。 霍尔斯特德观察到软体度量应该要反映在不同程式语言演算法实现的方式,但又要独立于使用的平台及语言。这些度量要可以由静态代码中计算而得。

霍尔斯特德的目标是识别软体中可量测的性质,以及各性质之间的关系。有点类似识别物体中可量测的性质(如气体的体积、质量及压强),以及各性质之间的关系(如理想气体方程式的体积、质量及压强),因此霍尔斯特德复杂度量测不单单只是一种程式复杂度英语Programming complexity的度量。

计算

针对特定的演算法,首先需计算以下的数值:

  •   为不同运算子的个数。
  •   为不同运算元的个数。
  •   为所有运算子合计出现的次数。
  •   为所有运算元合计出现的次数。

上述的运算子包括传统的运算子及保留字,运算元包括变数及常数。

依上述数值,可以计算以下的量测量:

  • 程式词汇数(Program vocabulary): 
  • 程式长度(Program length): 
  • 计算程式长度(Calculated program length): 
  • 容量(Volume): 
  • 难度(Difficulty): 
  • 精力(Effort): 

难度量测和撰写程式或是了解程式(例如代码审查时)的困难度有关。 精力可以用以下的关系式转换为实际的程式撰写时间。

  • 程式撰写时间: 秒。

霍尔斯特德交付错误(Halstead's delivered bugs)是估计在实现过程中会产生的错误。

  • 交付错误数量(Number of delivered bugs): ,或者是 

参考资料

  1. ^ Halstead, Maurice H. Elements of Software Science. Amsterdam: Elsevier North-Holland, Inc. 1977. ISBN 0-444-00205-7. 

相关条目

外部链接