测量软件结构
测量软件的结构属性对于估算开发工作量以及维护产品至关重要。需求、设计和代码的结构有助于理解将一个产品转换为另一个产品、测试产品或根据早期内部产品度量预测外部软件属性时遇到的困难。
结构度量的类型
软件的结构包含三个部分。它们是:
控制流结构 - 指程序中指令执行的顺序。
数据流结构 - 指数据与其交互的程序之间的行为。
数据结构 - 指数据元素以列表、队列、栈或其他定义良好的结构形式组织,以及创建、修改或删除它们的算法。
测量控制流结构
控制流度量通常使用有向图建模,其中每个节点或点对应于程序语句,每条弧或有向边表示从一个语句到另一个语句的控制流。这些图称为控制流图或有向图。
如果'm'是根据流图模型定义的结构度量,并且如果程序A的结构比程序B更复杂,则度量m(A)应该大于m(B)。
测量数据流结构
数据流或信息流可以是模块间的(模块内信息流)或模块内的(单个模块与系统其余部分之间信息流)。
根据数据在系统中移动的方式,可以将其分类如下:
局部直接流 - 如果一个模块调用第二个模块并将信息传递给它,或者被调用模块将结果返回给调用者。
局部间接流 - 如果被调用模块返回的信息随后传递给第二个被调用模块。
全局流 - 如果信息通过全局数据结构从一个模块流向另一个模块。
根据 Henry 和 Kafura 的说法,信息流复杂度可以表示为:
信息流复杂度 (M) = 长度 (M) × 扇入 (M) × (扇出 (M))2
其中:
扇入 (M) - 终止于 M 的局部流数 + M 检索信息的数 据结构数。
扇出 (M) - 发源于 M 的局部流数 + M 更新的数据结构数。
测量数据结构
数据结构可以是局部的也可以是全局的。
局部地,将测量每个数据项中的结构量。可以使用图论方法来分析和测量单个数据结构的属性。在该方法中,将简单的基本数据类型(如整数、字符和布尔值)视为素数,并将使我们能够构建更复杂数据结构的各种操作视为运算。然后可以根据素数的值和与各种操作相关联的值来分层定义数据结构度量。
全局地,将测量用户定义变量的总数。