内部产品属性


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

测量内部产品属性

产品的主要内部属性包括尺寸结构。可以静态测量大小,而无需执行它们。产品的大小告诉我们创建它所需的努力。同样,产品的结构对于产品的维护设计也起着重要的作用。

测量尺寸

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

  • 长度- 它是产品的物理尺寸。

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

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

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

    • 算法复杂度- 衡量解决问题所实现的算法的复杂度

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

    • 认知复杂性- 衡量理解软件所需的努力。

这三个属性的测量可以描述如下 -

长度

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

规格及设计

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

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

对于这些测量,将为不同类型的图表和符号定义Atomics对象。

数据流图的Atomics对象是进程、外部实体、数据存储和数据流。代数规范的Atomics实体是类别、函数、运算和公理。Z 模式的Atomics实体是规范中出现的各个行。

代码

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

总长度,

LOC = NCLOC + CLOC

IE,

LOC = 未注释的 LOC + 注释的 LOC

除了代码行之外,其他替代方案(例如莫里斯·霍尔斯特德建议的大小和复杂性)也可用于测量长度。

霍尔斯特德的软件科学试图捕捉程序的不同属性。他提出了三个内部程序属性,例如长度、词汇量和体积,反映了不同的大小观点。

他首先将程序P定义为标记的集合,按运算符或操作数分类。这些代币的基本指标是,

  • μ 1 = 唯一运算符的数量

  • μ 2 = 唯一操作数的数量

  • N 1 = 运算符出现的总次数

  • N 2 = 唯一运算符的数量

长度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所需的基本心理辨别力

测量长度的其他选择是 -

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

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

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

功能性

产品固有的功能量可以衡量产品的尺寸。有很多不同的方法来衡量软件产品的功能。我们将在下一章讨论这样的一种方法——阿尔布雷希特功能点方法。