Halstead 的软件度量17 Mar 2025 | 5 分钟阅读 根据 Halstead 的说法,“计算机程序是算法的一种实现,它被认为是标记的集合,这些标记可以归类为运算符或操作数。” 标记计数在这些度量中,计算机程序被认为是标记的集合,这些标记可以归类为运算符或操作数。所有软件科学度量都可以用这些基本符号来定义。这些符号被称为标记。 基本度量是 n1 = 唯一运算符的数量。 就使用的总标记而言,程序的大小可以表示为 N = N1 + N2。 Halstead 度量包括程序体积 (V) 体积的度量单位是大小的标准单位“比特”。如果使用统一的二进制编码作为词汇表,它就是程序的大小。 V=N*log2n 程序级别 (L) L 的值范围在零和一之间,其中 L=1 代表以最高可能级别编写的程序(即,大小最小)。 L=V*/V 程序难度 程序的难度级别或易出错性 (D) 与程序中唯一运算符的数量成正比。 D= (n1/2) * (N2/n2) 编程工作量 (E) E 的度量单位是基本心智辨别。 E=V/L=D*V 估计程序长度 根据 Halstead 的说法,软件科学的第一个假设是,一个结构良好的程序的长度仅取决于唯一运算符和操作数的数量。 N=N1+N2 估计程序长度用 N^ 表示 N^ = n1log2n1 + n2log2n2 已发布以下替代表达式来估计程序长度
潜在最小体积 潜在最小体积 V* 被定义为编码问题时最短程序的体积。 V* = (2 + n2*) * log2 (2 + n2*) 此处,n2* 是唯一输入和输出参数的数量 词汇量大小 (n) 程序词汇量的大小,包括用于构建程序的唯一标记的数量,定义为 n=n1+n2 其中 n=程序的词汇量 语言级别 - 显示算法实现程序的语言级别。如果用低级程序语言编写,同一算法需要额外的工作量。例如,用 Pascal 编程比用汇编语言容易。 L' = V / D / Dlambda = L * V* = L2 * V 语言级别
C 语言计数规则
示例:考虑如图所示的排序程序:列出运算符和操作数,并计算软件科学度量值,如 n、N、V、E、λ 等。 解决方案:运算符和操作数列表如下表所示
此处 N1=53 且 N2=38。程序长度 N=N1+N2=53+38=91 程序词汇量 n=n1+n2=14+10=24 体积 V= N * log2N=91 x log2 24=417 比特。 程序的估计程序长度 N = 14 log214+10 log2)10 概念上,唯一的输入和输出参数由 n2* 表示。 n2*=3 {x: 用于存储要排序整数的数组。该数组用作输入和输出} {N: 要排序的数组的大小} 潜在体积 V*=5log25=11.6 由于 L=V*/V ![]() 我们可以使用另一个公式 V^=V x L^= 417 x 0.038=15.67E^=V/L^=D^ x V ![]() 因此,构造该程序需要 10974 次基本心智辨别。 ![]() 这可能是生产该程序的一个合理时间,该程序非常简单。 下一个主题功能点 (FP) 分析 |
我们请求您订阅我们的新闻通讯以获取最新更新。