您好,欢迎访问三七文档
引入:详细设计阶段设计出的模块质量如何呢?依据软件设计的基本原理和概念衡量它们的质量,但这种衡量只能是定性的;人们希望能进一步定量度量软件的性质,定量度量程序的复杂程度;度量方法:McCabe1、基本概念2、计算环形复杂的步骤与方法3、环形复杂度的主要用途4、复习思考题McCabe方法程序的环形复杂度:McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。流图:退化的程度流程图,仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。1、基本概念圆表示结点,代表一条或者多条语句:程序流程图中一个顺序的处理框序列和一个菱形判定框可以映射成流图中的一个结点。箭头线称为边,代表控制流:一条边必须终止于一个结点,即使这个结点并不代表任何语句。区域,边和结点围成的面积:计算区域数时应该包括图外部未被围起来的区域。1234875611109第一步:把程序流程图或PDL映射成流图例题1:2、计算环形复杂的步骤与方法例题2:需要注意的问题:当过程设计中包含复合条件时,生成流图的方法稍微复杂一些。复合条件:在条件中包含了一个或多个布尔运算符(逻辑OR,AND等)。在这种情况下把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。例题3:第二步:计算环形复杂度利用流图,用下述3种方法中的任何一种来计算环形复杂度:V(G)=DD:区域数。V(G)=E–N+2E:流图中边的条数。N:流图中结点数。V(G)=P+1P:判定结点(有2条输出弧)的数目。有n(n2)条输出弧的判定结点对应程序中的n-1个判断。练习1:计算下列伪代码的环形复杂度。STARTINPUT(A,B,C,D)IF(A0)AND(B0)THENX=A+BELSEX=A-BENDIFIF(CA)OR(DB)THENY=C-DELSEY=C+DENDIFPRINT(X,Y)STOP练习2:计算该流图的环形复杂度。abcdhgfe3.环形复杂度的用途当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量。环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)≤10为宜。1:LOOP:DOWHILEZ02:A=B+1Z=Z-1IFA103:THENX=A4:ELSEY=Z5:ENDIFIFY56:THENPRINTX,Y7:ELSEIFY=5THENGOTOLOOP8:ELSEC=3ENDIF9:ENDIFG=H+RENDDO10:IFF011:THENPRINTG12:ELSEPRINTR13:ENDIFSTOP思考题:计算环形复杂度?
本文标题:mccabe方法
链接地址:https://www.777doc.com/doc-4926349 .html