这个词的复杂性代表的事件或事情其中有多个相互关联的环节和高度复杂的结构状态。在软件编程,软件的设计是很重要的,相互连接的元件的数量是巨大的,这变得太难理解一次.
软件设计的复杂性是难以评估没有使用复杂性度量和措施。让我们看看三个重要软件复杂性的措施.
1977年,莫里斯·霍华德先生介绍霍尔斯特德指标来衡量软件的复杂性。霍尔斯特德的衡量标准取决于计划的实际执行情况和措施是直接从源代码中的运算符和操作数计算在静态方式。 它允许评估测试时间,词汇量,大小,难度,错误和对C/ C + + / Java源代码.
根据Halstead,“计算机程序的实现一个算法被认为是一个集合的令牌可以分为运营商或操作数”。Halstead指标认为程序是运营商及其相关操作数的顺序.
他定义了各种指标检查模块的复杂性.
参数 | 意义 |
---|---|
n1 | 独特的营办商数目 |
n2 | N独特的操作数数 |
N1 | 运营商的总发生数 |
N2 | 操作数的总发生数 |
当我们选择源文件以查看其复杂性细节指标查看器,以下结果是度量报告:
度量 | 意义 | 数学表示 |
---|---|---|
n | 词汇表 | n1 + n2 |
N | 大小 | N1 + N2 |
V | 成交量 | 长* LOG2词汇 |
D | 难度 | (n1/2) * (N1/n2) |
E | 努力 | 难度*体积 |
B | 错误 | 成交量 / 3000 |
T | 测试时间 | 时间=努力/ S,S = 18秒. |
每个程序包含语句为了执行一些任务和其他决策语句. 这些决策构造改变程序的流程.
如果我们比较两个相同大小的计算机程序,所述一个具有更多的决策陈述是更复杂的.
McCabe, 1976年提出的圈复杂度指标量化一个给定的软件的复杂性. 这是图形驱动程序模型,该模型是基于决策结构如if - else,延伸,repeat-until,switch-case和goto语句.
过程流程控制图:
如果可以控制从块分支i到J座
画一条弧
从出口节点进入节点
画一条弧.
计算程序模块的圈复杂度,我们使用公式 -
V(G) = e – n + 2 在哪里 e是边总数 n是节点的总数目
上述模块的圈复杂度是
e = 10 n = 8 圈复杂度 = 10 - 8 + 2 = 4
根据 P. Jorgensen, 一个模块的圈复杂度不应超过10.
这是广泛用于测量软件的大小。功能点集中于系统提供的功能。特性和功能的系统被用来测量软件的复杂性.
功能点计算的五个参数,命名为外部输入,外部输出,逻辑内部文件,外部接口文件和外部咨询。考虑到软件的复杂性各参数进一步划分为简单,平均或复杂.
让我们来看看功能点的参数:
每一个独特的输入系统从外面被认为是外部输入。独特性的输入测量,因为没有两个输入应该有相同的格式。这些输入可以是数据或控制参数.
简单 - 如果输入计数低,影响更少的内部文件
复杂 - 如果输入计数很高,影响更多的内部文件
平均 - 之间的简单和复杂.
由系统提供的所有输出类型计数此类别中。输出被认为是独特的,如果其输出格式和/或处理是独特.
简单 - 如果输出计数低
复杂 - 如果输出值高
平均 - 之间简单和复杂.
每一个软件系统维护维持其功能的信息和正常内部文件。这些文件保存了系统的逻辑数据。这个逻辑数据可能包含的功能数据和控制数据.
简单 - 如果记录类型的数量是低
复杂 - 如果记录类型的数量都很高
平均 - 之间简单和复杂.
软件系统可能需要共享文件与一些外部软件或它可能需要将文件进行处理或作为参数传递给函数。所有这些文件都算作外部接口文件.
简单 - 如果共享文件的记录类型数量很低
复杂 - 如果共享文件的记录类型数量很高
平均 - 在简单和复杂之间.
调查是输入和输出的组合,在用户发送询问一些数据作为输入和输出的系统响应用户的查询处理。一个查询的复杂性超过外部输入、外部输出。查询是独特的,如果其输入和输出方面独特的格式和数据.
简单 - 如果查询的处理和低收益率少量的输出数据
复杂 - 如果查询的处理和低收益率少量的输出数据
平均 - 之间简单和复杂.
每个这些参数的系统给出weightage根据他们的阶级和复杂性。下面的表格提到了weightage给每个参数:
参数 | 简单 | 平均 | 复杂 |
---|---|---|---|
输入 | 3 | 4 | 6 |
输出 | 4 | 5 | 7 |
查询 | 3 | 4 | 6 |
文件 | 7 | 10 | 15 |
接口 | 5 | 7 | 10 |
上表收益率原始功能点。这些功能点是根据环境调整的复杂性。系统使用14个不同的特征:
这些特征因素评级从0到5,如下提到的:
所有收视率,然后概括为N。N的取值范围为0〜70(14种特性X 5种评级的)。它被用来计算复杂性的调整因子(CAF)使用下面的公式:
CAF = 0.65 + 0.01N
然后,
交付功能点 (FP)= CAF x Raw FP
这种FP然后可以在各种度量被使用,如:
成本 = $ / FP
质量 = Errors / FP
生产力 = FP / person-month