1977年,莫里斯·霍华德·霍尔斯特德(Maurice Howard Halstead)推出了他的软件系统复杂性度量标准,其中包括对程序词汇量,程序长度,数量,难度,工作量以及模块中错误数量的估计。根据Wikipedia所说,困难与阅读或编写程序时理解程序的难度有关,可以将精力转化为编写应用程序所需的时间,其中Time =(Effort / 18)seconds。
除非数据和计算与软件开发的某些方面有关,否则测量是没有用的。但是,我还没有发现任何能够说明某个值或更高难度的缺陷会导致统计上的缺陷增加或难度与读取代码的时间之间的关系的工作(N的难度平均产生M个小时的花费)理解代码库)或在确定质量有用的事实之后进行任何能够计算时间的分析(尤其是因为应该将写入时间记录为度量)。我对Halstead的错误估计(维基百科上没有提及)特别感兴趣-应用程序中的错误数量可以通过Volume / 3000或Effort ^(2/3)/ 3000进行估计。
我在寻找两件事:
- 是否有人在实际应用中使用Halstead的软件复杂性度量来评估软件质量?如果是这样,您如何应用它们,结果证明它们是有用,有效和/或可靠的度量?
- 是否有任何调查,分析或案例研究形式的学术研究,讨论了Halstead复杂性度量应用于软件质量时的有效性(或无效性)?
- 是否有任何调查,分析或案例研究形式的学术研究证明使用代码源代码行(SLOC)来计算类似于量,难度,工作量,时间和错误的Halstead度量标准?我怀疑“体积”可能仅对应于SLOC计数,“难度”可能对应于圈复杂度(可能还有其他度量)。我也很清楚,在SLOC中衡量工作量,生产率或时间可能会产生误导。