软件工程导论 第6章 详细设计1.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程导论 第6章 详细设计1

第1步:画流图 第6章 详细设计 6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量—McCabe方法 * 复习回顾及新课引入: 为何需要程序复杂程度的定量度量方法? 第6章:设计 模块的算法 如何度量模块 设计的优劣? 第5章:软件 结构图、模块 使得第7章编写的软件 易理解、易测试、 易修改和易维护 请问:过程设计的工具有哪些? * 6.5 程序复杂程度的定量度量—McCabe方法 根据程序控制流的复杂程度 定量度量 程序的复杂程度(称为程序的环形复杂度)。 McCabe * McCabe方法 基本步骤: (1)将程序流程图或PDL(伪码)等映射为流图。 (2)基于流图计算环形复杂度,以定量度量程序的复杂程度。 * 1、流图 流图: 仅描绘程序的控制流程。 基本符号: 圆:结点,代表一条或多条语句。 箭头线:边 区域:由边和圆围成的面积。 * 基本原则: —合并原则:以程序流程图为例,顺序处理框和菱形判定框合并映射成流图中的一个结点、顺序处理框序列合并映射成流图中的一个结点。 —分解原则:复合条件分解为若干个简单条件,每个简单条件映射成流图中一个结点。 —其他情况下对应一一映射成流图中的一个结点。 * 程序流程图 映射 F F T F T T 流图 顺序处理框序列 例1: 顺序处理框和菱形判定框 映射成一个结点 注意:假定判定条件为原子条件 (1)合并原则的应用 (2)添加新节点 一条边必须终止于一个结点,即使该结点并不代表任何语句 2,3 4,5,6 8 9,10 11,12 13 14 7 1 * PDL 映射 流图 例2: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 注意:合并原则的应用 * … IF a OR b then procedure x else procedure y ENDIF … 例3:复合条件(OR)的PDL映射成流图 把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。 OR 注意:书上为 便于理解, 结点没有 采用编号 * 2. 计算环形复杂度的方法 方法1:流图中的环形复杂度V(G)=区域数。 示例 * R2 R3 R1 R4 流图 方法1: V(G)=区域数 从流图可以知: 区域数=4 所以环形复杂度=4 * 2. 计算环形复杂度的方法 方法1:流图中的环形复杂度V(G)=区域数。 方法2:流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 示例 示例 * 流图 从流图可以知: 边数E=11,结点数N=9, V(G)=E-N+2=4 方法2: V(G)=E-N+2 * 2. 计算环形复杂度的方法 方法1:流图中的环形复杂度V(G)=区域数。 方法2:流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 方法3:流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 示例 示例 示例 * 流图 从流图可以知: 流图中判定结点的数目P=3, V(G)=P+1=4 方法3: V(G)=P+1 * 3. 环形复杂度的用途 可以用于比较两个算法的优劣。 定量度量测试的难度。注意:在基本路径测试时流图是测试的对象(必须要画),且V(G)是要测试的基本路径条数的上限。 作为模块规模的精确限度。环形复杂度高的程序往往是困难的、容易出问题的程序。实践表明,模块规模以V(G)≤10为宜。 1 2 3 4 5 6 7 8 9 10 11 12 13    i=1; total.input=total.valid=0; sum=0; Do while value[i]-999 and total.input100 increment total.input by 1; If value[i]=minimum and value[i]=maximun Then increment total.valid by 1; sum=sum+value[i]; Endif Increment i by 1; Enddo 课堂讨论及解答 14 15 16 17 画出下列伪码程序的流图,计算它的环形复杂度。 Procedure average If total.valid0 Then average=sum/total.valid; Else average=-999; Endif 注意:前面省略了对变量的定义! 注意:分

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档