Halstead的复杂性度量
Halstead的复杂性度量是莫里斯·霍华德·哈尔斯特德(Maurice Howard Halstead)于1977年推出的软件指标,这是他建立软件开发经验科学论文的一部分。霍尔斯特德(Halstead)观察到,该软件的指标应反映不同语言中算法的实现或表达,但要独立于在特定平台上执行。因此,这些指标是从代码静态计算的。
Halstead的目标是确定软件的可测量属性以及它们之间的关系。这类似于鉴定物质的可测量特性(例如气体的体积,质量和压力)及其之间的关系(类似于气体方程)。因此,他的指标实际上不仅是复杂度指标。
计算
对于给定的问题,让:
-
=不同操作员的数量
-
=不同操作数的数量
-
=运营商的总数
-
=操作数的总数
从这些数字可以计算出几种措施:
- 程序词汇:
- 程序长度:
- 计算的估计程序长度:
- 体积:
- 困难:
- 努力:
困难度量与程序难以编写或理解的困难有关,例如进行代码审查时。
努力度量使用以下关系转化为实际的编码时间,
- 编程所需的时间:
秒
Halstead的已交付错误(B)是对实施中错误数量的估计。
- 已交付的错误数:
或最近,
被接受。
例子
考虑以下C程序:
main()
{
int a, b, c, avg;
scanf("%d %d %d", &a, &b, &c);
avg = (a+b+c)/3;
printf("avg = %d", avg);
}
不同的操作员( )为:
main
, ()
, {}
, int
, scanf
, &
, =
, +
, /
, printf
,
;
独特的操作数( )为:
a
, b
, c
, avg
, "%d %d %d"
, 3
, "avg = %d"
-
,
,
-
,
,
- 计算的估计程序长度:
- 体积:
- 困难:
- 努力:
- 编程所需的时间:
秒
- 已交付的错误数: