软件工程第5章传统软件设计

上传人:青*** 文档编号:243141923 上传时间:2024-09-16 格式:PPTX 页数:78 大小:1.23MB
返回 下载 相关 举报
软件工程第5章传统软件设计_第1页
第1页 / 共78页
软件工程第5章传统软件设计_第2页
第2页 / 共78页
软件工程第5章传统软件设计_第3页
第3页 / 共78页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,Software Engineering,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Software Engineering,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Software Engineering,软件工程(run jin n chn)Software Engineering,计算机学院(xuyun) 软件工程课程组,第一页,共78页。,软件(run jin)生存期,维护(wih),软件(run jin)计划,需求分析,测试,软件设计,实现(编码),定义时期 开发时期 使用和维护时期,退,役,第二页,共78页。,第5章传统(chuntng)软件设计方法,概要设计和详细(xingx)设计阶段的任务是什么?,什么是结构化设计方法?,结构化设计与结构化分析的关系?,什么是面向数据结构的设计方法?,什么是结构化程序设计?,常用的过程设计工具?,第三页,共78页。,一、软件设计的任务(rn wu)和作用,两个(lin )阶段,概要设计,详细设计,SE核心(hxn)过程,第四页,共78页。,第五页,共78页。,二、设计(shj)的启发规则,1、提高模块独立性,松耦合,高内聚,增加(zngji)内聚 减少耦合,第六页,共78页。,软件结构的划分(hu fn)方式,水平划分(hu fn),垂直划分(hu fn),第七页,共78页。,水平(shupng)划分(Horizontal Partitioning),按主要功能定义模块(m kui)结构的各分支,顶层控制模块(m kui),下层输入、处理、输出三个分支,优点:功能分离,易修改扩充,缺点:模块(m kui)接口传递数据多,信息流的整体控制复杂化,function 1,function 3,function 2,第八页,共78页。,垂直(chuzh)划分(Vertical Partitioning: Factoring),自顶向下逐层分布工作,顶层模块控制,低层模块实际处理,优点:对低层模块的修改(xigi)不易引起副作用,便于将来的维护,第九页,共78页。,设计的启发(qf)规则,2、模块规模适中,过大不易理解,分解(fnji)不充分,太小则接口开销过大,注意分解(fnji)后不应降低模块的独立性,optimal number,of modules,cost of,software,number of modules,module,integration,cost,module development cost,第十页,共78页。,设计(shj)的启发规则,3、深度、宽度(kund)、扇入、扇出适当,深度 = 层数,过大表示分工过细,管理模块过分简单,适当合并,宽度 = 跨度数的最大值,过大表示系统(xtng)复杂,第十一页,共78页。,设计的启发(qf)规则,扇出 = 模块(m kui)直接调用/控制的模块(m kui)数,fan-out 5,扇入 = 直接调用该模块(m kui)的上级模块(m kui)数,fan-in 5,A,A,的扇出,A,A,的扇入,第十二页,共78页。,设计的启发(qf)规则,4、作用域在控制域内,控制域,模块本身以及所有直接或间接从属于(shy)它的模块的集合,作用域,受该模块内一个判定影响的所有模块的集合,M,A,C,B,A,B,C,If,flag,Then B,Else C,M的控制(kngzh)域,= M, A, B, C,A的作用域=B, C,第十三页,共78页。,作用域在控制(kngzh)域内,修改软件结构,判断点上移,把A中的 if 移到M中,受影响(yngxing)块下移,把C移到A下面,A:,if ,then goto B1,B:,B1:,A作用域在控制域内,M,A,C,B,A的控制域= A, B,A:,if ,then goto M,M:,M1: goto C,A作用域超出了控制域,C:,第十四页,共78页。,设计的启发(qf)规则,5、降低接口的复杂程度,接口复杂可能表明模块(m kui)的独立性差,接口复杂或不一致(看起来传递的数据间无联系),是紧耦合或低内聚的征兆,第十五页,共78页。,【例】,求一元二次方程的根,解法1,Var,a,b,c, x1, x2 :real;,Begin,read(a,b,c);,P,;,write(x1,x2),End.,Procedure P;,begin,end;,解法2,Type,TA=array1.3 of real;,TB=array1.2 of real;,Var A: TA; B:TB;,Begin,read(A1, A2, A3);,P(A, B),;,write (B1, B2),End.,Procedure A(A:TA; var B:TB);,begin,end;,解法3,Var,a,b,c, x1, x2 :real;,Begin,read(a,b,c);,P(a,b,c,x1,x2),;,write(x1,x2),End.,Procedure,P(a, b, c:real; var x1,x2:real);,begin,end;,全局变量,紧耦合!,可读性差!,局部变量,可读性好!,第十六页,共78页。,设计的启发(qf)规则,6、单出单入,避免内容耦合,7、模块功能可预测,相同(xin tn)输入必产生相同(xin tn)输出,模块中使用全局变量可能导致不可预测,A:,entry 1:,entry 2:,第十七页,共78页。,三、表示软件结构的图形(txng)工具,层次(cngc)图和HIPO图,结构图,第十八页,共78页。,1. 层次(cngc)图和HIPO图,层次(cngc)图(Hierarchy Diagram),正文加工系统,编辑,3.0,加标题,4.0,输出,2.0,存储,5.0,插入,3.3,删除,3.2,追加,3.1,修改,3.4,合并,3.5,列表,3.6,改写,3.4.1,输入,1.0,检索,6.0,编目录,7.0,格式化,8.0,第十九页,共78页。,层次(cngc)图,描述软件结构,而非数据结构,矩形框:模块,连线:调用(dioyng)关系,而非组成关系,模块a,模块b,第二十页,共78页。,HIPO图,H图 + IPO图(Input-process-output Diagram),对每个模块附一张IPO图,每个IPO图中应明确(mngqu)标出对应模块的编号,第二十一页,共78页。,IPO图,旧的主文件,事务文件,1.校验主记录,2. 校验,事务记录,3. 更新,主记录,有效的主记录,有效的,事务记录,更新后的,主文件,Input,Process,Output,第二十二页,共78页。,IPO表,被调用:,调用:,输入:,输出:,处理:,局部数据元素:,注释:,系统:作者:,模块:日期:,编号:,IPO表,第二十三页,共78页。,2. 结构图(Structured Diagram),数据传递,控制信息,或,循环,B,A,M,M1,M2,M3,C,D,第二十四页,共78页。,【例】,结构图,产生最佳解,得到输入,计算最佳解,输出结果,读输入,编辑输入,结果格式化,显示结果,输入,原始输入,原始输入,编辑结果,解,输,入,解,解,格式化的解,格式化的解,第二十五页,共78页。,四、软件系统设计(shj)技术,面向数据流(DFD)的设计方法(fngf),面向数据结构的设计方法(fngf),原型法,第二十六页,共78页。,结构化设计(shj)(Structured Design, SD),基于模块化、自顶向下求精、结构化程序设计(shj)技术基础上发展起来,面向数据流的设计(shj)方法,数据流图映射到软件结构,用启发式规则对结构进行细化,第二十七页,共78页。,1. 面向数据流(DFD)的设计(shj)方法,Program,Architecture,Data Flow Diagram,第二十八页,共78页。,(1)DFD的类型(lixng),DFD的类型决定了映射(yngsh)的方法,变换流,事务流,混合型,第二十九页,共78页。,变换(binhun)流(Transform Flow),所有(suyu)信息流都可归结为变换流,Internal representation,Information,Transform flow,Outgoing,flow,Incoming,flow,External representation,Time,第三十页,共78页。,变换(binhun)型的软件结构图,第三十一页,共78页。,事务(shw)流(Transaction Flow),当信息流具有明显(mngxin)的“事务中心”时,可归结为事务流,T,Transaction,request,Action paths,T = Call one of the several subroutines depending on,the type of the incoming transaction request.,第三十二页,共78页。,事务(shw)型的软件结构图,第三十三页,共78页。,混合型,两种DFD的混合体,第三十四页,共78页。,(2)面向数据流方法(fngf)的设计过程,“变换”,“事务”,精化数据流图,流类型,区分事务中心和数据接收通路,区分输入和,输出分支,映射成事务结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和,全程数据结构,复查,详细设计,变换设计,事务设计,“Get it to work, then make it fast.”,第三十五页,共78页。,DFD, System Hierarchy,(3)从DFD导出软件(run jin)结构图,变换(binhun)设计,事务设计,综合设计法,第三十六页,共78页。,变换(binhun)设计,M,P,I,O,Internal representation,Information,Transform flow,Outgoing,flow,Incoming,flow,External representation,Time,第三十七页,共78页。,【例】 汽车数字(shz)仪表板的设计,功能: 通过模 - 数转换实现传感器和微处理机接口;, 在发光二极管面板上显示数据;, 指示(zhsh)每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;, 指示(zhsh)加速或减速;, 如果车速超过55mph ,则发出警告铃声。,第三十八页,共78页。,确定输入(shr)流和输出流的边界,燃料流,传感器信号,SPS,旋转信号,读,旋转信号,收集和求平均,确定加/减速,转换成,转/分,计算里程,计算,mph,超速值,产生,加/减速显示,计算燃料消耗,计算,gph,读和校核,产生,mpg,显示,产生,mph,显示,发出铃声,产生里程显示,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph,显示,mpg,显示,第三十九页,共78页。,第一级分解(fnji)方法,M,P,I,O,第四十页,共78页。,第一级分解(fnji),燃料流,传感器信号,SPS,旋转信号,读,旋转信号,收集和求平均,确定加/减速,转换成,转/分,计算里程,计算,mph,超速值,产生,加/减速显示,计算燃料消耗,计算,gph,读和校核,产生,mpg,显示,产生,mph,显示,发出铃声,产生里程显示,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph,显示,mpg,显示,第四十一页,共78页。,第一级分解(fnji),数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,输入控制,变换控制,输出控制,第四十二页,共78页。,第二级分解(fnji),A,D,C,B,M,I,每个加工映射成受P 控制的一个下层模块,P,由边界向外移动,将每个遇到的加工映射成 I 控制下的一个低层模块,I,沿输出通路向外移动,将每个加工映射成直接或间接受O控制的低层模块,O,C,B,D,A,第四十三页,共78页。,系统软件(x tn run jin)结构,数字(shz)仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,计算(j sun)gph,转换成,rpm,读燃料流,收集,sps,读旋转信号,确定加/减速,计算,mph,计算,mpg,计算里程,加/减速,显示,显示,mph,显示,mpg,显示里程,发出铃声,发光二极管,显示,转换成,rpm,求精:高内聚、低耦合!,第四十四页,共78页。,求精系统软件(x tn run jin)结构,数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,计算,gph,读燃料流,读旋转信号,确定加/减速,计算,mph,计算,mpg,计算里程,加/减速,显示,显示,mph,显示,mpg,显示里程,发出铃声,发光二极管,显示,转换成,rpm,第四十五页,共78页。,模块(m kui)说明,为每个模块(m kui)附一个简要说明 / IPO表,进出该模块(m kui)的信息(接口描述),模块(m kui)内部的信息,过程陈述,包括主要判定点及任务等,对约束和特殊特点的简短讨论,第四十六页,共78页。,T,事务(shw)设计,T,Transaction,request,Action paths,I,II,B,A,C,第四十七页,共78页。,事务设计的映射(yngsh)方法,M,II,I,T,A,B,C,I,II,T,B,A,C,第四十八页,共78页。,综合(zngh)设计法,变换设计,事务设计,优化,控制模块的合并(hbng),控制模块的分解,第四十九页,共78页。,SA/SD方法(fngf)的特点,优点,自顶向下,逐步求精,各模块(m kui)可单独设计、编码、测试、修改,缺点,纸上设计,长时间偏离软件实体,开发周期长,剥离了数据/功能的关系,顶在何方?下到何处?,第五十页,共78页。,2. 面向数据结构的设计(shj)方法,Jackson方法(fngf)(Jackson System Development, JSD),Warnier方法(fngf),数据结构(sh j ji u) 程序处理过程,第五十一页,共78页。,(1)Jackson图(Jackson Diagram),顺序结构(jigu),选择结构(jigu),重复结构(jigu),A,B,C,D,A,B,C,D,A,B*,第五十二页,共78页。,(2)改进(gijn)的Jackson图,A,B,C,D,顺序结构,A,B,C,D,S(i),选择结构,A,B,S(i),可选结构,A,B*,I(i),重复结构,第五十三页,共78页。,(3)Jackson方法(fngf),画出一输入、输出数据结构的Jackson图,找输入输出数据结构的对应关系,以输出数据结构为基础导出程序结构,有关系的数据单元(dnyun) 合画一个处理框,输入数据结构中余下的数据单元(dnyun) 各画一个,输出数据结构中余下的数据单元(dnyun) 各画一个,列出所有操作、条件,伪码表示程序,第五十四页,共78页。,【例】统计正文文件(wnjin)空格数,一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格(kn )字符的个数,以及文件中空格(kn )字符的总个数。,要求的输出数据格式是:每复制一行输入字符串之后,另起一行印出这个字符串中的空格(kn )数,最后印出文件中空格(kn )的总个数。,第五十五页,共78页。,数据结构(sh j ji u)的Jackson图,正文文件,输入数据结构,字符串*,字符*,空格,非空格,I(1),I(2),S(3),输出表格,输出数据结构,表格体,串信息*,字符串,空格数,I(1),空格总数,2层,3层,3层,4层,4层,5层,1层,1层,?,?,第五十六页,共78页。,分析字符*,处理空格,处理非空格,I(2),S(3),程序结构的Jackson图,统计(tngj)空格,处理字符串*,I(1),印字符串,印空格数,程序体,印空格总数,正文文件,输入数据结构,字符串*,字符*,空格,非空格,I(1),I(2),输出表格,输出数据结构,表格体,串信息*,字符串,空格数,空格总数,2层,3层,3层,4层,4层,5层,1层,1层,S(3),I(1),I(1) 文件(wnjin)结束,I(2) 字符串结束,S(3) 字符是空格,sum 空格数,totalsum 空格总数,pointer 当前位置,第五十七页,共78页。,分配了所有(suyu)操作、条件后的程序结构图,统计(tngj)空格,处理(chl)字符串*,I(1),印字符串,印空格数,程序体,印空格总数,分析字符串,分析字符*,处理空格,处理非空格,I(2),S(3),totalsum:=0,读入字符串,打开文件,sum:=sum+1,停止,关闭文件,sum:=0,pointer:=1,读入,字符串,totalsum:=,Totalsum+sum,pointer:=pointer+1,pointer:=pointer+1,第五十八页,共78页。,伪码表示(biosh)程序处理过程,统计空格seq,打开文件(wnjin),读入字符串,totalsum:0,程序体iter until 文件(wnjin)结束,处理字符串seq,印字符串seq,印出字符串,印字符串end,sum:= 0,pointer: l,分析字符串 iter until 字符串结束,分析字符select 字符是空格,处理空格seq,sum:sum+1,pointer: pointer +1,处理空格end,分析字符or 字符不是空格,处理非空格seq,pointer:= pointer +1,处理非空格end,分析字符end,分析字符串end,印空格数Seq,印出空格数目(shm),印空格数end,totalsum: totalsum + sum,读入字符串,处理字符串end,程序体end,印总数seq,印出空格总数,印总数end,关闭文件,停止,统计空格end,第五十九页,共78页。,JSD方法(fngf)的特点,优点,面向数据的方法,适合于以数据为主,计算较简单的事务型处理系统,简化数据处理部分的设计,缺点,模块与独立性原则没有给予应有重视,未提供对复杂系统设计过程的支持(zhch),不适合于大型实时系统,非数据处理系统的开发,第六十页,共78页。,原型法又称为“快速弱功能”法,其核心思想是快速建立(jinl)一个实现了系统若干功能的(不要求全)可执行原型,来启发、揭示并能不断完善,直到满足用户全部要求为止,建立(jinl)规范模型的步骤,弄清用户设计者的基本信息需求,开发初始原型系统,用原型系统完善用户设计者的需求,修改和完善原型系统,第六十一页,共78页。,原型(yunxng)法模式,需求(xqi),报告(bogo),开发,原型,满意,完善,业务系统,第六十二页,共78页。,4、过程(guchng)设计,i,n,t,e,r,f,a,c,e,d,e,s,i,g,n,a,r,c,h,i,t,e,c,t,u,r,a,l,d,e,s,i,g,n,d,a,t,a,d,e,s,i,g,n,THE DESIGN MODEL,p,r,o,c,e,d,u,r,a,l,d,e,s,i,g,n,第六十三页,共78页。,5. 详细(xingx)设计,详细(xingx)设计的任务,详细(xingx)设计的常用工具,详细(xingx)设计的过程,详细(xingx)设计复审,详细(xingx)设计文档,第六十四页,共78页。,一、详细设计(shj)的任务,详细设计的总体目标是确定每个单元的具体实现算法,即对软件结构图中的每个模块进行分析、设计出全部必要的过程细节,并给予清晰的表达, 从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。,详细设计也叫做过程设计或程序设计,它不同于编码或编程。在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。为此(wi c)应提供详细设计的表达工具。,第六十五页,共78页。,二、详细(xingx)设计表示法,流程图,PDA,伪码,第六十六页,共78页。,1.程序(chngx)流程图(PFD),第六十七页,共78页。,例:求n个元数组数中的最大值,第六十八页,共78页。,2.问题(wnt)分析图(PAD),第六十九页,共78页。,例:求一组数中的最大值,第七十页,共78页。,PDL,(Program Design Language),PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。有多种不同的形式。,伪码的语法规则分为(fn wi)“外语法”和“内语法”。,PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它又有灵活、自由的表示实际操作和条件的内语法,第七十一页,共78页。,例:求一组数中的最大值,Declare int array A,Get(Array A),MAX=A(1),For i=2 To N,If MAXA(i),Set MAX=A(i),EndIf,EndFor,Put(MAX),第七十二页,共78页。,三、详细(xingx)设计的过程,为每个模块确定采用的算法,并用适当的工具表达算法的过程,给出详细的描述。,确定每一模块使用的数据结构(sh j ji u)和模块接口的细节,包括内部接口、外部接口、模块的输入、输出及局部数据等。,为每个模块设计一组测试用例,以便在编码阶段对模块代码进行预定的测试。,编写详细设计说明书,提交审查,第七十三页,共78页。,四、详细(xingx)设计复审,详细设计要提交的文档包括详细设计说明书、初步的用户手册和测试计划等。对于提交的文档,必须(bx)进行全面、仔细的复审。,详细设计复审有项目组织部门将软件详细设计文档分发给评审专家小组,进行全面的讨论和审查,给出审查结论,提出问题或建议,第七十四页,共78页。,1. 结构(jigu)程序设计(Structured Programming, SP),Edsger Wybe Dijkstra,1930-2002,“GOTO statement considered harmful,第七十五页,共78页。,什么(shn me)是结构程序设计,1974年Gries(Structures Programming,SP)归纳为13种不同(b tn)解释,下面是几种有代表性的解释:,SP是避免用GOTO语句的一种程序设计。,SP是自顶向下的程序设计。,SP是一种组织和编程的方法,按SP方法编程易于理解和修改,第七十六页,共78页。,什么(shn me)是结构程序设计(续),SP的主要作用是使程序正确性的证明易于实现。,SP允许在设计过程中的每一步去验证其正确性。,SP讨论了如何将任何大规模和复杂的流程图转换(zhunhun)为一种标准形式,能用几种标准的控制结构顺序、分支、重复通过嵌套来表示。,第七十七页,共78页。,结构化定理(dngl),任何正规程序都可语义等价于由基集合顺序、条件、循环通过嵌套复合成结构化程序。,正规程序:有一个入口点和出口点;,程序中的任何一个结点都可以找一条(y tio),从入口点经过该点到出口点的路径。,定理证明,第七十八页,共78页。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


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

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


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