5.6.2 Halstead方法
Halsted度量法通过计算程序中的运算符和操作数的数量对程序的复杂性加以度量。Halsted算法又称为文本复杂性度量法,它是基于程序中操作符号(包括保留字)和操作数(即常、变量)出现的总次数来计算程序的复杂程度。
设n1表示程序中不同运算符的个数,n2表示程序中不同操作数的个数,N1表示程序中实际运算符的总数,N2表示程序中实际操作数的总数。令H表示程序的预测长度,Halstead给出H的计算公式为H=n1log 2n1+n2log2 n2;令N表示实际的程序长度,其定义为N=N1+N2。Halstead的重要结论之一是程序的实际长度N与预测长度非常接近。这表明即使程序还未编写完也能预先估算出程序的实际长度N。Halstead还给出了另外一些计算公式,包括程序容量V=Nlog2(n1+n2),程序级别L=(2/n1)*(n2/N),程序中的错误数预测值B=Nlog2(n1+n2)/3000。(https://www.daowen.com)
Halstead度量实际上只考虑了程序的数据流没有考虑程序的控制流,因而不能从根本上反映程序的复杂性。