测量结构

测量软件的结构属性对于估计开发工作量以及产品维护都很重要。需求、设计和代码的结构有助于理解在将一种产品转换为另一种产品、测试产品或根据早期内部产品测量预测外部软件属性时出现的困难。

结构测量的类型

软件的结构有三个部分。它们是 −

  • 控制流结构 − 它是程序中执行指令的顺序。

  • 数据流结构 − 它是数据与程序交互时的行为。

  • 数据结构 −它是以列表、队列、堆栈或其他明确定义的结构的形式组织数据元素,以及用于创建、修改或删除它们的算法。

测量控制流结构

控制流测量通常用有向图建模,其中每个节点或点对应于程序语句,每个弧或有向边表示从一个语句到另一个语句的控制流。这些图称为控制流图或有向图。

如果'm'是根据流图模型定义的结构度量,并且如果程序A在结构上比程序B更复杂,则度量m(A)应该大于m(B)

测量数据流结构

数据流或信息流可以是模块间(模块内的信息流)或模块内(各个模块与系统其余部分之间的信息流)。

根据数据在系统中移动的方式,可以将其分为以下几种−

  • 本地直接流 −如果一个模块调用第二个模块并将信息传递给它,或者被调用的模块将结果返回给调用者。

  • 本地间接流 − 如果被调用的模块返回的信息随后传递给第二个被调用的模块。

  • 全局流 − 如果信息通过全局数据结构从一个模块流向另一个模块。

根据 Henry 和 Kafura 的说法,信息流复杂度可以表示为,

信息流复杂度 (M) = 长度 (M) × 扇入 (M) × (扇出 (M))2

其中,

  • 扇入 (M) −终止于 M 的本地流的数量 + M 从中检索信息的数据结构的数量。

  • 扇出 (M) − 来自 M 的本地流的数量 + 由 M 更新的数据结构的数量。

测量数据结构

数据结构可以是本地全局

在本地,将测量每个数据项中的结构量。可以使用图论方法来分析和测量单个数据结构的属性。其中,简单的数据类型(例如整数、字符和布尔值)被视为素数,并且考虑使我们能够构建更复杂数据结构的各种操作。然后,可以根据素数的值和与各种运算相关的值,分层定义数据结构度量。

全局,将测量用户定义变量的总数。