软件工程第五讲教案Word文档下载推荐.doc
《软件工程第五讲教案Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《软件工程第五讲教案Word文档下载推荐.doc(17页珍藏版)》请在冰豆网上搜索。
第三节详细设计规格说明与复审(15‘)
教学场所
或教学方法
使用
教具
作业
课后记
授课教师
第五章软件详细设计
详细设计又称过程设计,在总体设计阶段,已经确定了软件系统的总体结构,给出系统中各个组成模块的功能和模块间的联系。
这一步的工作,就是要在上述结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。
需要指出,这些描述应该用详细设计的表达工具来表示,但它们还不是程序,一般不能够在计算机上运行。
详细设计是编码的先导。
这个阶段所产生的设计文档的质量,将直接影响下一阶段程序的质量。
为了提高文档的质量和可读性,本章除要说明详细设计的目的、任务与表达工具外,还将扼要介绍结构程序设计的基本原理,以及如何用这些原理来指导模块内部的逻辑设计,提高模块控制结构的清晰度。
5.1详细设计的任务与原则
详细设计的目的是为软件结构图(SC图或HC图)中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。
表达工具可以由开发单位或设计人员选择,但表达工具必须具有描述过程细节的能力,进而可在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。
详细设计阶段的主要任务如下。
1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;
2.确定每一模块使用的数据结构;
3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。
交付给下一阶段(编码阶段)的工作依据。
4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容,其要求和设计方法将在第八章详细介绍,这里需要说明的一点是,由于负责详细设计的软件人员对模块的功能、逻辑和接口最清楚,所以可由他们在完成详细设计后接着提出对各个模块的测试要求。
5.1.2详细设计的原则
1.模块的逻辑描述要清晰易读、正确可靠。
2.采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。
其基本内容归纳为如下几点。
①程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。
②使用单入口单出口的控制结构,确保程序的静态结构与动态执行情况相一致。
保证程序易理解。
③程序的控制结构一般采用顺序、选择、循环三种结构来构成,确保结构简单。
④用自顶向下逐步求精方法完成程序设计。
结构化程序设计的缺点是存储容量和运行时间增加10一20%,但可读性和可维护性好。
3.选择恰当描述工具来描述各模块算法。
5.2详细设计的方法
采用自然语言来表达算法过程的优点是:
能使不懂软件的人较易理解这些规格说明,但是,自然语言在语法和语义上有时具有多义性,且与上下文才相关,因此,必须采用更严密的描述工具来表达过程细节。
主要的详细设计工具有图形工具、表格工具语言工具、简述如下。
•
图形工具
利用图形工具可以把过程的细节用图形描述出来。
表格工具
可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。
语言工具
用某种高级语言(称之为伪码)来描述过程的细节。
5.2.1程序流程图
程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。
它独立于任何一种程序设计语言,能比较直观和清晰地描述过程的控制流程,易于学习掌握。
因此,程序流程图是软件开发者最普遍采用的一种工具。
流程图也存在一些严重的不足,主要表现在:
利用流程图使用的符号不够规范,使用的灵活性极大,程序员可以不受任何约束,随意转移控制。
这些问题常常很大的影响了程序质量。
为了消除这些不足,应严格的定义流程图所使用的符号,不允许随心所欲地画出各种不规范的流程图。
为使用流程图描述结构化程序,必须限制在流程图中只能使用下述的五种基本控制结构。
顺序型
顺序型由几个连续的处理步骤依次排列构成,如图5-1所示。
图5-1顺序型
图5-2选择型
图5-3while型循环
选择型
选择型是指由某个逻辑判断式的取值决定选择两个处理中的一个,如图5-2所示。
while型循环
while型循环是先判定型循环,在循环控制条件成立时,重复执行特定的处理,如图5-3所示。
until型循环
until型循环是后判定型循环,重复执行某些特定的处理,直到控制条件成立为止,如图5-4所示。
图5-4until型循环
多情况型选择
图5-5多情况型选择
多情况型选择列举多种处理情况,根据控制变量的取值,选择执行其一,如图5-5所示。
图5-6结构化程序流程图
任何复杂的程序流程图都应由上述五种基本控制结构组合而成。
图5-6所示的是一个结构化程序的流程图。
为了能够准确的使用流程图,要对流程图所使用的符号作出确切的规定。
除去按规定使用定义了的符号之外,流程图中不允许出现其他任何符号。
图5-7给出国际标准化组织提出,并已为我国国家技术监督局批准的一些程序流程图标准符号,其中多数所规定的使用方法与普通的使用习惯用法相一致。
图5-7标准程序流程图的规定符号
5.2.2N-S图
Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称之为盒图,又称之为N-S图。
在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。
如图5-8所示,在顺序型中,先执行A,后执行B。
图5-8顺序型结构
如图5-9所示,在选择型结构中,如果条件P成立,则可执行T下面的A的内容,当条件P不成立时,则执行F下的内容。
图5-9选择型结构
WHILE重复型
如图5-10所示,在WHILE重复型循环结构中,先判断P的值,再执行S。
其中P是循环条件,S是循环体
图5-10WHILE重复型循环结构
UNTIL重复型
如图5-11所示,在UNTIL重复型循环结构中,先执行S,后判断P的值。
图5-11UNTIL重复型循环结构
多分支选择型
如图5-12所示,给出了多出口的判断图形表示,P为控制条件,根据P的取值,相应地执行其值下面的各框内容。
图5-12多分支选择型
例:
将图5-6所示的程序流程图转化为N-S图的结果如图5-13所示。
图5-13N-S图举例
N-S图的特点
图形清晰、准确;
控制转移不能任意规定,必须遵守结构化程序设计原则;
很容易确定局部数据和全局数据的作用域;
容易表现嵌套关系和模块的层次结构。
5.2.3PAD图
PAD是Problemanalysisdiagram的英文缩写,它是日本日立公司提出的。
它是用结构化程序设计思想表现程序逻辑结构的图形工具。
PAD也设置了五种基本控制结构的图示,并允许递归使用。
1.顺序型
如图5-14所示,按顺序先执行A,再执行B。
图5-14顺序型结构
2.选择型
如图5-15所示,给出了判断条件为P的选择型结构。
当P为真值时执行上面的A框,P取假值时执行下面的B框中的内容。
如果这种选择型结构只有A框,没有B框,表示该选择结构中只有THEN后面有可执行语句A,没有ELSE部分。
图5-15选择型结构
3.WHILE重复型和UNTIL重复型
如图5-16所示,P是循环判断条件,S是循环体。
循环判断条件框的右端为双纵线,表示该矩形域是循环条件,以区别于一般的矩形功能域。
图5-16WHILE重复型和UNTIL重复型结构
4.多分支选择型
如图5-17所示,多分支选择型是CASE型结构。
当判定条件P等于1时执行A1框的内容,P等于2时执行A2框的内容,P等于N时执行An框的内容。
图5-17多分支选择型结构
5.PAD图应用举例
图5-18给出了图5-6所示的程序流程图的PAD图。
图5-18PAD图举例
6.PAD图特点
PAD图的结构化程度高;
PAD图中的是程序的主干线,即程序的第一层结构。
其后,每增加一个层次,则向右扩展一条纵线。
程序中的层数就是PAD图中的纵线数。
因此,PAD图的可读性强。
利用PAD图设计出的程序必定是结构化的程序。
利用软件工具可以将PAD图转换成高级语言程序,进而提高了软件的可靠性和生产率。
PAD图支持自顶向下的逐步求精的方法。
7.PAD图的扩充结构
为了反映增量型循环结构,在PAD图中增加了对应于
FORi:
=n1ton2stepn3do
的循环控制结构,如图5-19(A)所示。
其中,n1是循环初值,n2是循环终值,n3是循环增量。
图5-19PAD的扩充控制结构
另外,PAD所描述程序的层次关系表现在纵线上。
每条纵线表示一个层次。
把PAD图从左到右展开,随着程序层次的增加,PAD逐渐向右展开,有可能会超过一页纸,这时,对PAD增加了一种如图5-20(B)所示的扩充形式。
当一个模块A在一页纸上画不下时,可在图中该模块相应位置矩形框中简记一个“NAMEA”,再在另一页纸上详细画出A的内容,用def及双下划线来定义作A的PAD。
这种方式可使在一张纸上画不下的图,分在几张纸上画出,也可以用它定义子程序。
5.2.4PDL
PDL(ProcedureDesignLanguage)为过程设计语言的英文缩写,于1975年由Caine与Gordon首先提出。
PDL是所有非正文形式的过程设计工具的统称,到目前为止已出现多种PDL语言。
PDL语言的特点
关键字采用固定语法并支持结构化构件、数据说明机制和模块化;
处理部分采用自然语言描述;
可以说明简单和复杂的数据结构;
子程序的定义与调用规则不受具体接口方式的影响。
PDL描述选择结构
利用PDL描述的IF结构如下:
IF<
条件>
一条或数条语句
ELSEIF<
ELSE
ENDIF
PDL描述循环结构
对于三种循环结构,利用PDL描述如下。
①WHILE循环结构
DOWHILE<
条件描述>
ENDWHILE
②UNTIL循环结构
REPEATUNTIL<
ENDREP
③FOR循环结构
FOR<
循环变量》