软件工程第六章详细设计

上传人:zhu****ng 文档编号:253036096 上传时间:2024-11-27 格式:PPT 页数:90 大小:685.50KB
返回 下载 相关 举报
软件工程第六章详细设计_第1页
第1页 / 共90页
软件工程第六章详细设计_第2页
第2页 / 共90页
软件工程第六章详细设计_第3页
第3页 / 共90页
点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第六章 详细设计(过程设计、模块设计,),6.1,详细设计概述,6.2,过程设计工具,6.3,面向数据结构的设计方法,6.4,程序复杂度的定量度量,6.5,详细设计说明书,6.1,详细设计概述,6.1.1,详细设计阶段的目标与任务,6.1.2,结构化程序设计,详细设计阶段的目标:,确定应该怎样具体地实现所要求的系统。精确地描述整个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。,详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码.结构程序设计技术是实现上述目标的关键技术,是详细设计的逻辑基础.,6.1.1,详细设计阶段的目标与任务,详细设计的主要任务,主要任务:,编写详细设计说明书,为此,设计人员应:,(1)确定每个模块的算法,用工具表达算法的过,程,写出模块的详细过程性描述。,(2)确定每一模块的数据结构。,(3)确定模块接口细节。,详细设计是编码的先导。,结构化程序设计,逐步求精,三种基本结构,6.1.2,结构化程序设计,结构程序设计的概念最早是由,E. W. Dijstra,提出.,Bohm,和,Jacobini,证明了只要顺序、选择、循环这三种基本结构就能实现任何单入口单出口的程序。,结构程序设计,结构程序设计的经典的定义是:“如果一个程序的代码仅仅通过顺序,选择,和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的”,逐步求精的含义,详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。,总体设计阶段逐步求精的含义:把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统,逐步求精的要领,不要急于用计算机指令、数字和逻辑符号去表示对问题的解法,而是用自然语言(或其他工具)描述问题的解法,最开始的描述处于比较高的抽象层次,接着对抽象描述逐步分解,直到描述能被计算机理解为止。,例子逐步求精,读入三个数,找出并打印其中的最大数,二级求精,将,X1,与,X2,的大数存于,MAX,中,If x1x2 then max=x1 else max=x2,将,X3,与,MAX,的大数存于,MAX,中,If x3max then max=x3,一级算法,输入,X1,X2,X3,将,X1,与,X2,的大数存于,MAX,中,将,X3,与,MAX,的大数存于,MAX,中,输出结果,B,exp,A,A,B,exp,A,A,exp,T,F,T,T,F,F,顺序结构,选择结构,循环结构,1)“当”型循环,2)直到型循环,三种基本的控制结构,结构程序设计技术的优越性,(1),自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。,(2),用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。,(3),不使用,GO TO,语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。,(4),控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅。,(5),程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。,(6),程序的逻辑结构清晰,有利于程序正确性证明。,6.2,过程设计的工具,过程设计工具包括,图形,表格, 语言三类.,不论是哪一类工具,都应该指明控制流,处理功能,数据组织以及其它方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码.,描述程序处理过程的工具称为过程设计工具,1. 程序流程图,2. 盒图(,N-S,图),3. 问题分析图(,PAD),5.,过程设计语言(,PDL)(,伪码),4.,判定树与判定表,程序流程图的标准符号,示例,盒图(,N-S,图),用方框图代替传统的流程图,描述五种基本控制结构的图形构件,(1) 顺序型,A,B,C,(2) 选择型(,If then else),A,B,F,条件,T,A,F,T,条件,then ,部分,then ,部分,else,部分,If then else,If then,(3)多分支选择型(,CASE,型),A,1,值1,A,2,A,n,.,.,条件,值2,值,n,(4),WHILE,重复型 (5),UNTIL,重复型,S,(,循环体),DO-WHILE P,S,(,循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),循环条件,(6) 移出标记,A,C,B,F,X6,T,A:,D,(调用结构),1)功能域(即一个特定控制结构的作用,域)明确,2)不可能任意转移控制,3)很容易确定局部和全程数据的作用域,4)很容易表现嵌套关系,也可以表示模块,的层次结构,N-S,图的特点,N-S,图示例,a,b,条 件,1,T,F,Case Xi, i=2,3,4,X2,X3,X4,当条件,3,成立,条 件,2,直到条件,4,成立,直 到 条 件 成立,c,d,e,f,g,h,i,j,顺序结构,选择结构,多分支选择结构,先判定型循环结构,后判定型循环结构,F,T,T,F,例,1:,start,if p then,while q do,f,end do,else,block,g,n,end block,endif,stop,例,2:,以下是两个程序流程图,试用,NS,图表示。,问题分析图(,PAD),(,Problem Analysis Diagram),A,B,C,A,B,T,F,条件,基本控制结构:,(1)顺序结构,(2)选择结构,(3)重复结构,WHILE,C,S,UNTIL,C,S,(先测试循环),(后测试循环),等价的,PASCAL,语言:,REPEAT C UNTIL S,等价的,PASCAL,语言:,WHILE C DO S,(4) 多分支选择型(,CASE,型),A1,值1,值2,值,n,A2,An,.,.,.,.,.,.,条件,走图,PAD,图的结构类似树型结构,如果按照自上而下、自左而右的顺序走树,即可将,PAD,图转换为相应的算法乃至程序。,例,1:,start,if p then,while q do,f,end do,else,block,g,n,end block,endif,stop,例,2:,以下是两个程序流程图,试用,PAD,图表示。,使用,PAD,符号设计的程序必然是结构化的程序.,PAD,图所描绘的程序结构十分清晰.,用,PAD,图表现程序逻辑,易读,易记,易懂.,容易将,PAD,图 转换成高级语言源程序.可用软件工具实现自动转换.,即可以表示程序逻辑,也可以描绘数据结构.,支持自顶向下,逐步求精方法的使用.,PAD,图的优点:,判定表,程序流程图、,N-S,图、,PAD,图都不易清楚的描述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系,。,一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作.判定表右半部实质上是一条规则,规定了与特定条件组合相对应的动作.,所有条件,条件组合矩阵,与每种条件组合,所对应的动作表,所有可能的,动作列表,国内乘客,头 等 舱,残疾乘客,行李30,kg,免费,(,W-30)*2,(,W-30)*3,(,W-30)*4,(,W-30)*6,(,W-30)*8,(,W-30)*12,T,T,T,F,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,例,1,假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量 超过30公斤时,对头等舱的国内乘客超重部分每公斤收费 4 元,对其它舱的国内 乘客超重部分每公斤收费 6 元,对外国乘客超重部分每公斤收费比国内乘客多一 倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表来表示与上述 每种条件组合相对应的动作。,用判定表表示计算行李费算法,1,2,3,4,5,教授,T,F,F,F,副教授,F,T,F,F,讲师,F,F,T,F,助教,F,F,F,T,讲座,T,F,F,F,F,50,30,25,20,15,例,2,:某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是,50,元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授,30,元,副教授,25,元,讲师,20,元,助教,15,元。,行李费,算 法,行李重量,W30,国内乘客,外国乘客,头等舱,其它舱,残疾乘客 - (,W-30)*2,正常乘客 - (,W-30)*4,残疾乘客 - (,W-30)*3,正常乘客 - (,W-30)*6,头等舱,其它舱,残疾乘客 - (,W-30)*4,正常乘客 - (,W-30)*8,残疾乘客 - (,W-30)*6,正常乘客 - (,W-30)*12,行李重量,W30,免费,判定树是判定表的变体,其优点是形式简单,不需要任何说明,一眼就可以看出它的含义.,判定树,例,1,、某厂对部分职工重新分配工作的政策是:,年龄在,20,岁以下者,初中文化程度脱产学习。,高中文化程度当电工;年龄在,2040,岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。年龄在,40,岁以上者,中学文化程度当材料员,大学文化程度当技术员。请用判定表或判定树描述上述问题的加工逻辑。,分析:本题条件包括年龄、文化程度、性别,三个,构成的判定条件取值表如表,33,所示,所有的组合条件为,3X3x2,18,2,、用判定表描述“检查定货单”的处理逻辑:“如果金额超过,1000,元而又未过期,则发出批准单和提货单。如果金额超过,2000,元,但已过期,则不发出批准单和提货单。如果金额低于,2000,元,则不论是否过期,都发出批准单和提货单,而且对低于,2000,元已过期的还需发出通知单”。,Jackson,图表示方法,Jackson,图,6.3,面向数据结构的设计方法,Jackson,图的优点:,(1),Jackson,图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;,(2),Jackson,图形象直观,可读性好;,(3),Jackson,图不仅能表示数据结构,也能表示程序结构(因为程序结构也可以由上述3种基本结构组成)。,Jackson,图的缺点:,在选择结构和重复结构中,选择条件或循环结束条件不能直接在,Jackson,图中表示出来。这样就影响了图形的表达能力,也不利于直接把图翻译成程序。,Jackson,图的优点,缺点,改进的,Jackson,图,Jackson,程序设计方法,例:高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。,第一步 利用,Jackson,图描述数据结构,对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用,Jackson,图描述这些数据结构。,Jackson,程序设计方法由五个步骤组成:,第二步 找出输入数据结构和输出数据结构 的对应关系,找出输入数据结构和输出数据结构中有对应关系的数据单元,即有直接因果关系、在程序中可以同时处理的数据单元。需要注意的是,对于重复的数据单元,必须是重复的次序、次数都相同才有可能有对应关系。,第三步 确定程序结构图,根据下述三规则,由,Jackson,图导出相应的程序结构图:,(1)为每对有对应关系的数据单元,按照它们在数据结构图中所处的层次,在程序结构图中的相应层次画一个处理框。如果这对数据单元在输入数据结构图和输出数据结构图中所处的层次不同,那么应以它们在输入数据结构图和输出数据结构图中层次较低的那个层次作为它们在程序结构图中的处理框所处的层次;,(2)对于输入数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框;,(3)对于输出数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框。,实际上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元则各画一个处理框。,第四步 列出并分配所有操作和条件,列出所有操作和条件(包括分支条件和循环结束条件),并把它们分配到程序结构图的适当位置。,操作:(1)停止;,(2)打开两个输入文件;,(3)建立输出文件。,(4)从输入文件中各读一条记录。,(5)生成一条新记录。,(6)将新记录写入输出文件。,(7)关闭全部文件。,条件:,I(1),文件结束。,把操作和条件分配到程序结构图的适当位置,第五步 用伪码表示程序,Jackson,方法中使用的伪码与,Jackson,图是完全对应的。针对三种基本程序结构,有相对应的,Jackson,伪码。,(1)顺序结构,A seq,B,C,D,A end,(2)选择结构,(3)重复结构,A select condition1,B,A or condition2,C,A or condition3,D,A end,A iter until(,或,while)condition,B,A end,Jackson,伪码描述的程序,产生通讯地址,产生姓名,产生准考证号,处理考生记录,seq,分析考生记录,iter until,文件结束,从输入文件中各读一条记录,打开两个输入文件,产生新文件,seq,产生考分,生成一条新记录,将新记录写入输出文件,从输入文件中各读一条记录,处理考生记录,end,关闭全部文件,停止,产生新文件,end,分析考生记录,end,6.4,程序复杂度的定量度量,利用软件设计的基本原理和概念可以定性,的衡量软件模块的质量。但定量的度量程序复杂程度的方法很有价值:,估算程序中软件故障的数量;,估算软件开发的工作量;,比较两个不同的设计或两个不同算法 的优劣 ;,作为模块规模的精确上限。,程序定量度量方法是一个有待进一步研究的重要领域。,1),McCabe,方法,程序图, 把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为,流图,.程序图仅仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。,入口点,:程序图中开始点后面的那个节点。,出口点,:程序图中停止点前面的那个节点。,用,McCabe,方法度量得出的结果称为程序的环形复杂度。,程序的环形复杂度 = 强连通图中线性无关的有向环的个数。,2)环形复杂度的计算方法,在一个强连通的有向图中,线性无关环的 个数由以下公式确定:,V(G) = m n + 2,其中:,V(G) -,有向图,G,中的环数。,m -,有向图,G,中的弧数。,n -,有向图,G,中的节点数。,流图中的区域数等于环形复杂度。,流图的,环形复杂度,V(G),P,1,p,表示流图中的判定结点的个数,K=0 L=0,TOTAL=0,输入,A,Do while,TOTAL 1000,and A 0,A0,TOTAL=TOTAL+A,K=K+1,输入,A,L=L+1,停止,b,c,d,e,f,g,h,i,k,输出,K,L,TOTAL,j,b,c,d,e,f,g,h,j,i,k,V(G)=11-10+2=3,1,1,条弧,1,0,个节点,3) 环形复杂度的用途:,程序的环形复杂度与程序控制流的复杂程度,也就是与程序结构的复杂程度有关。程序内分支数或循环个数增加时,环形复杂度就增加,因此它是对测试难度的一种度量,也能对软件最终的可靠性给出某种预测。,McCabe,发现:环形复杂度高的程序往往是最,困难、最容易出问题的程序。,实践表明: 模块规模以,V( G) 10,为宜。,也就是说,V( G)= 10,是模块规模的一个更科学更精确的上限。,Halstesd,方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度.,H,表示预测的程序长度, 为程序中运算符出现的次数, 为程序中操作数出现的次数,为程序长度.,实践证明,预测的长度 与实际的长度 非常接近.,6.5,详细设计说明书,引言,程序系统的组织结构,关键程序的设计说明,详细设计说明书规格,例,1,例,2,例,3,填空题,1,详细设计阶段主要完成的任务是,。,2,软件的详细设计可以采用,、,、,三种形式的描述工具表示模块的处理过程。,设计出模块的执行过程。,图、表、过程设计语言,3,Jackson,方法可以实现从,中推导出,程序结构,数据结构,4.,程序流程图称,, 包括三个基本的成分:,,,,,。,5.,为了实现使用程序流程图描述结构化程序,,必须限制程序流程图只使用以下五种基本控制结构,、,、,、,、,。,6.PAD,图是一种描述程序逻辑结构的图形工具,,这种图形由程序流程图演化而来,它把程序的结构,表示成,结构。,程序框图 加工处理步骤 逻辑条件 控制流向,顺序型 选择型 先判定(,while,)型循环,后判定(,until,)型循环 多情况(,case,)型选择,二维树型,7.,过程设计语言属于一种,,是一种描述,的语言。,8.Jackson,方法简称,JSD,,是一种典型的,的设计方法。,面向数据结构,伪码 模块算法设计及处理细节,1,软件详细设计阶段的任务是,( ),。,A.,算法设计,B.,功能设计,C.,调用关系设计,D,输入,/,输出设计,选择题,2,软件详细设计阶段主要采用的工具是,( ),A.DFD B,PAD,C.DD D,SA,A,B,3.,软件详细设计阶段采用自左向右的二维图形结构描述算法的是,().,A,IPO B,JSP,C,PAD D,JSD,C,4,软件详细设计阶段的任务是,( ),。,A.,确定程序文件名,B.,确定模块的算法,C.,确定变量名,D,确定使用的语言,B,5.,结构化程序设计采用的思想是,( ),。,A.,筛选法,B,逐步求精法,C.,迭代法,D,递归法,B,6.,软件详细设计阶段属于软件生存周期的,( ),阶段。,A.,需求分析,B,软件设计,C,编码,D,软件维护,B,7.,以语言形式描述模块算法的是,( ),。,A.PAD B.,程序流程图,C.PDL D.,盒图,C,8,、为了使程序能在不同的计算机上运行,,程序应当具有较好的(),A.,可移植性,B,可重用性,C.,可维护性,D,可适用性,A,9,、下列属于功能性注释的是,( ),。,A.,说明模块的用处和功能的注释,B.,说明数据的名称和用处的注释,C.,说明程序段的注释,D.,说明程序开发背景的注释,C,10.,下面对提高程序编码效率没有影响的是,( ),。,A.,选择良好的设计方法,B,选择良好的算法,C.,选择良好的数据结构,D,变量名的使用,D,11.,软件详细设计的主要任务是确定每个模块的(),A.,功能,B.,外部接口,C.,算法和使用的数据结构,D.,编程实现,12.,下面关于,PDL,语言不正确的说法是(),A.PDL,的外层语法必须符合一般程序设计语言,常用的语法规则,B.PDL,是一种伪码,C.PDL,只是描述加工的具体实现,D.PDL,是描述处理过程怎么做,13. PAD,图在()可以大大提高开发效率,A.,系统分析,B.,自动分析数据,C.,软件的自动化生成,D.,测试软件,C,C,C,14.,下列工具在软件详细设计过程中不常用的是(),A.PDL B.NS,图,C.DFD,图,D.PAD,图,15.Jackson,方法是软件设计中用到的一种常用的设计,方法,使用,Jackson,方法可以实现()。,A.,从模块结构中导出数据结构,B.,从模块结构中导出程序结构,C.,从数据流图中导出初始的结构图,D.,从结构图导出程序结构,C,D,应用题,begin,s1,;,if x,5 then s2 else s3,;,while y,O do,begin,if z,3 then s4 else s5,;,if w0 s6,;,s7;,end,s8,;,if u0 then s9;,s10;,end,1.,将下面的伪码表示转换为,PAD,图,1.答案,3.,将下图所示的,PAD,图转换为伪码表示。,while A do,if x0 then x1 else x2,;,if y0 then begin,y1,;,if z0 then z1 else z2;,end,else y2,;,y3;,end;,3.,答案,4.,以下是两个程序流程图,试分别用,NS,图,和,PAD,表示,并计算它们的,McCabe,复杂性,度量。,4.,答案,对应的,NS,图如下:,对应的,PAD,图如下:,McCabe,复杂性度量都为,3,。,V(G) = m n + 2,作业,1.,简要叙述,NS,图具有的特点,2.,简要叙述,PAD,图具有的特点,3.Jackson,方法的核心思想是什么?,4.,将下列的伪代码用,PAD,表示出来,N=0;,DO while N20,If S(N)=S(N+1) then Min=S(N),else Min=S(N+1),endif,N=N+1;,END DO,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!