内部产品属性
内部产品属性
内部产品属性以仅依赖于产品本身的方式描述软件产品。测量内部产品属性的主要原因是,它有助于在开发过程中监控和控制产品。
测量内部产品属性
主要的内部产品属性包括尺寸和结构。尺寸可以静态测量而无需执行它们。产品的大小告诉我们创建它所需的努力。同样,产品的结构在产品的维护设计中也起着重要的作用。
测量尺寸
软件大小可以用三个属性来描述 –
-
长度– 它是产品的物理尺寸。
-
功能– 它描述了产品提供给用户的功能。
-
复杂性– 复杂性有不同的类型,例如。
-
问题复杂性– 衡量潜在问题的复杂性。
-
算法复杂性– 衡量为解决问题而实施的算法的复杂性
-
结构复杂性– 衡量用于实现算法的软件的结构。
-
认知复杂性– 衡量理解软件所需的努力。
-
这三个属性的测量可以描述如下 –
长度
共有三种开发产品,其大小测量可用于预测预测所需的工作量。它们是规范、设计和代码。
规格和设计
这些文档通常结合了文本、图形和特殊的数学图表和符号。规格测量可用于预测设计的长度,而设计的长度又是代码长度的预测器。
文档中的图表具有统一的语法,例如带标签的有向图、数据流图或 Z 模式。由于规范和设计文档由文本和图表组成,因此其长度可以用代表文本长度和图表长度的一对数字来衡量。
对于这些测量,将针对不同类型的图表和符号定义原子对象。
数据流图的原子对象是流程、外部实体、数据存储和数据流。代数规范的原子实体是排序、函数、运算和公理。Z 模式的原子实体是规范中出现的各种行。
代码
代码可以通过不同的方式生成,例如过程语言、面向对象和可视化编程。最常用的源代码程序长度的传统度量是代码行数 (LOC)。
总长度,
LOC = NCLOC + CLOC
IE,
LOC = 非注释 LOC + 注释 LOC
除了代码行之外,其他替代方法(例如 Maurice Halsted 建议的大小和复杂性)也可用于测量长度。
Halstead 的软件科学试图捕捉程序的不同属性。他提出了三个内部程序属性,例如长度、词汇量和体积,它们反映了不同的大小视图。
他首先将程序P定义为按运算符或操作数分类的标记集合。这些代币的基本指标是,
-
μ1 = 唯一运算符的数量
-
μ2 = 唯一操作数的数量
-
N1 = 运算符的总出现次数
-
N2 = 唯一运算符的数量
长度P可以定义为
$$N = N_{1}+ N_{2}$$
P的词汇是
$$\mu =\mu_{1}+\mu_{2}$$
程序量 = 编写长度为N的程序所需的心理比较次数,是
$$V = N\times {log_{2}} \mu$$
卷V的程序P的程序级别是,
$$L = \frac{V^\ast}{V}$$
其中,$V^\ast$ 是潜在体积,即P的最小尺寸实现的体积
水平的倒数是难度 –
$$D = 1\diagup L$$
根据 Halstead 理论,我们可以计算一个估计值L为
$${L}’ = 1\diagup D = \frac{2}{\mu_{1}} \times \frac{\mu_{2}}{N_{2}}$$
同样,估计的程序长度为,$\mu_{1}\times log_{2}\mu_{1}+\mu_{2}\times log_{2}\mu_{2}$
生成 P 所需的努力由下式给出,
$$E = V\diagup L = \frac{\mu_{1}N_{2}Nlog_{2}\mu}{2\mu_{2}}$$
其中测量单位E是理解P所需的基本心理辨别力
测量长度的其他替代方法是 –
-
就程序文本所需的计算机存储字节数而言
-
就程序文本中的字符数而言
面向对象的开发提出了测量长度的新方法。Pfleeger 等人。发现与使用代码行的对象和方法相比,对象和方法的数量导致更准确的生产力估计。
功能
产品中固有的功能量给出了产品尺寸的量度。有许多不同的方法来衡量软件产品的功能。我们将在下一章讨论这样一种方法——Albrecht 的函数点方法。