第5章软件详细设计1第五章软件详细设计5.1详细设计的目的与任务5.2结构化程序设计方法5.3详细设计的工具5.4Jackson系统设计方法小结思考与练习返回章目录第5章软件详细设计25.1详细设计的目的与任务软件的详细设计就是对模块实现的过程设计(数据结构+算法)。从软件开发的工程化的观点来看,在进行程序编码以前,需要对系统所采用算法的逻辑关系进行分析,并给出明确、清晰的表述,为后面的程序编码打下基础,这就是详细设计的目的。第5章软件详细设计3为实现上述目的详细设计阶段的主要任务是:1.确定系统每一个模块所采用的算法,并选择合适的工具给出详细的过程性描述;2.确定系统每一个模块使用的数据结构;3.确定系统模块的接口细节,包括系统的外部接口和用户界面、与系统内部其它模块的接口以及各种数据(输入、输出和局部数据)的全部细节;4.为系统每一个模块设计测试用例。以上这些内容所组成的文档就是系统详细设计说明书,这些文档设计完成以后,经过审核合格交付给下一阶段,作为编码的依据。返回节目录第5章软件详细设计4案例要求:任务1:画出管理员后台管理模块的流程图任务2:画出管理员后台管理模块的处理数据类型任务3:确定接口数据——传递数据类型任务4:写出模块的测试用例第5章软件详细设计55.2结构化程序设计方法详细设计的工具是指用来描述程序处理过程的那些表达过程规格说明的工具,它们通常可以分为:图形工具:把过程的细节用图形方式描述出来。表格工具:用一张包含系统输入、处理及输出信息的表格来表达过程的细节。语言工具:用某种语言(伪码)来描述过程细节。第5章软件详细设计61.尽量少用goto语句2.采用自顶向下逐步求精的设计方法和单入单出的控制结构(动态与静态执行情况一致)。3.程序开发采用程序员组的组织形式返回节目录第5章软件详细设计75.3详细设计的工具5.3.1程序流程图5.3.2盒图(N-S图)5.3.3PAD图5.3.4过程设计语言(PDL)5.3.5判定表与判定树返回节目录第5章软件详细设计85.3.1程序流程图程序流程图(programflowchart)又称为程序框图,它是历史最悠久也是软件开发人员使用最广泛的一种算法表达工具。它具有直观、清晰,易于学习。然而它也是用得比较混乱的一种方法。第5章软件详细设计9程序流程图使用五种基本的控制结构,它们是:第5章软件详细设计10例题1:求10!的流程图。AA开始t=1i=2t=i*ti=i+1i11结束输出t真假第5章软件详细设计11程序流程图的主要缺点如下:1.程序流程图从本质上来说不是逐步求精的好工具,它容易使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。2.程序流程图中用箭头代表控制流,程序员可以不顾结构程序设计的精神,随意转移控制,而使程序结构过于混乱。3.程序流程图在表示数据结构方面存在不足。第5章软件详细设计125.3.2盒图(N-S图)特点:(1)功能域(即,一个特定控制结构的作用域)明确,用图形表示,非常清晰。(2)必须遵守结构化程序设计的要求,不能任意转移控制。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。第5章软件详细设计13在N-S图中,为了表示五种基本结构,规定了五种图形结构,具体如下:第5章软件详细设计14例如,将上述例题1和例题2使用N-S图表示如下第5章软件详细设计155.3.3PAD图PAD是问题分析图,它用二维树型结构的图来表示程序的控制流,PAD图也使用五种基本控制结构,具体如下:第5章软件详细设计16练习(画出PAD图)S=1+3+5+…+999。求f(x)=求g(x)=1x00x=0-1x01x0-1x=0第5章软件详细设计17s=0i=1Whilei=999i=i+2s=s+iPrints第5章软件详细设计18InputxF(X)=1F(X)=-1X0T输出F(X)FInputxG(x)=1xX0X=0X0G(x)=0G(x)=-1输出g(X)第5章软件详细设计19PAD图的主要优点如下:(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。(3)用PAD图表现程序逻辑,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5)即可用于表示程序逻辑,也可用于描绘数据结构。(6)PAD图的符号支持自顶向下、逐步求精方法的使用。第5章软件详细设计205.3.4过程设计语言(PDL)PDL具有二重性,一方面具有严格的关键字外部语法,用于定义控制和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是不太严格的,以便可以灵活使用,从而适应各种项目的需要。因此,一般说来PDL是一种“混杂”语言,它通常使用一种自然语言的词汇,但同时却使用另一种结构化的程序设计语言的语法。第5章软件详细设计21第5章软件详细设计225.3.5判定表与判定树判定表可以清晰地描述复杂的条件组合。其优点在于使别人很容易看清楚各种条件组合以及由此产生的各种动作,甚至简单到不需要加以任何说明。第5章软件详细设计23例题(画判定表)有一个基本加工的加工逻辑为:输入两个字符,当第1个字符是A或B,且第2个字符是数字时,修改文件;若第1个字符不是A也不是B时,输出错误信息M1;若第个字符不是数字时,输出错误信息M2。试用判定表来描述上述基本加工。第5章软件详细设计24第一个字符At13Bt2其它字符t3第二个字符数字t42非数字t5123456第一个字符t1t1t2t2t3t3第二个字符t4t5t4t5t4t5修改文件√√输出M1√√输出M2√√√第5章软件详细设计255.4Jackson系统设计方法返回节目录5.4.1Jackson图5.4.2Jackson程序设计方法(JSP)第5章软件详细设计265.4.1Jackson图Jackson图是由方框、连线和一些附加的标记组成。方框内为数据,连线表示由什么组成;标记“。”表示选择;标记“*”表示重复。第5章软件详细设计27第5章软件详细设计285.4.2Jackson程序设计方法(JSP)Jackson结构程序设计方法基本上由下述步骤组成:1.分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。2.找出输入数据结构和输出数据结构中的对应关系。3.由Jackson图导出程序结构。4、列出所有的动作和条件,加入到程序图的适当位置。5、用伪码(PDL)表示。第5章软件详细设计29例题:(用JSP方法设计程序)考试后将考生基本情况文件和考生成绩文件(考分文件)合并为一个考生新文件。考生基本情况文件中的考生记录包括:准考证号、姓名、通信地址;考分文件中的考生记录包括:准考证号、考分;合并后的考生新文件的考生记录包括:准考证号、姓名、通信地址和考分。第5章软件详细设计30分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘数据结构和系统结构。考生情况文件考生记录*I考生新文件考生记录*I考分文件考生记录*I第5章软件详细设计31产生新文件处理考生记录*产生准考证号产生考分产生通信地址产生姓名I第5章软件详细设计32产生新文件处理考生记录*产生准考证号产生考分产生通信地址产生姓名I(1)13672分析考生记录第5章软件详细设计33列出所有的动作和条件,加入到程序图的适当位置。动作:1.打开两个输入文件2.建立输出文件3.从输入文件中各读一条记录4.生成一条新记录5.将新记录写入到输出文件6.关闭所有文件7.停止。条件:I(文件结束)。第5章软件详细设计34小结详细设计阶段其具体任务:得到系统详细的数据结构和设计算法为了使整个过程描述更加清晰和便于维护,一般我们采取自顶向下逐步求精的方法和单入单出的程序控制结构。完成详细设计的主要工具程序流程图、N-S图、PAD图、PDL和判定树及判定表面向数据结构的Jackson设计方法是进行详细设计非常好的一种形式化的方法。返回节目录第5章软件详细设计35作业101页3、4、6