内部产品属性

内部产品属性以仅依赖于产品本身的方式描述软件产品。测量内部产品属性的主要原因是,它将有助于在开发过程中监控和控制产品。

测量内部产品属性

主要的内部产品属性包括大小结构。大小可以静态测量,而不必执行它们。产品的大小告诉我们创建它所需的工作量。同样,产品的结构在设计产品的维护方面起着重要作用。

测量大小

软件大小可以用三个属性 − 来描述

  • 长度 − 它是产品的物理大小。

  • 功能 −它描述了产品向用户提供的功能。

  • 复杂性 − 复杂性有不同的类型,例如。

    • 问题复杂性 − 衡量潜在问题的复杂性。

    • 算法复杂性 − 衡量为解决问题而实施的算法的复杂性

    • 结构复杂性 − 衡量用于实现算法的软件的结构。

    • 认知复杂性 −衡量理解软件所需的工作量。

这三个属性的测量可以用以下公式描述:−

长度

有三种开发产品,其大小测量对于预测所需的工作量很有用。它们是规范、设计和代码。

规范和设计

这些文档通常结合了文本、图形和特殊的数学图表和符号。规范测量可用于预测设计的长度,而设计的长度又是代码长度的预测因素。

文档中的图表具有统一的语法,例如带标签的有向图、数据流图或 Z 模式。由于规范和设计文档由文本和图表组成,因此其长度可以用一对数字来衡量,这两个数字分别代表文本长度和图表长度。

对于这些测量,需要为不同类型的图表和符号定义原子对象。

数据流图的原子对象是流程、外部实体、数据存储和数据流。代数规范的原子实体是排序、函数、操作和公理。Z 模式的原子实体是规范中出现的各种行。

代码

代码可以通过不同的方式生成,例如过程语言、面向对象和可视化编程。源代码程序长度最常用的传统度量是代码行 (LOC)。

总长度,

LOC = NCLOC + CLOC

即,

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 imes {log_{2}} \mu$$

程序P的体积为V,其程序级别为,

$$L = \frac{V^\ast}{V}$$

其中,$V^\ast$是潜在体积,即P

的最小尺寸实现的体积

级别的倒数是难度减去;

$$D = 1\diagup L$$

根据Halstead理论,我们可以计算出L的估计值,如下所示

$${L}' = 1\diagup D = \frac{2}{\mu_{1}} imes \frac{\mu_{2}}{N_{2}}$$

类似地,估计的程序长度为,$\mu_{1} imes log_{2}\mu_{1}+\mu_{2} imes log_{2}\mu_{2}$

生成 P 所需的努力由以下公式给出:

$$E = V\diagup L = \frac{\mu_{1}N_{2}Nlog_{2}\mu}{2\mu_{2}}$$

其中测量单位 E 是理解 P

所需的基本心理辨别能力

测量长度的其他替代方法是 −

  • 就程序所需的计算机存储字节数而言文本

  • 就程序文本中的字符数而言

面向对象开发提出了测量长度的新方法。Pfleeger 等人发现,对象和方法的计数比使用代码行数的计数可以更准确地估计生产率。

功能

产品固有的功能数量决定了产品大小。有很多不同的方法来衡量软件产品的功能。我们将在下一章讨论其中一种方法 —— Albrecht 的功能点方法。