问答题X 纠错
K.Magel从六个方面描述软件复杂性:
①理解程序的难度;
②改错及维护程序的难度;
③向他人解释程序的难度;
④按指定方法修改程序的难度;
⑤根据设计文档编写程序的工作量;
⑥执行程序时需要资源的程度。
软件复杂性度量模型应遵循的基本原则:
⑴软件复杂性与程序大小的关系不是线性的;
⑵控制结构复杂的程序较复杂;
⑶数据结构复杂的程序较复杂;
⑷转向语句使用不当的程序较复杂;
⑸循环结构比选择结构复杂,选择结构又比顺序结构复杂;
⑹语句、数据、子程序和模块在程序中的次序对软件复杂性都有影响;
⑺全程变量、非局部变量较多时程序较复杂;
⑻参数按地址传递比按值传递更复杂;
⑼函数副作用比显式参数传递更难以琢磨;
⑽具有不同作用的变量共用一个名字时较难理解;
⑾模块间或过程间联系密切的程序较复杂;
⑿嵌套深度越深程序越复杂。
最典型的两种程序复杂性度量的方法中,McCabe环路复杂性度量就是针对基本原则(2)制定的度量模型;Halstead软件科学则是针对程序中操作符和操作数的出现频度而制定的度量模型。
你可能喜欢
问答题
下面给出一个求实函数方程F(x)在自变量区间[a,b]中的全部实根的算法。首先阅读此程序,然后
(1)画出消去全部goto语句的结构化程序流程图。
(2)将它改成N-S图。
在算法中,a与b是区间[a,b]的两端点值;eps1与eps2是用户要求的求解精度。如果区间中点的函数值的绝对值小于eps1或新的小区间的长度小于eps2,就认为这个中点为根。
(1)结构化的程序流程图:
(2)N-S图:
问答题
下面是两个程序流程图,试分别用N-S图和PAD表示之,并计算它们的McCabe复杂性度量。
对应的N-S图如下。
对应PAD图如下。
McCabe复杂性度量都为3。
问答题
有一种循环结构,叫做N+1/2循环。其流程图如下所示。这种控制结构不属于基本控制结构:它既不是先判断型循环,又不是后判断型循环。试修改此流程图,将它改为用基本控制结构表示的等效的流程图。
问答题
设下图给出的程序流程图代表一个非结构化的程序,试问:
(1)为什么说它是一个非结构化的?
(2)设计一个等价的使用附加标志变量flag的结构化程序。
(3)设计一个使用break(用于代替goto)的程序。
(1)它是一个单入口、两出口的结构,所以是一个非结构化的程序。
(2)等价的结构化程序:
问答题
问答题
试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。
(1)的功能是对换A[I]与A[T]的内容。等效的程序段可以是:
(2)的功能是建立一个单位矩阵V。等效的程序段可以是: