计算机软件与应用D第四章详细设计_第1页
计算机软件与应用D第四章详细设计_第2页
计算机软件与应用D第四章详细设计_第3页
计算机软件与应用D第四章详细设计_第4页
计算机软件与应用D第四章详细设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

计算机软件与应用D第四章详细设计概述概要设计完成了程序的总体结构设计,规定了各个模块的功能及各模块之间的相互联系,再进一步,要考虑每个模块内部的算法问题。从软件开发的工程化观点来看,在使用程序设计语言编写程序以前,需要对算法的逻辑关系进行分析,并给出清晰的表达,使之成为编码的依据。这一步工作不仅编码工作容易多了,而且给软件的维护带来了很多的方便。在理想的情况下,详细设计步骤需要的过程描述应当用自然语言来表达。但是,详细设计必须是无歧义地描述过程的细节,而自然语言却不具有单一性。必须使用更有约束性的方式来表示过程细节。在概要设计期间,每个模块被定义为软件总体结构的组成部分,用自然语言编写结构图和接口说明、模块的处理说明和性能说明。为了把这些简明的、无歧义的一般处理步骤的描述转换为准确的、结构过程的描述,就需要使用设计描述工具。??????

结构化构造过程规格说明的工具称之为详细设计工具,可分为:图形工具:把过程的细节表示成一个“图”的组成部分,在这个图上,逻辑构造用具体的图形来表示。列表工具:用一个表来表示过程的细节,表列出了各种操作及相应的条件。语言工具:用类语言来表示过程的细节,类语言很接近编程语言。不管属于哪一类,一种设计工具应表现出控制的流程、处理功能、数据的组织及实现的细节。详细设计的基础在60年代初期开始奠定和充实的。60年代后期,提出了一组逻辑构造,利用这组逻辑构造可以构成任何程序。这组构造强调“维持一定的功能域”。也就是说,每个构造有一个预定的逻辑结构,每个构造都从顶部进入并从底部离去。顺序构造是实现任何一个算法的基本处理步骤。条件构造根据某种逻辑条件的出现而选择相应的处理步骤。重复构造则是为循环而设置的。这三种构造是结构程序设计——软件工程领域中的一种重要方法——的基础。提出这些结构化构造的目的是限制软件的过程设计,只允许采用几种预定的操作。采用这些结构化构造将减少程序的复杂性,从而提高软件的可读性、可测试性和可维护性。使用有限的几种逻辑构造还有助于人们用“成块识别”的方式去理解进程。任何一个程序,不管它的应用领域或技术复杂性如何,都可以仅仅用这3种结构化构造来设计和实现。详细设计中的图形工具有:流程图方块图(N-S图)HIPO图PAD图等这些图形工具提供了极好的图形样式,通过它们,可以方便地描述过程的细节。

图形设计工具流程图独立于各种程序设计语言,比较直观、清晰,易于学习掌握。然而,它也是经常被误用的一种方法。为使流程图能描述结构化程序,限制流程图只能由几种基本控制结构组成,或者说任一程序流程图都应能由几种基本控制结构嵌套而成。ISO5807《信息处理——数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定》中对程序流程图的符号做出了规定。AB顺序结构选择结构PABFT当型循环PSTFS直到型循环PTFP1S1TFP2S2T…P3FFSn多情况选择结构T【例】画出实现符号函数的流程图。X=0Y=0Y=-1Y=1X<0输入X输出Y通常,当需要从一组嵌套的循环构造或者嵌套的条件构造中离去时,只简单地采用结构化构造有可能使效率降低,甚至沿着离去路径使所有逻辑测试复杂化,从而使软件的控制流程变得模糊不清,增加了出错的可能性,并且对可读性和可维护性也有不良影响。这时,可以有两种选择:重新设计程序流程,使得在控制流程的嵌套部位不需要出现离去分支。有控制地采用非结构化的构造;也就是说,设计成有限制地从嵌套流程中往外分支。方块图是一种强制使用结构化构造的图示工具,具有下列特点:明确规定功能域

(即某一具体构造的功能范围),并且很直观地从图形表示中看出来。不可能随意分支或转移。可以很容易地确定局部数据和

(或)全程数据的作用域。容易表示出递归结构。S1S3S2顺序结构TPFS1S2选择结构WHILE条件S当型循环结构SUNTIL条件直到型循环结构NS图是一种不允许破坏结构化的图形算法描述工具。在NS图中去掉了流程图中易引起麻烦的流程线,全部算法都写在一个框内,每一种结构也是一个框。SN……….S2S1情况n………情况2情况1条件多路分支选择结构【例】画出实现符号函数的NS图。输入XTX=0FY=0TX<0FY=-1Y=1输出Y对应与一个结构化流程图的方块图HIPO(层次加输入-处理-输出)是根据IBM公司研制的软件设计与文件编制技术发展而来的一种图示工具。在概要设计、详细设计、设计评审、测试和维护的不同阶段,都可以使用HIPO图对设计进行描述。HIPO图的最重要的特征是它能够表示输入/输出数据(外部数据和内部数据流程)与软件的过程之间的关系。完整的一组HIPO图由下列各部分组成:层次图

(H图):以层次方框形式表达程序主功能模块与次功能模块的关系。高层IPO图:针对H图中的主功能模块和次功能模块,描述其输入,处理功及输出等。低层IPO图:给出H图中最低层次的具体设计。1.0订单处理子系统2.0每月发票处理3.0事务处理4.0报表生成处理2.1数据输入模块2.2数据编辑模块3.1开票数据模块3.2开票

模块3.3发票登记模块4.1事务报表模块4.2顾客报表模块4.3余额报表模块3.1.1进货3.1.22付款3.1.3货调整3.1.4借调整在画H图时要注意几个问题:根据经验,一般每层画3-10个功能模块为宜。对于画到第几层为止则无统一标准,视具体情况而定。画高层IPO时,从H层第一层开始画,按自上而下,从左到右的顺序画出H图中每个方框(除最底层外)的IPO图。在IPO图上给出哪些是输入,处理的功能是什么,输出什么。为了避免规模和维护上的复杂性问题,大多数项目的HIPO图只深入到某一层。

购货支付当前差额事务日期为顾客处理的事务如下:准备临时变量建立事务区确定事务类型

购货付款贷方调整借方调整=>每月的事务文件顾客差额文件发票发票登记输入处理输出3.1.43.1.33.1.23.1.1PAD(问题分析图)是一种用于软件详细设计的表达形式:综合流程图、Warnier图(类似判定树)、方块图和伪码等技术的一些特点;以二维树的形式描述程序的逻辑;主要优点是程序结构清晰,能够直接导出程序代码,并对其一致性进行检查;可应用于BASIC、FORTRAN、COBOL、PASCAL等高级语言;支持软件需求分析和概要设计阶段。PAD图采用自顶向下、逐步求精和结构化设计的原则:力求将模糊的问题解的概念逐步转换成确定的、详尽的过程。最终可采用计算机进行处理。PAD为软件设计提供了3种基本控制结构(顺序、循环和选择)描述,首先要从系统设计的一种模糊的概念出发,将过程描述为:过程顺序部分的表示过程重复部分的表示

过程选择部分的表示重复上述步骤,直到过程完全确定和详尽为止。粗略的问题概念(1)顺序过程的细化(2)循环过程的细化(3)选择过程的细化模糊模糊模糊模糊循环条件模糊循环处理前处理模糊模糊选择条件模糊模糊模糊前处理后处理选择处理(2)(1)(3)框内写出定义名定义框8框内写出子程序名子程序框7可一、二或多路选择,框内写出选择条件选择框6先执行,后判断循环,框内写出重复条件重复框5先判断,再循环,框内写出重复条件重复框4框内写出处理或语句名处理框3框内写出输出变量名输出框2框内写出输入变量名输入框1注释名称符号PAD图对应的程序执行的步骤:PAD的执行顺序是从最左主干线的上端结点,自上而下依次执行。当遇到判断或循环时,就自左而右进入下一层从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。如此继续,直到执行到主干线的下端为止。BA顺序结构选择结构BAPAPA2PA1An=2=1=n多分支选择结构当型循环结构WHILEPS直到型循环结构UNTILPS【例】画出实现符号函数的PAD图。输入XY=-1Y=0X=0X<0Y=1输出Y伪码是控制结构和某些编程语言元素的简写符号,可以任意插入注释,实质上是“文字流程图”。熟悉某种程序设计语言的设计人员所用的伪码可能就是该语言的简化版本。实际使用时,设计人员可以随意增加伪码的详细程度,特别是针对可能产生二义性的地方。伪码的缺点是不标准,而且只有控制结构,对数据描述能力很差。

伪码设计语言程序设计语言(PDL,又称详细设计语言DDL)弥补了伪码的缺点,它是一种“混杂式语言”。它采用某种语言(例如英语)的词汇但却采用另一种语言(即一种结构化编程语言)的全部语法,它用文本格式提供一种描述数据和处理的方法。PDL有正规的句法,指出数据和处理结构,并用自然语言说明细节。虽然程序设计语言是不可执行的,但可以对之开发出评价设计和转换为源程序的自动化技术。为了实现从详细设计到编码的自动转换,各种程序设计语言都开发了相应的PDL,如PDL/PASCAL,PDL/C,以及PDL/Ada等,它们利用程序设计语言的语法结构,用自然语言表示某些控制信息,使面向设计的部分减少,面向实现的部分增加,从而使程序设计语言更件接近可执行代码。程序设计语言可分为三个部分:数据说明处理说明I/O对特殊的应用,如多任务语句或实时应用等,可以提供专用的结构和语句。PROCEDUREspellcheckIS查找错拼单词BEGINsplitdocumentintosinglewords将整个文档分解成单词lookupwordsindictionary在字典中查找这些单词displaywordswhicharenotindictionary显示找不到单词createanewdictionary造一个新字典ENDspellcheck在总体结构上它和高级语言程序的相似之处主要在于:关键字起到了骨架作用。按程序结构缩格书写。主要差别表现在:除去特定的若干关键字外,所描述的内容也使用了简单的自然语言,没有高级语言那样严格的语法限制。程序设计语言是用于详细设计阶段的工具,这个阶段的任务显然与用高级语言编写程序的任务完全不同。程序设计语言把叙述性说明文直接插入到PDL语句中。由于混合使用叙述性说明文和形式化的过程形式,故一般无法对其进行编译。PDL可以是一种稍作变动的编程语言,或者是为程序设计而专门研制的语言。作为一种程序设计语言,PDL应当具有以下特征:其关键字有固定语法,以便提供全部结构化构造、数据说明和模块化特性。一种自然语言的自由文法,用来描述处理性能。有数据说明机制,包括简单的(标量与数组)与复杂的数据结构(链表或层次结构)。有子程序定义与调用方法,用来表达各种方式的接口说明。一个用程序设计语言描述的软件设计应当可以转换成汇编语言、FORTRAN或者Pascal,只是难易程度有所不同而已。任何一种详细设计工具如果使用得当,对设计有很大帮助;如果使用不当,则即便是最好的工具也不会有什么帮助。一个详细设计工具应:可以用来得到便于理解和复审的过程表示。应增强编程的能力,以便使程序事实上成为设计的一个自然的产物。得到的设计表达还必须便于维护,以使设计总是能够正确地表达程序。

根据上面介绍的一般特性,设计工具应具有:模块性:支持模块化软件的开发。简明性:应易学、易用、易读。便于编辑:在设计、测试和维护阶段便于修改。机器可读性:应能直接输入到计算机内处理。可维护性:软件配置的维护意味对详细设计的维护。强行结构化:会使人们养成良好的设计习惯。自动处理:使设计人员对软件的正确性与质量有新的深入了解。数据表示:应具有直接地表示局部和全程数据的能力。逻辑验证:要达到设计逻辑的自动验证这个首要目标。编程能力:所表示的设计可以很容易转换成源程序。不好尚好不好不好不好数据表示低中等低低高使用频率不能适用好好很好不好结构化好好尚好不好不好可修改性很好很好尚好不好不好可读性好很好好好尚好易编码很好尚好尚好尚好不好逻辑验证很好好好好尚好逻辑表示尚好很好好不好好易使用性判定表PDL图PAD图方块图流程图设计工具的选择更大程度上取决于人的因素,而不是取决于技术特性。详细设计完毕,应交付的文件有:详细设计说明书初步的模块开发卷宗。详细设计文件与复审详细设计说明书又称程序设计说明书。编制本说明书的目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如实现算法、逻辑流程等。软件的详细设计完成以后,必须从正确性和可维护性两个方面,对它的逻辑、数据结构和界面等进行检查。详细设计的复审可用下列形式之一完成:设计者和设计组的另一个成员一起进行静态检查。由一个检查小组进行的较正式的“结构设计检查”。由检查小组进行的正式的“设计检查”,对软件设计质量给出严肃的评价。软件开发的实践表明,正式的详细设计复审在发现某些类型的设计错误方面和测试一样有效。正确的态度是:在详细设计复审中,不为设计辩护,而是揭短,揭露出设计中的缺点错误。任何一个程序,都可以仅仅用顺序、条件和重复三种结构化构造来设计和实现,并且将减少程序的复杂性,提高可读性、可测试性和可维护性。用来表示详细设计的工具分成三个大类——图形、列表和语言。详细设计中的设计工具主要有程序流程图、方块图、HIPO图和PAD图、程序设计语言PDL以及判定表等。详细设计产生的主要文件是详细设计说明书,它为编写源代码提供了必要的说明。小结思考与习题5-1举例说明你对概要设计与详细设计的理解。有不需要概要设计的情况吗?5-2请为一个程序进行详细设计,该程序接收一串任意长度的字符串文本作为输入,并列表输出文本中出现的字和每

温馨提示

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

评论

0/150

提交评论