,Click to edit Master title style,Click to edit Master text styles,Second level,*,Click to edit Master title style,Click to edit Master text styles,Second level,*,软件工程,原理、方法和工具,Ch.5,软件详细设计,王会青,第,5,章 软件详细设计,5.1,详细设计的目的与任务,5.2,结构化程序设计,5.3,详细设计工具,5.1,详细设计的目的与任务,详细设计的根本目的:确定应该怎样具体实现所要求的系统。经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序,结构化程序设计是实现上述目标的关键技术,因此是详细设计的逻辑基础。,5.2,结构化程序设计,结构化程序设计所使用的结构有顺序、条件和重复三种,。,结构化程序设计采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构,。,5.3,详细设计工具,描述程序处理过程的工具称为详细设计工具,可以分为图形、表格和语言三类,。,1.,程序流程图,2.N-S,图,3.PAD,图,4.,过程设计语言,5.3.1,程序流程图,程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。,主要优点是对控制流程的描绘很直观,便于初学者掌握。,缺点:,程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。,程序流程图用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。,程序流程图不易表示数据结构。,5.3.1,程序流程图,程序流程图的三种基本控制结构,N-S,图又称为盒图,具有以下优点:,功能域明确。,不可能任意转移控制。,很容易确定局部和全局数据的作用域。,很容易表达模块的层次结构,并列和嵌套关系。,使得程序设计人员遵守结构化程序设计的规定,自然地养成良好的程序设计风格。,5.3.2 N-S,图,5.3.2 N-S,图,PAD,图是问题分析图(,problem analysis diagram,)的英文缩写,自,1973,年由日本日立公司发明以后,已得到一定程度的推广。,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。,5.3.3 PAD,图,5.3.3 PAD,图,PAD,图描述的三种基本控制结构,PAD,图具有以下优点:,用,PAD,图设计出来的程序必然是结构化程序。,PAD,图所描绘的程序结构十分清晰。,PAD,图的符号支持自顶向下,逐步求精的方法。,用,PAD,图表示的程序逻辑易读、易懂、易记,使用方便。,既可表示程序逻辑,也可用于描绘数据结构。,可自动生成程序。,5.3.3 PAD,图,5.3.3 PAD,图示例,5.3.3 PAD,图示例,过程设计语言(,Process Design Language,,,PDL,),也称为伪码,是一种用于描述模块算法设计和处理细节的语言。,PDL,具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,,PDL,表示实际操作和条件的内层语法通常又是灵活自由的,可以适应各种项目的需要。,PDL,是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言的语法。,5.3.4,过程设计语言,过程设计语言的基本控制结构:,简单陈数据结构:避免复合语句。,判定结构:,IF_THEN_ELSE,或,CASE_OF,结构。,循环结构:,WHILE_DO,或,REPEAT_UNTIL,结构。,5.3.4,过程设计语言,过程设计语言的特点:,关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。,描述处理过程的说明性语言,没有严格的语法限制。,具有数据说明机制,应该既包括简单的数据结构,又包括复杂的数据结构。,具有模块定义和调用机制。,5.3.4,过程设计语言,5.3.4,过程设计语言示例,现以某系统主控模块的详细设计为例,说明如何用,PDL,描述处理过程:,PROCEDURE,模块名(形式参数);,清屏;,显示某系统用户界面;,PUT,(“请输入用户口令:”);,GET,(,Password,),;,IF Password,系统口令,提示警告信息;,退出运行,ENDIF,;,显示本系统主菜单;,WHILE,(,true,),接受用户选择,BD,;,IF BD=“,退出”,Break,;,ENDIF,;,使用相应下层模块完成用户选择功能;,ENDWHILE,;,清屏;,RETURN,END,过程设计语言的优点:,可以作为注释直接插在源程序中间,有助于保持文档和程序的一致性,提高了文档的质量。,提供的机制比图形全面,有利于保证软件详细设计与编码的质量。,可自动生成程序代码,提高软件生产率。,5.3.4,过程设计语言,习题,软件详细设计的基本任务是什么?有哪几种描述方法?,结构化程序设计的基本要点是什么?,使用流程图、,PAD,图、,N-S,图和,PDL,语言描述下列程序的算法:,(,1,)在数据,A(1)A(10),式中求最小数和次小数。,(,2,)输入三个正整数作为边长,判断由这三条边构成的三角形是直角、等腰或一般三角形。,4.,任选一种排序(从大到小)算法,分别用流程图、,N-S,图和,PPL,语言描述其详细过程。,5.,程序流程图、,N-S,图、,PAD,图和,PDL,语言的特点各是什么?你认为这四种详细设计工具哪一种最好?为什么?,6.,画出下列程序的,PAD,图,REPEAT,IF x,O,THEN x1,ELSE x2,ENDIF,;,S1,;,IF y,O,THEN y1,IF z,O,THEN z1,ELSE z2,ENDIF,;,S2,;,ELSE y2,;,ENDIF,;,UNTIL L,;,Q&A,