资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 详细设计,4.1,详细设计的任务与原则,4.2,过程设计的工具,详细设计又称过程设计,在概要设计阶段,已经确定了软件系统的总体结构,给出系统中各个组成模块的功能和模块间的联系。详细设计阶段的工作,是在概要设计结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。需要指出,这些描述应该用详细设计的表达工具来表示,但它们还不是程序,一般不能够在计算机上运行。,详细设计是编码的先导。这个阶段所产生的设计文档的质量,将直接影响编码阶段程序的质量。详细设计阶段的任务就是把解法具体化,设计出程序的详细规格说明。这种规格说明的作用类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。,4.1,详细设计的任务与原则,设计阶段的目的是为编程制订一个周密的计划。根据“由外向里”的思想方法,概要设计完成之后,就要进行详细设计。详细设计确定每个模块的内部特征,即每个模块内部的执行过程。,4.1.1,详细设计的任务,详细设计任务决定各个部模块内部特性,(,内部的算法及使用的数据,),,详细设计的任务不是编写程序,而是给出程序设计蓝图,程序设计人员根据蓝图编写程序。目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。,4.1,详细设计的任务与原则,这一阶段的主要任务有:,1.,模块的算法设计,为每个模块进行详细的算法设计,写出模块的详细过程性描述。即用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。,2.,模块的数据设计,对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。数据设计包括数据结构设计、数据库结构设计和文件设计等。,4.1,详细设计的任务与原则,3.,模块的接口设计,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档,作为编码阶段的工作依据。,4.,模块的测试用例设计,要为每一个模块设计出一组测试用例,这样可以在编码阶段对模块代码,(,即程序,),进行预定的测试,模块的测试用例包括输入数据、期望输出等内容。负责过程设计的软件人员对模块的情况了解得最清楚,由他们完成过程设计后接着对各个模块进行测试最为合适。,4.1,详细设计的任务与原则,5.,模块的其他设计,根据软件系统的具体的要求,还可能进行以下设计:代码设计、网络系统设计、输入,/,输出格式的设计、系统配置的设计等。,6.,编写“详细设计说明书”,在详细设计结束时,应该把上述设计结果写入详细设计说明书,对“详细设计说明书”进行评审。如果评审没有通过,要再次进行详细设计,直到满足要求为止。通过复审的详细设计说明书形成正式文档。交付给下一阶段,(,编码阶段,),并成为其工作依据。,4.1,详细设计的任务与原则,4.1.2,详细设计的原则,在详细设计的过程中应遵循以下原则。,1.,模块的逻辑描述要清晰易懂、正确可靠,由于详细设计的蓝图是给其他人看的,所以模块的逻辑描述要清晰易读、正确可靠,这样别人才能读懂。这也是常说的清晰第一的设计风格。详细设计结果的清晰易懂主要有两个方面的作用:一是易于编码的实现,二是易于软件的测试和维护。,4.1,详细设计的任务与原则,2.,采用结构化设计方法,采用结构化设计方法,可以改善控制结构,降低程序的复杂程度,提高程序的可读性、可测试性、可维护性。其基本内容在下一节中介绍。,3.,选择恰当描述工具来描述各模块算法,算法表达工具可以由开发单位或设计人员自由选择,但它必须具有描述过程细节的能力,而且在编码阶段能够直接翻译为程序设计语言书写的源程序。,4.2,过程设计的工具,在详细设计中用于描述处理过程常用三种工具:图形、表格和语言。这些工具各自的优缺点,在设计时可针对不同的情况选用,也可同时采用多种工具来描述处理过程。,4.2.1,程序流程图,PFC,程序流程图,(Program Flow Chart,,简称,PFC),又称程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构的方法,也是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,能比较直观和清晰地描述过程的控制流程,易于学习掌握,是软件开发者最普遍采用的一种工具。如图,4-3,所示为程序流程图中使用的基本符号。图,4-1,为用流程图描述的三种基本控制结构。,4.2,过程设计的工具,图,4- 3,程序流程图的基本符号,4.2,过程设计的工具,程序流程图虽然直观清晰、容易掌握、使用广泛,但程序流程图也存在以下缺陷:,(1),在实际使用中程序流程图本质上并不具备逐步求精的特点,往往反映的是最后的结果,对于提高大型系统的可理解性作用甚微。,(2),由于程序流程图中可随心所欲地画流程线的流向,容易造成非结构化的程序结构。编码时造成不加限制使用,GOTO,语句,会使软件质量受到影响。,(3),程序流程图不易表示数据结构。,由于程序流程图存在这些缺陷,因此总的发展趋势是越来越多的人不再使用程序流程图。为克服流程图的缺陷,绘制流程图时应注意由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉情况,这样的流程图是结构化的流程图。,4.2,过程设计的工具,4.2.2,盒图,N-S,盒图最早由,Nassi,和,Shneiderman,在,1973,年发表的题为“结构化程序的流程图技术”的一文中提出的,因此也称,N-S,图。盒图含有三种基本控制结构来构造程序逻辑,符合结构化程序设计原则。每个处理步骤都用一个盒子表示,这些处理步骤可以是语句或语句序列,必要时还可以嵌套另一个盒子。在盒图中规定的基本控制结构如图,4-4,所示。,4.2,过程设计的工具,图,4- 4 N-S,图控制结构,4.2,过程设计的工具,用盒图作详细设计描述手段时,需要用两个盒子:数据盒和过程盒。数据盒描述有关的数据,包括全程数据、局部数据和模块界面上参数等,过程盒描述执行的过程,如图,4-5,所示。,图,4- 5,数据盒和过程盒示例,4.2,过程设计的工具,从以上分析可以看出,,N-S,图具有如下优点:,(1),只能从上边进入盒子,从下面走出盒子,没有其他入口和出口,限制了随意的控制转移,保证了程序有良好的结构。,(2),由于取消了控制流符号,不允许随意转移控制,必须遵守结构化程序设计原则。,(3),很容易确定局部数据和全局数据的作用域。,(4),易于表达嵌套关系和模块的层次结构。,因此,坚持使用,N-S,图可以使程序员逐步养成以结构化的方式进行思考和解决问题。,4.2,过程设计的工具,4.2.3,问题分析图,PAD,问题分析图,(Problem Analysis Diagram,,简称,PAD,图,),是由日本日立公司提出的,是一种支持结构化程序设计的算法描述工具,该图用一种由左往右展开的二维树型结构表示程序的逻辑结构。它的基本控制结构如图,4-6,所示。,图,4-6,中“定义”符号,可对某个处理进行进一步的细化定义。当一个模块,A,在一页纸上画不下时,可在图中该模块相应位置矩形框中简记一个“,A”,,再在另一页纸上详细画出,A,的内容,用,def,及双下划线来定义作,A,的,PAD,。这种方式可使在一张纸上画不下的图,分在几张纸上画出,也可以用它定义子程序。,4.2,过程设计的工具,图,4- 6 PAD,图的基本符号,4.2,过程设计的工具,PAD,所描述程序的层次关系表现在纵线上。每条纵线表示一个层次。,PAD,图的控制流程为自上而下、从左到右地执行。从以上分析可以看出,,PAD,图具有如下特点。,(1) PAD,图描述的逻辑结构清晰、层次分明、图形标准,图中的竖线为程序的层次线,最左竖线是程序的主线,其后一层一层展开,层次关系一目了解。每增加一个层次、图形向右扩展一条竖线,,PAD,图中竖线总条数就是程序的层数。程序从图中最左竖线上端的结点开始执行,自上而下,从左到右顺序执行,遍历所有结点。,(2),使用,PAD,符号所设计出来的程序必然是结构化程序,从而有利于提高程序的设计质量。,4.2,过程设计的工具,(3) PAD,图既可用于表示程序逻辑,也可用于描述数据结构。,(4) PAD,图描述的算法可利用软件工具转换成高级语言程序,,PAD,图有对照,Fortran,、,C,等高等语言的标准图式。在装有,PAD,系统的计算机上,直接输入,PAD,图,由机器自动通过走树的办法生成相应的源代码,大大提高软件的生产率和可靠性。,(5) PAD,图支持自顶向下、逐步求精的设计方法的使用。左边层次中的内容可以抽象,然后由左到右逐步细化。,4.2,过程设计的工具,4.2.4,过程设计语言,PDL,过程设计语言,(Procedure Design Language,,简称,PDL),又称伪码,于,1975,年由,Caine,与,Gordon,首先提出。它是一种用于描述模块算法设计和处理细节的语言。,PDL,拥有开放的语法格式,由严格的外语法,(,即关键词,),和灵活的内语法,(,即自然语言,),组成。在,PDL,中,外语法是确定的,用于描述数据结构和控制结构,用类似于一般的编程语言说明语句和控制结构的关键字,(,如,IFTHENELSE),表示;而内语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能。,4.2,过程设计的工具,PDL,的总体结构与一般程序相同,它也包括注释部分、数据说明部分和过程部分,,PDL,仅仅是对算法的一种描述,它是不可执行的。图,4-7,分别显示了用,PDL,描述选择结构和循环结构的方法。,4.2,过程设计的工具,图,4- 7 PDL,选择结构和循环结构示例,4.2,过程设计的工具,PDL,虽然不是程序设计语言,但是它与高级程序设计语言非常类似,外语法同相应程序语言一致,内语法使用自然语言,能够说明简单和复杂的数据结构;子程序的定义与调用均不受具体接口方式的影响。在实际应用中,只要对,PDL,描述稍加变换便可以变成源程序代码,因此它是详细设计阶段很受欢迎的表达工具。与图形工具相比,,PDL,具有以下优点:,(1),同自然语言,(,英语,),很接近,易于理解,伪码翻译成程序语言的源程序很方便。;,(2)PDL,描述与程序结构相似,用软件工具自动产生程序代码比较容易;,4.2,过程设计的工具,(3)PDL,描述可以作为注释嵌入在源程序中成为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于提高程序的可读性,有利于软件的维护;,(4),用,PDL,写出的程序既可以很抽象,又可以很具体,因此容易实现自顶向下逐步求精的设计原则。,PDL,的不足之处:一是它不如图形描述形象直观,描述复杂的条件组合动作间的对应关系不够明了,因此人们常常将,PDL,描述与一种图形描述结合起来使用,加以弥补;二是,PDL,对英语使用的准确性要求较高,在非英语国家的应用不很广泛。,4.2,过程设计的工具,4.2.5,判定表,(Decision Table),如果算法中包括多重嵌套组合条件时,用前面介绍的图形工具,(,如,PAD,等,),或语言工具,(PDL),都不易清楚地描述。用判定表能清楚地表示复杂的条件组合与应做的动作之间的对应关系。一张判定表由四部分组成:,条件定义,条件取值的组合,动作定义,在各种取值的组合下应执行的动作,4.2,过程设计的工具,(1),左上部:列出所有可能的条件。,(2),左下部:列出所有可能出现的动作。,(3),右上部:列出所有可能的条件组合。,(4),右下部:列出每种可能的条件组合对应动作的取值。,其中每一列构成一条规则,即满足不同条件的组合,有不同的动作。,4.2,过程设计的工具,例如某公司对客户订货的优惠条件描述如下:,客户年交易额不足,5,万元,折扣率为,0%,;年交易额超过,5,万元以上的,如果无欠款,折扣率为,15%,;如果年交易额超过,5,万元,有欠款且与本公司交易,20,年以上,折扣率为,10%,;如果年交易额超过,5,万元,有欠款且与本公司交易不足,20,年,折扣率为,5%,。,用判定表来表示与上述每种条件组合相对应的动作,在表的右上半部分中列出所有条件,T,表示该条件取值为真,F,表示该条件取值为假,空白表示这个条件无论取何值对动作的选择不产生影响。在判定表右下半部分中列出所有的动作,画“”表示要做这个动作,空白表示不做这个动作。判定表右半部分的每一列实质上是一条规则,规定了与特定条件取值组合相对应的动作。如图,4-8,所示。,4.2,过程设计的工具,图,4- 8,判定表示例,判定表能够把在什么条件下应做什么动作准确地表示出来,但判定表的直观性较差,初次使用它的人员需要有一个熟悉的过程。,4.2,过程设计的工具,4.2.6,判定树,判定树是判定表的一种变形,它比判定表直观,易于理解和使用。图,4-9,是与图,4-8,功能等价的判定树的表示方法。,图,4- 9,判定树示例,4.2,过程设计的工具,由图,4-8,和,4-9,可知,判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部考虑到。判定树简洁性不如判定表,数据元素的同一个值经常要重复写多遍,而且越接近未端重复次数越多。判定表和判定树适应于算法中包含复杂的多重条件组合的情况,可将两种工具结合起来,先用判定表作底稿,然后产生判定树。,
展开阅读全文