软件工程教学课件第5章详细设计_第1页
软件工程教学课件第5章详细设计_第2页
软件工程教学课件第5章详细设计_第3页
软件工程教学课件第5章详细设计_第4页
软件工程教学课件第5章详细设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

软件工程教学课件第5章详细设计5.1.1详细设计的任务详细设计的任务是为每一个构件确定使用的算法和数据结构。

构件(模块)描述。它描述构件(模块)的功能,以及需要解决的问题,这个构件(模块)在什么时候可以被调用,为什么需要这个构件(模块)。

算法描述。确定构件(模块)存在的必要性之后,就要确定实现这个构件(模块)的算法,描述构件(模块)中的每个算法,包括公式、边界和特殊条件,甚至包括参考资料、引用的出入等。

数据描述。详细设计应该描述构件(模块)内部的数据流。对于面向对象的构件(模块),主要描述对象之间的关系。具体地讲包括:1、算法设计。用图像、表格、语言等工具将每个模块处理过程的详细算法描述出来,确定为实现系统每个模块功能需求所使用的算法和模块间的控制方式(性能设计)。算法的性能设计评测主要指标包括周转时间、响应时间、吞吐量和精度四个方面。2、数据结构设计。结合算法设计,确定详细的数据结构。对需求分析、概要设计确定的概念性的数据类型进行确切的定义。3、物理设计。对数据库进行物理设计,确定数据库的物理结构。分析软件各部分之间的联系,确认接口,复审详细说明书。4、其他设计。根据软件系统的类型,有可能进行为提高数据的输入、分类、存储及检索等操作效率,节省内存空间、对数据库中某些数据项值进行的代码设计;输入/输出格式设计;实时系统人机对话设计上的方式、内容及格式的具体设计等。5.1.1详细设计的任务5.1.1详细设计的任务5、编写详细的说明书。详细设计说明书主要有下列主要内容:(1)引言:包括编写目的、背景、定义、参考资料。(2)程序系统的组织结构。(3)程序1(标识符)——程序n(标识符)设计说明:包括功能、性能、输入、输出、算法、流程逻辑、接口等。6、评审。对处理过程的算法和数据库的物理结构进行评审,为编码阶段做准备。5.1.2详细设计的步骤第一步,设计领域类和结构类中相关的类和模式。第二步,细化模型以确保拥有一个完整的设计,并为每个类指定必需的属性类型和操作。第三步,使用详细设计描述工具(如程序流图、N-S图和PAD图等)为每个类的每一个需求指定一个最优的方法。第四步,拟定单元测试计划,确定单元测试的范围和优先级。第五步,评审类、方法的属性(名称、返回值和参数类型)以及多个模型之间的类和方法的关系,记录数据错误的类型及严重性。5.1.3结构化的详细设计方法结构化程序设计定义:结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。5.1.3结构化的详细设计方法使用结构程序设计技术主要有下述一些好处:(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。(2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。(3)不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致。因此,程序容易阅读和理解,开发时也比较容易保证程序的正确性,即使出现错误也比较容易诊断和纠正。(4)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。5.2详细设计工具图形描述工具又称为详细设计工具,目前流行的工具可以分为三类: 图形工具:如程序流程图、盒图、PAD图、序列图、数据流图。 表格工具:如判定表及判定树。 语言工具:如程序设计语言PDL。5.2.1程序流程图经过改进的程序流程图标记符号:5.2.1程序流程图【例5.1】对某课程成绩统计各分数段人数,请用流程图表示。5.2.1程序流程图 基本控制结构有顺序结构、选择结构和循环结构。循环结构又包括先判定型循环和后判定型循环;选择结构中的case语句可实现多情况的选择。5.2.2盒图(Nassi-Shneiderman图) 盒图也称为N-S图,它是为了满足结构化程序设计对算法设计工具的需要,克服传统设计工具的缺点,特别是为取消流程图的随意转向功能.N-S图表示基本控制结构5.2.3PAD图PAD是问题分析图(ProblemAnalysisDiagram)基于Pascal的控制结构,用二维树图的形式描述程序的逻辑。

PAD基本控制结构图5.2.3PAD图 PAD的执行顺序是从上到下,从左到右,即从最左主干线的上端的节点开始,自上而下依次执行。没遇到判断或循环,就自左而右进入下一层,从表示下一层的纵线上端开始执行,指导该纵线下端,再返回上一层的纵线的转入处。5.2.3PAD图【例5.3】:根据图5-5所示流程图画出相应的PAD图。如图5-11所示。5.2.4判定表 判定表是算法设计辅助工具,专门用于对复杂的条件组合关系及其对应的动作行为等给出更加清晰的说明,能够简洁而又无歧义地描述涉及条件判断的处理规则,并能够配合程序流程图、N-S图、PAD图或PDL伪码等进行程序算法描述。 判定表一般由四个部分组成。其中,表的左上部分列出所有条件,表的左下部分是所有可能出现的动作,表的右上部分用于表示各种可能的条件组合,表的右下部分则是和每种条件组合相对应的动作。这样一来,判定表的右半部分的每一列实质上就构成了一条规则,它规定了与特定的条件组合相对应的动作。图5-12判定表结构示意图5.2.4判定表列出该过程执行时的缩影条件(可判定方式)。把特定的条件组合与特定的动作联系起来,去掉不可能的条件组合,开发每一个可能的条件组合。根据第2步表明每个条件发生的动作,定义处理规则。5.2.4判定表【例5.4】某“订货单处理程序”的处理逻辑描述为:“如果订货金额不足500元且未过期,则向客户发出批准单和提货单,已过期的,什么也不发;如果订货金额超过500元但不足1000元,则发出批准的和提货单,对已过期的,还要发过期通知单;如果订货金额超过1000元,不论是否过期,都要发出批准单和提货单。”使用判定表表示出该逻辑。如表5-1所示.5.2.5判定树判定树时值上是判定表的一种变形,他们只有形式上的差别,本质上是一样的。判定树的优点是形式简单、直观,易于掌握和使用;主要缺点是容易遗漏判断条件。这个缺点可以通过判定表验证来克服。判定表的缺点是简洁性差于判定树,重复多。另外,在组合条件很复杂的情况下,判定树的节点会有较多的分支,从而使判定树的直观性和易读性有所下降。用户可根据自己的习惯选择使用判定表或判定树。他们并不适合作为一种通用的设计工具,通常将之用于辅助测试。5.2.5判定树【例5.5】用判定树表示例5.4的方法。5.2.6过程设计语言PDL PDL(ProcessDesignLanguage)语言也称为伪码,或过程设计语言,它一般是某种高级语言稍加改造后的产物。PDL有如下特点:使用一些固定关键词的语法结构表达了结构化构造、数据描述、模块的特征。自然语言的自由语法描述了处理过程。数据声明包括简单的和复杂的数据结构。使用支持各种模式的接口描述的子程序定义或者调用技术。5.2.6过程设计语言PDL【例5.6】文章中单词拼写检查的使用PROCEDURESPELLCHECKISBEGINSplitdocumentintosinglewords——把整个文档分离成单词Lookupwordsindictionary——把字典中查这些单词Displaywordswhicharenotindictionary——显示字典中查不到的单词ENDSPELLCHECK5.2.7详细设计工具的选择 衡量一个设计工具好坏的一般准则是看其所产生的过程描述是否易于理解、复审和维护,过程描述能否自然的转换为代码,并保证设计与代码完全一致。(1)模块化。支持模块化软件的开发,并提供描述接口的机制(例如直接表示小程序和块结构)。(2)整体简洁性:设计表示相对易学、易用、易读。(3)便于编辑:支持后续设计、测试乃至维护阶段对设计进行的修改。(4)机器可读性:计算机辅助软件工程(CASE)环境已经被广泛接受,一种设计表示法,若能直接输入并被CASE工具识别将带来极大便利。(5)可维护性:过程设计表示应支持各种软件配置项的维护。5.2.7详细设计工具的选择(6)强制结构化:过程设计工具应能强制设计人员采用结构化构建,有助于产生好的设计。(7)自动产生报告:设计人员通过分析详细设计的结果往往能突发灵感,改进设计。若存在自动处理器,能产生有关设计的分析报告,必将增强设计人员在这方面的能力。(8)数据表示:详细设计应具备表示局部与全局数据的能力。(9)逻辑验证:能自动验证设计逻辑的正确性是软件测试追求的最高目标,设计表示愈易于逻辑验证,其可测试性越强。(10)可编码能力:一种设计表示,若能自然的转换为代码,则能减少开发费用,降低出错率。5.2.8详细设计规格说明1.引言1.1编写目的阐明编写本详细设计说明书的目的,指出读者对象。1.2项目背景列出本项目的委托单位、开发单位和主管部门,说明该软件系统与其他系统的关系。1.3定义列出本文档中所用到的专门术语的定义和缩写词的原意。1.4参考资料列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源。包括本项目经核准的计划任务书、合同或上级机关的批文,项目开发计划,需求规格说明书,概要设计说明书,数据库设计说明书,本文档中所引用的资料、采用的标准和规范。5.2.8详细设计规格说明2.总体设计概述2.1需求概述给出关于系统需求方面的必要说明。2.2软件结构可使用软件结构图形式给出系统概要设计中关于软件模块结构及相互关系的说明。3.程序描述需要逐个模块给出以下说明。3.1功能说明该模块的功能设计。3.2性能说明该模块的性能设计。

5.2.8详细设计规格说明3.3输入项目说明该模块的输入参数的名称、数据类型、数目、先后顺序。3.4输出项目说明该模块的输出参数的名称、数据类型、数目、先后顺序。3.5算法说明该模块所选用的算法和流程。3.6程序逻辑详细描述模块实现的算法,可采用标准流程图、PDL语言、NS图、PAD图、判定表等描述算法。5.2.8详细设计规格说明3.7接口使用图表反映本模块的上级模块、下级模块,说明模块之间的调用关系、参数赋值,以及与本模块有关的外部数据源等。3.8存储分配说明该模块在设计时和运行时的物理的和逻辑的绝对位置和相对位置。3.9限制条件说明该模块正常工作的必需条件以及该模块功能的适用范围。3.10测试要点给出测试本模块的主要测试要求,如对测试技术、输入数据、预期结果的规定。5.3面向数据结构的程序设计方法 面向数据结构的设计(datastructured-orinteddesign)是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程序结构。面向数据流的设计来源于程序的模块化和功能分解的概念,而面向数据结构的设计,则着重于问题的数据结构,把程序结构设计成语问题的数据结构一样,不强调模块定义。这种程序结构容易理解,也容易修改。5.3面向数据结构的程序设计方法Jackson结构化编程(JacksonStructuredProgramming,JSP)是一种广泛应用于软件设计的方法。Jackson认为,类似于输入数据和输出数据的结构将能保证设计质量。1989年,Jackson又在这种JSP的基础上扩展了一种Jackson系统开发方法(JacksonSystemDevelopment,JSD)这种方法集中确定信息实体及其活动。在某些方面,它与面向对象设计方法十分相似。Jackson强调实用性,并开发了一些吧数据结构转换为程序结构的实用技术。程序逻辑构造(LogicalConstructionofPrograms,LCP)由Warnier于1974年开发,是一种更加严格的软件设计方法。这种方法是建立在数据结构和过程结构关系上的,Warnier开发了一组技术,用来把I/O数据结构映射为软件的详细过程表达式。数据结构化系统开发(DataStructuredSystemDevelopment,DSSD)也叫做Warnier-Orr方法(1981年,1983年),是一种LCP的扩展,除了设计能力以外,还加强了分析能力。这种方法由Warnier所进行的早期信息域分析工作发展而来。Warnier开发了用三种结构表示信息层次的符号表示,并用实例说没了软件结构可以由数据结构直接导出。Orr扩展了Warnier的工作,该工作包含了在多种意义上更加广泛的信息领域,并已发展成数据结构化系统开发(DSSD)。DSSD研究信息流、功能特征和数据分层等。还有一种技术叫做软件逻辑构造(LogicalConstructionofSoftware,LCS)这种技术室一种数据流和面向对象数据结构综合的设计方法。该方法的开发者认为,如果把软件看做是一个数据集合和数据变换系统,就可以明确地描述软件的逻辑设计。5.3.1Jackson程序设计方法Jackson程序设计方法的基本设计途径是通过分析输入数据与输出数据的层次结构,由此对程序算法的层次结构进行推论。图5-14Jackson基本控制结构图5.3.1Jackson程序设计方法Jackson程序设计步骤:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson数据结构图描绘这些数据。(2)找出输入数据结构和输出数据结构中有直接对应关系的数据单元。这其中的数据直接对应关系是指输出数据与输入数据有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。5.3.1Jackson程序设计方法(3)用下述三条规则从描绘数据结构的Jackson图中导出描绘程序结构的Jackson图:第一,为每对有直接对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次上画一个处理框。其中,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应。第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。5.3.1Jackson程序设计方法(4)列出所有操作和条件,包括分支条件和循环结束条件,并且把它们分配到程序结构图的适当位置上去。(5)用伪码表示程序。其使用的伪码和Jackson图是完全对应的,下面是和三种基本结构对应的伪码。(a)顺序结构AseqBCDAend(b)选择结构AselectcondlBAorcond2CAorcond3DAend(c)重复结构Aiteruntil(或while)condBAend5.3.1Jackson程序设计方法【例5.7】一个正文文件由若干记录组成,每个记录是一个字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.要求: 1)设计程序统计每个记录中空格字符的个数,输出数据的格式是,每读入一个记录(字符串)之后,另起一行打印出这个字符串及其空格数; 2)最后打印出文件中空格的总个数。5.3.1Jackson程序设计方法解:对于这个简单例子而言,输入和输出数据的结构很容易确定。图5-15是用Jackson图描绘的输入/输出数据结构。5.3.1Jackson程序设计方法描绘统计空格程序结构的Jackson图5.3.1Jackson程序设计方法 Jackson程序设计方法的第四步是列出所有操作和条件,并且把它们分配到程序结构图的适当位置。首先,列出统计空格个数需要的全部操作和条件如下:(1)停止(2)打开文件(3)关闭文件(4)印出字符串(5)印出空格数目(6)印出空格总数(7)sum:=sum+1(8)totalsum:=totalsum+sum(9)读入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1I(1)文件结束I(2)字符串结束S(3)字符是空格 在上面的操作表中,sum是保存空格个数的变量,totalsum是保存空格总数的变量,而pointer是用来指示当前分析的字符在字符串中的位置的变量。5.3.1Jackson程序设计方法把这些操作和条件分配到程序结构图的适当位置5.3.1Jackson程序设计方法Jackson方法的最后一步是用伪码表示程序处理过程。因为Jackson使用的伪码和Jackson图之间存在简单的对应关系。5.3.2Warnier程序设计方法Warnier图,先由法国Jean-DominiqueWarnier发明,后经Kenneth-Orr把它用在结构化设计方法中,所以也叫Warnier-Orr图。Warnier图也定义了三种基本结构:5.3.2Warnier程序设计方法Orr对Warnier图进行了扩充,除了能表示三种基本结构外,还用如图5-19所示形式表示并发和递归。5.3.2Warnier程序设计方法Warnier程序设计方法的最终目标同样是得出对程序处理过程的详细描述。第一步,分析和确定输入数据和输出数据的逻辑结构,并用Warnier图描绘这些数据结构;第二步,主要依据输入数据结构导出程序结构,并用Warnier图描绘程序的处理层次;第三步,画出程序流程图并自上而下依次给每个处理框编序号;第四步,分类写出伪码指令,Warnier定义了下列五类指令: (1)输入和输入准备。(2)分支和分支准备。 (3)计算。(4)输出和输出准备。 (5)子程序调用。第五步,把前一步中分类写出的指令按序号排序,从而得出描述处理过程的伪码。5.3.2Warnier程序设计方法【例5.8】假设需要设计一个系统用来定期产生有关顾客账目的报表。已知的输入文件中每个顾客有一个头记录,后接若干个活动(即,事务)记录,也就是说,每个顾客可能有0个、1个或多个活动(事务)。输出报表和输入记录的格式5.3.2Warnier程序设计方法 根据输出报表和输入记录的格式不难得出输出数据和输入数据的逻辑结构,图5-21用Warnier图表示这些数据的结构。图中第4层和笫5层在一定条件下才出现,也就是说,仅当一个顾客有事务活动时(支出或存入时)才出现第4层和第5层。输入数据和输出数据的结构5.3.2Warnier程序设计方法处理层次5.3.2Warnier程序设计方法 Warnier方法的第四步是分类写出伪码指令。考虑图5-23中每个处理框应该做的各类动作并用伪码描述这些动作,结果得到下面的分类指令表。程序流程图5.3.2Warnier程序设计方法分支指令表:(转至)010-若文件没结束()030020-140040-若读出的顾客号=访问的顾客号060050-120070-若有支出代码090080-100100-若读出的顾客号=访问的顾客号070120-若文件没结束()040分支准备:040-顾客号送到访问顾客号5.3.2Warnier程序设计方法计算:040-旧余额送到工作区060-清除支出总数060-清除存入总数080-把存人数加到存入总数中090-把支出数加到支出总数中110-从工作区中减去支出总数110-把存入总数加到工作区中输入:

温馨提示

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

评论

0/150

提交评论