软件工程第6章详细设计.ppt_第1页
软件工程第6章详细设计.ppt_第2页
软件工程第6章详细设计.ppt_第3页
软件工程第6章详细设计.ppt_第4页
软件工程第6章详细设计.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章,6,软件设计,6.3 详细设计,6.3.1 详细设计概述,详细设计也叫“过程设计” 详细设计的目标:确定应该怎样具体地实现所需要的系统,确定概要设计阶段划分的每个模块的具体执行过程,从而在编码阶段可以直接把这个描述翻译成某种程序语言书写的程序。,6.3.1 详细设计概述,详细/过程设计的基本任务: 算法设计。用某种图形、表格、语言等工具将每个模块的处理过程的详细算法描述出来 数据结构设计。对需求分析、概要设计确定的概念性的数据类型进行确切的定义。 数据库物理设计。确定数据库的存储记录格式、存储记录安排和存储方法等物理结构。 其他设计。输入输出格式设计,数据库中数据项的值的代码设计。 编写详细设计说明书 评审,6.3.1 详细设计概述,详细设计的原则 (1) 由于详细设计的蓝图是给人看的,所以模块的逻辑描述要清晰易读、正确可靠。这样别人才能读懂。这也是常说的清晰第一的设计风格。 (2) 采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性,6.3.1 详细设计概述,结构化过程设计主要思想 自顶向下、逐步求精的设计方法和单入口单出口的控制结构 结构化设计的基本控制结构: 顺序,选择,循环 用三种基本结构可构造任何单入口单出口程序 优点 确保软件具有良好的结构,能构造高质量的程序,6.3.2 详细设计的表示工具,图形工具:程序流程图,N-S,PAD,HIPO 表格工具:判定表、判定树 语言工具:PDL、HIPO,1. 程序流程图(PFC),程序流程图也称为程序框图,是描述程序逻辑结构的工具。程序流程图使用五种基本控制结构是:,顺序型,选择型,先判断 重复型,后判断 重复型,多分支选择型,6.3.2 详细设计的表示工具,程序流程图的优点: 直观清晰、易于使用 缺点: (1)易造成非结构化的程序结构,程序流程图使用箭头代表控制流,程序员不受任何约束,可以完全不顾结构程序设计的原则,随意转移控制 (2)程序流程图本质上不是逐步求精的好工具,过早考虑程序的控制流程而忽略程序的全局结构 (3)程序流程图不易表示数据结构和描述有关的数据,只能描述执行过程; (4)对于大型软件而言,流程图过于琐碎,不容易阅读和修改。,1. 程序流程图,6.3.2 详细设计的表示工具,克服缺点:应由顺序、选择和循环3种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉。,1. 程序流程图,流程图示例,6.3.2 详细设计的表示工具,PAD是一种有左往右展开的二维树型结构 日本鲤鱼旗 PAD图的控制流程为自上而下、从左到右地执行,2. 问题分析图(PAD),2. 问题分析图 (Problem Analysis Diagram),PAD也设置了五种基本控制结构的图式,并允许递归使用。,PAD图举例:将数组A(1)到A(10)进行选择法排序(升序)的算法描述。,PAD图的控制流程为自上而下、从左到右。,2. 问题分析图(PAD),PAD图举例:将数组A(1)到A(10)进行选择法排序的算法描述。,PAD图的控制流程为自上而下、从左到右。,2. 问题分析图(PAD),PAD图的优点: 1、清晰地反映了程序的层次结构。图中的竖线为程序的层次线,最左边的竖线是程序的主线,其后一层一层展开,层次关系一目了然。 2、支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化。 3、易读易写,使用方便。 4、支持结构化的程序设计原理。 5、可以自动生成程序。PAD图有对照FORTRAN、Pascal、C等高级语言的标准图式,因此,在有PAD系统的计算机上(如日立公司的系列机),可以直接输入PAD图,由计算机自动通过走树的方法生成源程序代码,为软件的自动生成提供了有力的工具。,2. 问题分析图(PAD),N-S图(盒图):是一种符合结构化程序设计原则的图形描述工具。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件 。,顺序,多分支选择,“当型”循环,注: 其中P为循环条件,S为循环体。,选择,DO-UNTIL P,S,S,“直到型”循环,6.3.2 详细设计的表示工具,3. 盒图(N-S图),N-S图有下述特点: 功能域(一个特定控制结构的作用域)明确,图中每个矩形框(除CASE构造中表示条件取值的矩形框外),就是功能域。 不可能任意转移控制,约束设计人员必须遵守结构化程序设计的要求。 在盒图上很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次结构。,6.3.2 详细设计的表示工具,3. 盒图(N-S图),4. 判定表,判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理 要求将程序流程图中的多分支判断都改成两分支判断,6.3.2 详细设计的表示工具,在伪代码的基础上,用于描述模块算法设计和处理细节的语言 PDL与需求分析中采用的结构化语言统属于伪码。伪码的结构分为内外两层,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用表示实际操作和条件的自然语言,语法自由 优点 可作为注释插入到源程序中, 简便,易于自动处理,6.3.2 详细设计的表示工具,5. 过程设计语言(Process Design Language),PDL作为一种用于描述程序逻辑的语言,具有以下特点: 有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特征 内语法使用自然语言来描述处理特性,为开发者提供方便,提高可读性。 具有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。 具有子程序定义与调用机制,用以表达各种方式的接口说明。 由于与程序是同构的,可利用自动生成程序自动生成代码,提高软件生产率。,5. 过程设计语言(Process Design Language),PDL中相关的关键词介绍: 1、数据说明 TYPE IS 2、程序块 BEGIN END,5. 过程设计语言(Process Design Language),3、控制结构 1)顺序结构 在这个结构中,程序按语句的先后顺序执行。 2)选择结构 IF THEN ELSE ENDIF,5. 过程设计语言(Process Design Language),3)多路选择结构 CASE OF : WHEN SELECT WHEN SELECT WHEN SELECT DEFAULT: ENDCASE,5. 过程设计语言(Process Design Language),4)循环结构 WHILE循环的形式如下: DO WHILE ENDDO UNTIL循环的形式如下: REPEAT UNTIL ENDREP FOR循环的形式如下: DO FOR ENDFOR,5. 过程设计语言(Process Design Language),4、子程序 子程序的形式如下: PROCEDURE INTERFACE END 对子程序的调用可采用PERFORM。其形式如下: PERFORM 如果调用该子程序需要参数时,则其形式如下: PERFORM USING ,5. 过程设计语言(Process Design Language),5、输入输出 用PDL描述输入输出一般有两种形式: READ/WRITE TO 或 ASK ANSWER 其中,第一种形式的是指I/O设备,则是其要传送的变量名。而第二种形式则多用于人机交互的设计,5. 过程设计语言(Process Design Language),PDL应用示例,以系统主控模块详细设计为例: PROCEDURE 模块名() 清屏; 显示系统用户界面; WRITE(“请输入用户口令:”); READ(password); IF password系统口令 THEN 提示警告信息; 退出运行; ENDIF 显示本系统主菜单; END,定量度量程序复杂程度的方法很有价值: 把程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需要用的工作量 定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣; 程序的定量的复杂程度可以作为模块规模的精确限度,6.3.3 程序复杂程度的定量度量,定量度量程序复杂度的常用方法: MaCabe方法 Halstead方法,6.3.3 程序复杂程度的定量度量,McCabe方法,使用McCabe方法首先需要画出程序图,所谓程序图可以看成是“退化了的”程序流程图,也就是把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为程序图。,环形复杂度的计算方法,可以用下列任何一种方法计算环形复杂度 1、流图中的区域数等于环形复杂度 2、流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 3、流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 上图中的的环形复杂度为4,环形复杂度的用途,程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。 实践表明,模块规模以V(G)10为宜,也就是说,V(G)10是模块规模的一个更科学更精确的上限。,Halstead方法,Halstead方法根据程序中运算符和操作数的总数来度量程序的复杂程度。 令N1为程序中运算符出现的总次数,N2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论