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(){}intscanf&=+/printf , ;

独特的操作数( )为: abcavg"%d %d %d"3"avg = %d"

  • , ,
  • , ,
  • 计算的估计程序长度:
  • 体积:
  • 困难:
  • 努力:
  • 编程所需的时间:
  • 已交付的错误数:

也可以看看