第5-6章传统设计ppt课件_第1页
第5-6章传统设计ppt课件_第2页
第5-6章传统设计ppt课件_第3页
第5-6章传统设计ppt课件_第4页
第5-6章传统设计ppt课件_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

1、n本章介绍了传统的设计模型,以及从分析模本章介绍了传统的设计模型,以及从分析模型导出设计模型的一般方法。重点讲述了面型导出设计模型的一般方法。重点讲述了面向数据流设计的结构化设计方法包括结构向数据流设计的结构化设计方法包括结构设计和过程设计和面向数据结构设计的设计和过程设计和面向数据结构设计的Jackson设计方法。设计方法。n重点掌握:重点掌握: 结构化设计模型,结构化设计结构化设计模型,结构化设计方法。方法。 n结构化设计模型结构化设计模型n结构化设计方法结构化设计方法n过程设计过程设计nJackson方法方法n本章内容本章内容n介绍了传统的设计模型,以及从分析模型导出设计模型介绍了传统的

2、设计模型,以及从分析模型导出设计模型的一般方法。的一般方法。n重点讲述了面向数据流设计的结构化设计方法包括结重点讲述了面向数据流设计的结构化设计方法包括结构设计和过程设计和面向数据结构设计的构设计和过程设计和面向数据结构设计的Jackson设计设计方法。方法。n重点掌握重点掌握n结构化设计模型,结构化设计方法。结构化设计模型,结构化设计方法。 n面向数据流设计和面向数据设计面向数据流设计和面向数据设计n从分析模型导出设计模型从分析模型导出设计模型n面向数据流设计面向数据流设计n将信息流映射成软件结构将信息流映射成软件结构n数据流是考虑一切问题的出发点数据流是考虑一切问题的出发点n最终目的最终目

3、的n给出设计软件结构的一个系统化的途径给出设计软件结构的一个系统化的途径n数据流的类型决定映射方法数据流的类型决定映射方法n变换流变换流n事务流事务流n该方法适用于概要设计阶段该方法适用于概要设计阶段n常称为结构化设计常称为结构化设计SD方法方法n面向数据设计面向数据设计n该方法不明显的使用软件结构的概念,模块该方法不明显的使用软件结构的概念,模块是设计过程的副产品。对于模块独立性也没是设计过程的副产品。对于模块独立性也没有给予应有的重视。有给予应有的重视。n以数据结构作为分析和设计的基础以数据结构作为分析和设计的基础n最终目标最终目标n得出程序的过程性描述得出程序的过程性描述n该方法适用于过

4、程设计该方法适用于过程设计/详细设计阶段详细设计阶段n主要设计方法主要设计方法nJackson方法方法nWarnier方法方法n结构化设计与结构化分析的关系结构化设计与结构化分析的关系n软件设计必须依据对软件的需求来进行,软件设计必须依据对软件的需求来进行,结构化分析的结果为结构化设计提供了最结构化分析的结果为结构化设计提供了最基本的输入信息。基本的输入信息。n分析模型的每个元素都提供了创建设计模分析模型的每个元素都提供了创建设计模型时所需要的信息。型时所需要的信息。图图5.1 将分析模型转换为软件的设计模型将分析模型转换为软件的设计模型 数据设计把分析阶段创建的信息域模型转变成实现数据设计把

5、分析阶段创建的信息域模型转变成实现软件所需要的数据结构。软件所需要的数据结构。 体系结构设计确定了程序的主要结构元素体系结构设计确定了程序的主要结构元素( (即程序构即程序构件件) )之间的关系。之间的关系。 接口设计的结果描述了软件内部、软件与协作系统接口设计的结果描述了软件内部、软件与协作系统之间以及软件与使用者之间的通信方式。之间以及软件与使用者之间的通信方式。 过程设计把程序体系结构中的结构元素,变换成对过程设计把程序体系结构中的结构元素,变换成对软件构件的过程性描述。软件构件的过程性描述。 在软件设计期间我们所做出的决策,将最终决定软在软件设计期间我们所做出的决策,将最终决定软件开发

6、能否成功,更重要的是,这些设计决策将决定软件开发能否成功,更重要的是,这些设计决策将决定软件维护的难易程度。件维护的难易程度。nSD方法的中心任务方法的中心任务n把用把用DFD图表示的系统分析模型方便地转换为软图表示的系统分析模型方便地转换为软件结构的设计模型。件结构的设计模型。n软件结构的描述工具软件结构的描述工具nH图层次图)图层次图)nSC图软件结构图)图软件结构图)层次图层次图 通常使用层次图描绘软件的层次结构。在层通常使用层次图描绘软件的层次结构。在层次图中一个矩形框代表一个模块,框间的连线表次图中一个矩形框代表一个模块,框间的连线表示调用关系。示调用关系。HIPOHIPO图图 HI

7、PO HIPO图是美国图是美国IBMIBM公司发明的公司发明的“层次图层次图+ +输入输入/ /处处置置/ /输出图的英文缩写。为了使输出图的英文缩写。为了使HIPOHIPO图具有可追踪图具有可追踪性,在性,在H H图图( (即层次图即层次图) )里除了顶层的方框之外,每个里除了顶层的方框之外,每个方框都加编号。方框都加编号。基本的基本的IPO图图表格式的表格式的IPO图图IPO表)表)nSC图的组成符号图的组成符号n矩形框来表示模块矩形框来表示模块 n带箭头的连线表示模块间的调用关系带箭头的连线表示模块间的调用关系n在调用线的两旁标出传入和传出模块的数据流在调用线的两旁标出传入和传出模块的数

8、据流 nSC图中的模块符号图中的模块符号n传入传入n传出传出n变换变换n源源n漏漏n控制控制 P88实物投影解释用于表达软件的组成模块及其调用关系。用于表达软件的组成模块及其调用关系。nSC图中的模块调用图中的模块调用n简单调用:调用线的箭头指向被调用模块简单调用:调用线的箭头指向被调用模块n选择调用:图中用菱形符号表示选择选择调用:图中用菱形符号表示选择 n循环调用:用叠加在调用线始端的环形箭头表示循环循环调用:用叠加在调用线始端的环形箭头表示循环ABCDABCACBX,YZZ简单调用简单调用 选择调用选择调用 循环调用循环调用 在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息

9、。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息 留意:留意: 层次图和结构图并不严格表示模块的调用次序。层次图和结构图并不严格表示模块的调用次序。层次图和结构图并不指明什么时候调用下层模块。层次图和结构图并不指明什么时候调用下层模块。 通常用层次图作为描绘软件结构的文档。结通常用层次图作为描绘软件结构的文档。结构图作为文档并不合适。但是,利用构图作为文档并不合适。但是,利用IPOIPO图和数图和数据字典中的信息得到模块调用时传递的信息,从据字典中的信息得到模块调用时传递的信息,从而由层次图导出结构图

10、的过程,却可以作为检察而由层次图导出结构图的过程,却可以作为检察设计正确性和评价模块独立性的好方法。设计正确性和评价模块独立性的好方法。 n数据流图的类型数据流图的类型n变换型结构变换型结构n事务型结构事务型结构组成传入路径变换中心传出路径 数据流传入流变换流传出流变换中心:通过计算或处理,将变换中心:通过计算或处理,将系统的传入流变为传出流。又称系统的传入流变为传出流。又称加工中心。加工中心。传入流:离输入始端最远但仍可传入流:离输入始端最远但仍可被看作系统输入的那些数据流。被看作系统输入的那些数据流。传出流:离输出末端最远但仍可传出流:离输出末端最远但仍可被看作系统输出的那些数据流。被看作

11、系统输出的那些数据流。变换中心传入传出信息传入流 传出流 变换流时间n组成n一条接受路径n一个事务中心n若干条动作路径n特征n具有在多种事务中执行某类事务的能力。 事务事务 中心中心接受路径接受路径动作路径动作路径n复审复审DFD图,必要时可再次进行修改或细化图,必要时可再次进行修改或细化n鉴别鉴别DFD图的结构特征图的结构特征:事务?变换?事务?变换?n按照规则,把按照规则,把DFD图为初始的图为初始的SC图图 n改进初始的改进初始的SC图,获得最终图,获得最终SC图。图。 n两种映射方法两种映射方法n变换映射变换映射n事务映射事务映射变换型变换型DFD图图事务型事务型DFD图图初始初始SC

12、图图初始初始SC图图变换映射变换映射事务映射事务映射 适用于将变换型结构的适用于将变换型结构的DFDDFD图转换为初始软图转换为初始软件结构图。步骤如下:件结构图。步骤如下:1 1、区分传入、传出和变换中心三个部分,在、区分传入、传出和变换中心三个部分,在DFDDFD图上标明它们的分界线图上标明它们的分界线(1)(1)变换中心的任务:通过计算或处理,把系统变换中心的任务:通过计算或处理,把系统的逻辑输入变换的逻辑输入变换( (或加工或加工) )为系统的逻辑输出。为系统的逻辑输出。(2)(2)逻辑输入逻辑输入( (传入数据项传入数据项) ):离物理输入端:离物理输入端( (输入输入始端始端) )

13、最远,但仍可以被看作系统输入的那些数最远,但仍可以被看作系统输入的那些数据流。据流。(3)(3)逻辑输出逻辑输出( (传出数据项传出数据项) ):离物理输出端:离物理输出端( (输出末输出末端端) )最远,但仍可以被看作系统输出的那些数据流。最远,但仍可以被看作系统输出的那些数据流。(4)(4)数据在系统中流动时,不仅在通过变换中心时要数据在系统中流动时,不仅在通过变换中心时要被变换,在传入路径和传出路径上,其内容和形式被变换,在传入路径和传出路径上,其内容和形式也可能发生变化。故变换中心又称为也可能发生变化。故变换中心又称为“中心加工中心加工”,以区别于数据在传入传出过程中的其它加工。以区别

14、于数据在传入传出过程中的其它加工。(5)(5)划分的结果可能会受经验的影响,但必须从实际划分的结果可能会受经验的影响,但必须从实际情况出发,对情况出发,对DFDDFD图作认真和细致的分析图作认真和细致的分析(6)(6)几种可能遇到的情况及其处理方法几种可能遇到的情况及其处理方法有些系统没有中心加工,系统的逻辑输入和逻有些系统没有中心加工,系统的逻辑输入和逻辑输出是完全相同的数据流,应将辑输出是完全相同的数据流,应将DFDDFD划分为传划分为传入和传出两部分,不要强求一律硬分成三个部分。入和传出两部分,不要强求一律硬分成三个部分。除传入部分外,在变换中心甚至传出部分也可除传入部分外,在变换中心甚

15、至传出部分也可能从系统外接受某些输入数据流,称为二次传入能从系统外接受某些输入数据流,称为二次传入数据。该数据不应当作传入部分的一部分。数据。该数据不应当作传入部分的一部分。有些有些DFDDFD图可能失之太粗,缺少应有的细节,可图可能失之太粗,缺少应有的细节,可考虑对自己用于分析的考虑对自己用于分析的DFDDFD进行补充。进行补充。2 2、完成、完成“第一级分解第一级分解”,建立初始,建立初始SCSC图的框架。图的框架。包括顶层控制模块和第一层模块。包括顶层控制模块和第一层模块。两种画法:两种画法:a.a.顶层控制模块顶层控制模块+ +传入、传出和中心变换传入、传出和中心变换3 3个一层个一层

16、模块模块b.b.顶层控制模块顶层控制模块+ +按照传入、传出实际数据流数按照传入、传出实际数据流数和中心变换模块数确定数量的模块和中心变换模块数确定数量的模块McMcMTMTMAMAMEMEc,ew,uc,ew,uMcMcP PcR RME1ME1ME2ME2MA1MA1MA2MA2Q Qeepc,prrw,uwu3 3、完成、完成“第二级分解第二级分解/ /分支分解分支分解”,分解,分解SCSC图的各图的各个分支。对初始个分支。对初始SCSC图的框架继续进行由顶向下的分图的框架继续进行由顶向下的分解,直至画出每个分支所需要的全部模块。解,直至画出每个分支所需要的全部模块。 传入路径的处理传入

17、路径的处理: :由变换中心外移,把传入路径中由变换中心外移,把传入路径中每个处理映射成软件结构中输入处理的低一层模块每个处理映射成软件结构中输入处理的低一层模块 传出路径的处理传出路径的处理: :由变换中心外移,通路中各处理由变换中心外移,通路中各处理直接映射成输出处理的低一层模块直接映射成输出处理的低一层模块MAMAc,eC CB BA AE ED DedcbaMAMAc,eGetCGetCGetBGetBReadAReadAGetEGetEAtoBAtoBecbaBtoCBtoCabbcReadDReadDdDtoEDtoEde为了显式的表示在传入为了显式的表示在传入/ /传出路径上的数据

18、变换,传出路径上的数据变换,在分支分解中可考虑增加变换模块,功能为在分支分解中可考虑增加变换模块,功能为 Read/Get Read/Get 和和 Write/PutWrite/Put。传传入入路路径径处处置置MEMEW WU UV Vuvwu,wMEMEWriteWWriteWuvwu,wPutUPutUUtoVUtoVuWriteVWriteVv传传出出路路径径处处理理MTMTP PR RQ Qepc,p r rw,u变变换换中中心心的的处处理理McMcMAMAc,eGetCGetCGetBGetBReadAReadAGetEGetEAtoBAtoBecbaBtoCBtoCabbcRead

19、DReadDdDtoEDtoEdeMEMEWriteWWriteWuvwu,wPutUPutUUtoVUtoVuWriteVWriteVvMTMTc,ew,u合合成成 虽然在任何情况下都可以使用变换分析方法虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的点时,也就是有一个明显的“发射中心发射中心”( (事务事务中心中心) )时,还是以采用事务分析方法为宜。时,还是以采用事务分析方法为宜。 事务:引发、触发或启动某一动作或一串动事务:引发、触发或启动某一动作或一串动作的任何数据、控制、信号、事件或状

20、态变化作的任何数据、控制、信号、事件或状态变化事务分析步骤:事务分析步骤: 1 1、在、在DFDDFD图上确定事务中心、接受部分图上确定事务中心、接受部分( (包包括接受路径括接受路径) )和发送部分和发送部分( (包含全部动作路径包含全部动作路径) )事务中心通常位于事务中心通常位于DFDDFD图中多条动作路径的起点;图中多条动作路径的起点;向事务中心提供信息的路径,是系统的接受路径;向事务中心提供信息的路径,是系统的接受路径;动作路径通常不止一条,切每条均具有自己的结动作路径通常不止一条,切每条均具有自己的结构特性构特性( (变换或事务型变换或事务型) )。2 2、画出、画出SCSC图框架

21、,把图框架,把DFDDFD图的三个部分分别映射图的三个部分分别映射为事务控制模块、接受模块和动作发送模块为事务控制模块、接受模块和动作发送模块事务控制事务控制接纳接纳发送发送事务控制事务控制 事务事务 分析发送分析发送3 3、分解和细化接受和发送、分解和细化接受和发送分支,完成初始的分支,完成初始的SCSC图图接受分支一般具有变换特性,接受分支一般具有变换特性,可对其进行变换分析;可对其进行变换分析;动作分支典型的可映射为动作分支典型的可映射为4 4层:层:P-P-处理层、处理层、T-T-事务层、事务层、A-A-操作层、操作层、D-D-细节层。细节层。A A、D D常可被常可被P P、T T共

22、享。共享。PT1T2A2A1AjA3TiD2D1Dk 在大型系统的在大型系统的DFDDFD中,变换型和事务型两类中,变换型和事务型两类结构往往同时存在。对于一个大系统,常常把变结构往往同时存在。对于一个大系统,常常把变换分析和事务分析应用到同一个数据流图的不同换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成部分,由此得到的子结构形成“构件构件”,可以利,可以利用它们构造完整的软件结构。用它们构造完整的软件结构。C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm总体为变换型结构总体为变换型结构传入路径为事务型结构传入路径为事务型结构面面向向数数据据流

23、流方方法法的的设设计计过过程程 软件工程师们在开发计算机软件的长期实践软件工程师们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些中积累了丰富的经验,总结这些经验得出了一些启发规则。这些启发规则在许多场合能给软件工启发规则。这些启发规则在许多场合能给软件工程师有益的启示,往往能帮助他们找到改进软件程师有益的启示,往往能帮助他们找到改进软件设计提高软件质量的途径,因此有助于实现有效设计提高软件质量的途径,因此有助于实现有效的模块化。的模块化。 下面介绍几条常用的启发规则。下面介绍几条常用的启发规则。一、改进软件结构提高模块独立性一、改进软件结构提高模块独立性 通过模块分解或合

24、并,力求降低耦合提高内聚。通过模块分解或合并,力求降低耦合提高内聚。二、模块规模应该适中二、模块规模应该适中 一页纸内一页纸内(60(60行行) )。 过大,可考虑继续分解模块功能;过小,可考虑合过大,可考虑继续分解模块功能;过小,可考虑合并到上层模块。并到上层模块。三、深度、宽度、扇出和扇入都应适当三、深度、宽度、扇出和扇入都应适当1 1、概念、概念深度:软件结构中控制的层数,往往粗略的标志一个系深度:软件结构中控制的层数,往往粗略的标志一个系统的大小和复杂程度。越大,意味着模块功能可能过分统的大小和复杂程度。越大,意味着模块功能可能过分简单,软件的程序控制复杂。简单,软件的程序控制复杂。宽

25、度:软件结构内同一个层次上的模块总数的最大值。宽度:软件结构内同一个层次上的模块总数的最大值。宽度越大系统越复杂。宽度越大系统越复杂。( (主要受扇出影响主要受扇出影响) )扇出:模块直接调用的下级模块数目,也称模块的控制扇出:模块直接调用的下级模块数目,也称模块的控制宽度。宽度。扇入:直接调用它的上级模块数。扇入:直接调用它的上级模块数。2 2、高扇出结构、高扇出结构扇出数应保持在:扇出数应保持在:77。太高:调用的控制困难;太高:调用的控制困难;太低:应考虑向上合并功能。太低:应考虑向上合并功能。(1)(1)高扇出结构:称为高扇出结构:称为“煎饼构造煎饼构造计算实发工资计算实发工资取得工取

26、得工资数据资数据计时制计时制工资额工资额薪金制薪金制工资额工资额编外人编外人员工资员工资税收税收扣款扣款编外人编外人员税款员税款常规常规扣款扣款编外人编外人员扣款员扣款(2)(2)改进方法:增加中间层,形成塔形结构改进方法:增加中间层,形成塔形结构计算实发工资计算实发工资取得工取得工资数据资数据计时制计时制工资额工资额薪金制薪金制工资额工资额编外人编外人员工资员工资税收税收扣款扣款编外人编外人员税款员税款常规常规扣款扣款编外人编外人员扣款员扣款计时工人计时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编外人员编外人员实发工资实发工资3 3、高扇入结构、高扇入结构(1)(1)一个模块的扇入

27、越高,则共享这一模块的上级模块数一个模块的扇入越高,则共享这一模块的上级模块数目越多,消除重复代码的效果就越明显。目越多,消除重复代码的效果就越明显。(2)(2)底层高扇入结构:可共享的底层功能多,构成底层高扇入结构:可共享的底层功能多,构成“瓮形瓮形或或“清真寺构造。清真寺构造。(3)(3)高扇入结构的画法:调用线太多,交叉,乱。考虑用高扇入结构的画法:调用线太多,交叉,乱。考虑用编号代替功能方框,直接画在调用模块下。编号代替功能方框,直接画在调用模块下。四、模块的作用域应该在控制域之内四、模块的作用域应该在控制域之内1 1、两个范围的含义、两个范围的含义控制范围:包括模块本身及其下属模块,

28、不论这些模块控制范围:包括模块本身及其下属模块,不论这些模块系由该模块直接调用,还是间接调用。系由该模块直接调用,还是间接调用。作用范围:是一个与条件判定相联系的概念,指模块内作用范围:是一个与条件判定相联系的概念,指模块内的某条件判定涉及的直接调用和间接调用模块。的某条件判定涉及的直接调用和间接调用模块。 一般情况,一个判定作用范围内的模块可能会有一般情况,一个判定作用范围内的模块可能会有3 3种情况:种情况:整个模块是否执行,依赖于判定的结果;整个模块是否执行,依赖于判定的结果;上述模块的下属模块;上述模块的下属模块;模块内有部分功能的执行依赖于这一判定。模块内有部分功能的执行依赖于这一判

29、定。2 2、作用范围、作用范围/ /控制范围原则控制范围原则(1)(1)把一个判定的作用范围限制在判定所在模块的控制范围把一个判定的作用范围限制在判定所在模块的控制范围之内,是改进模块结构的基本原则。之内,是改进模块结构的基本原则。(2)(2)理想情况,是使判定的作用范围和判定所在模块的控制理想情况,是使判定的作用范围和判定所在模块的控制范围尽可能的吻合。范围尽可能的吻合。3 3、把系统中有较大影响的判定放在层次结构中较低的位置,、把系统中有较大影响的判定放在层次结构中较低的位置,可能是导致违反作用范围可能是导致违反作用范围/ /控制范围原则的主要原因。因此,控制范围原则的主要原因。因此,要么

30、把这类重要的判定从低层次上移到足够高的上层模块要么把这类重要的判定从低层次上移到足够高的上层模块中,要么把受这些判定影响的模块调整并下移到控制范围中,要么把受这些判定影响的模块调整并下移到控制范围之内。之内。M MA AG GB BC CD DE EF F五、力争降低模块接口的复杂程度五、力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因。设模块接口复杂是软件发生错误的一个主要原因。设计接口时,应使得信息传递简单并且和模块的功能一致。计接口时,应使得信息传递简单并且和模块的功能一致。 接口复杂或不一致接口复杂或不一致( (即看起来传递的数据之间没有联即看起来传递的数据之间没有

31、联系系) ),是紧耦合或低内聚的征兆,应该重新分析这个模块,是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。的独立性。如:一元二次方程求根的两种接口设计:如:一元二次方程求根的两种接口设计:quad_root(TBLquad_root(TBL,X)X),其中,其中TBLTBL和和X X均为数组均为数组quad_root(Aquad_root(A,B B,C C,ROOT1ROOT1,ROOT2)ROOT2)六、设计单入口单出口的模块六、设计单入口单出口的模块 不要设计内容耦合模块。不要设计内容耦合模块。七、模块功能应该可以预测七、模块功能应该可以预测 模块的功能应该能够预测,但也要防止模

32、块功能过模块的功能应该能够预测,但也要防止模块功能过分局限。分局限。书例书例P106汽车数字仪表板系统汽车数字仪表板系统n目的与任务目的与任务n原则与方法原则与方法n常用表达工具常用表达工具n流程图与流程图与N-S图图n伪代码和伪代码和PDL语言语言n目的目的n为软件结构图中的每一个模块确定采用的为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达算法和块内数据结构,用某种选定的表达工具给出更清晰地描述。工具给出更清晰地描述。n义务义务n编写软件的编写软件的“过程设计说明书过程设计说明书”n为每个模块确定采用的算法为每个模块确定采用的算法 n确定每一模块使用的数据结构确定每

33、一模块使用的数据结构 n确定模块接口的细节确定模块接口的细节 n为每个模块设计出一组测试用例。为每个模块设计出一组测试用例。n清晰第一的设计风格清晰第一的设计风格n结构化的控制结构结构化的控制结构n任何程序的逻辑均可用顺序、选择和任何程序的逻辑均可用顺序、选择和循环循环3种控制结构或它们的组合来实现;种控制结构或它们的组合来实现;n每个控制结构只该有一个入口和一个每个控制结构只该有一个入口和一个出口。出口。n逐步细化的实现方法逐步细化的实现方法过程设计的结果基本上决定了最终的程序代码的质量过程设计的结果基本上决定了最终的程序代码的质量n在大多数情况下,应该优先考虑程序的在大多数情况下,应该优先

34、考虑程序的清晰度,把效率的考虑放在第二位。清晰度,把效率的考虑放在第二位。 在软件的生命周期中,设计测试方案,诊断程在软件的生命周期中,设计测试方案,诊断程序错误,修改和改进程序等都必须首先读懂程序。序错误,修改和改进程序等都必须首先读懂程序。实际上对于长期使用的软件系统而言,人读程序的实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此,衡量时间可能比写程序的时间还要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。满足要求,更主要的是要看它是否容易阅读和理解。

35、 过程设计的目标不仅仅是逻辑上正确地实现每过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是过程设计的逻辑基础。标的关键技术,因此是过程设计的逻辑基础。结构化程序设计结构化程序设计n任何程序的逻辑均可用顺序、选择和循环任何程序的逻辑均可用顺序、选择和循环3种种控制结构或它们的组合来实现;控制结构或它们的组合来实现;n每个控制结构只该有一个入口和一个出口。每个控制结构只该有一个入口和一个出口。n如果在详细设计中,

36、所有的模块都只使用单入如果在详细设计中,所有的模块都只使用单入口、单出口的口、单出口的3种基本控制结构,则整个程序种基本控制结构,则整个程序将保持一条清晰的线索。将保持一条清晰的线索。结构化程序设计的经典定义结构化程序设计的经典定义 如果一个程序的代码块仅仅通过顺序、选择和循环这如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。一个出口,则称这个程序是结构化的。n对经典结构程序设计的补充完善对经典结构程序设计的补充完善n增加两种控制结构增加两种控制结构nDO-UNT

37、ILnDO-CASEn允许多个出口使程序可以立即从循环中转移出允许多个出口使程序可以立即从循环中转移出来;来;nGOTO语句不应滥用,但也不必完全禁止语句不应滥用,但也不必完全禁止n最好仅在错误处理时才使用最好仅在错误处理时才使用GOTO语句语句n应该总是使用前向应该总是使用前向GOTO语句语句n应限制在一个模块内跳转应限制在一个模块内跳转n由粗到细的逐步描述程序由粗到细的逐步描述程序n需从算法需从算法(处理过程处理过程)和数据结构两个方面同时逐和数据结构两个方面同时逐步细化步细化n逐步细化的优点逐步细化的优点n每一步只优先处理当前最需要细化的部分,其余每一步只优先处理当前最需要细化的部分,其

38、余部分推迟到适当的时机再考虑;部分推迟到适当的时机再考虑;n易于验证程序正确性,比形式化的程序正确性证易于验证程序正确性,比形式化的程序正确性证明更易为非专业人员接受,因而也更加实用。明更易为非专业人员接受,因而也更加实用。n结论结论n模块的逻辑设计必须用结构程序设计的原理来指模块的逻辑设计必须用结构程序设计的原理来指导。导。流程图与流程图与N-S图图伪代码和伪代码和PDL语言语言PAD图图判定表和判定树判定表和判定树n流程图流程图n最古老的设计表达工具最古老的设计表达工具n具有能随意表达任何程序逻辑的优点具有能随意表达任何程序逻辑的优点部部分分图图例例缺陷:缺陷: 本质上不是逐步求精的好工具

39、,过早考虑太多本质上不是逐步求精的好工具,过早考虑太多细节,而忽视全局结构细节,而忽视全局结构 流程图中的箭头代表控制流,使得程序员可以流程图中的箭头代表控制流,使得程序员可以随意转移控制,不符合结构化程序设计思想。随意转移控制,不符合结构化程序设计思想。 程序流程图难以表示数据结构程序流程图难以表示数据结构nN-S图图n是完全遵循结构化程序的流程图技术是完全遵循结构化程序的流程图技术n俗称俗称“方框图方框图”n只能描述结构化程序所允许的标准结只能描述结构化程序所允许的标准结构构(a)(a)顺序顺序 (b)IF-THEN-ELSE(b)IF-THEN-ELSE型分支型分支 (c)CASE(c)

40、CASE型多分支型多分支(d)(d)循环循环 (e)(e)调用子程序调用子程序A A优缺点:优缺点:一个特定控制结构的作用域明确,不能随意转移一个特定控制结构的作用域明确,不能随意转移很容易确定局部和全局数据的作用域很容易确定局部和全局数据的作用域很容易表现嵌套关系,也可表示模块的层次结构很容易表现嵌套关系,也可表示模块的层次结构但区域狭窄,难以适用于大的程序设计但区域狭窄,难以适用于大的程序设计n伪代码伪代码n属于文字形式的表达工具属于文字形式的表达工具n工作量小,且较易转换为真正的代码工作量小,且较易转换为真正的代码nPDL语言语言(Program Design Language)n一种软

41、件设计工具一种软件设计工具n具有很强的描述功能,是一种十分灵活和具有很强的描述功能,是一种十分灵活和有用的过程设计表达工具有用的过程设计表达工具PAD是问题分析图是问题分析图(problem analysis diagram)的英文缩写,自的英文缩写,自1973年由日本日年由日本日立公司发明以后,已得到一定程度的推广。立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。将这种图翻译成程序代码比较容易。PAD图的主要优点如下:图的主要优点如下:(1) 使用表示结构化控制结构的使用表示结构化控制结构的

42、PAD符号所符号所设计出来的程序必然是结构化程序。设计出来的程序必然是结构化程序。图图6.5 PAD图的基本符号图的基本符号(2) PAD图所描绘的程序结构十分清晰。图中最左图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序面的竖线是程序的主线,即第一层结构。随着程序层次的增加,层次的增加,PAD图逐渐向右延伸,每增加一个层图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。次,图形向右扩展一条竖线。PAD图中竖线的总条图中竖线的总条数就是程序的层次数。数就是程序的层次数。(3) 用用PAD图表现程序逻辑,易读、易懂、易记。图表现程序逻辑,易读、易懂、易记。PA

43、D图是二维树形结构的图形,程序从图中最左竖图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。执行,遍历所有结点。(4) 容易将容易将PAD图转换成高级语言源程序,这种转图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。工作,有利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结即可用于表示程序逻辑,也可用于描绘数据结构。构。(6) PAD图的符号支持自顶向下、逐步

44、求精方法的图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用着设计工作的深入而使用def符号逐步增加细节,符号逐步增加细节,直至完成详细设计,如图直至完成详细设计,如图6.6所示。所示。PAD图是面向高级程序设计语言的,为图是面向高级程序设计语言的,为FORTRAN,COBOL和和PASCAL等每种常用的高级程序设计语等每种常用的高级程序设计语言都提供了一整套相应的图形符号。由于每种控制言都提供了一整套相应的图形符号。由于每种控制语句都有一个图形符号与之对应,显然将语句都有一个图形符号与之对应,显然

45、将PAD图转图转换成与之对应的高级语言程序比较容易。换成与之对应的高级语言程序比较容易。图图6.6 使用使用PAD图提供的定义功能图提供的定义功能来逐步求精的例子来逐步求精的例子n详见需求分析部分:分析建模工具详见需求分析部分:分析建模工具n阐明阐明n判定表与判定树一般不用于详细设计环节判定表与判定树一般不用于详细设计环节n其表示能力有限,常用于表示复杂条件组其表示能力有限,常用于表示复杂条件组合与动作的对应关系,不能表示一个完整合与动作的对应关系,不能表示一个完整的处理过程的处理过程n以上几种工具都可用来描述模块的逻辑过程;以上几种工具都可用来描述模块的逻辑过程;n一般用一般用PDL进行过程

46、设计;进行过程设计;n设计完成后用流程图或设计完成后用流程图或N-S图表示所设计的程图表示所设计的程序,以便复审或进行交流。序,以便复审或进行交流。输入输入数据存储数据存储处置处置输出输出1 1、面向数据结构的设计方法的基本思想:算法、面向数据结构的设计方法的基本思想:算法+ +数据结数据结构构= =程序,算法的结构常常依赖于要处理的数据结构。只程序,算法的结构常常依赖于要处理的数据结构。只要事先知道一个问题的数据结构,就可由此导出它的程要事先知道一个问题的数据结构,就可由此导出它的程序结构。序结构。2 2、面向数据流的设计方法、面向数据流的设计方法SDSD与面向数据结构的设计方法与面向数据结

47、构的设计方法的比较的比较SDSD方法的目标是得出软件的最终方法的目标是得出软件的最终SCSC图,注意力集中在模图,注意力集中在模块的合理划分;块的合理划分;面向数据结构的设计则要求在最终得出程序的过程性描面向数据结构的设计则要求在最终得出程序的过程性描述,并不明确地提出软件应该先分成模块等概念。述,并不明确地提出软件应该先分成模块等概念。不同一样:都遵循结构程序设计、由顶向下逐步细化一样:都遵循结构程序设计、由顶向下逐步细化策略;都服从策略;都服从“程序结构服从问题结构的基本程序结构服从问题结构的基本原则;都拥有从问题结构原则;都拥有从问题结构( (包括数据结构包括数据结构) )导出程导出程序

48、结构的一组映射规则。序结构的一组映射规则。两种方法的应用:一般用两种方法的应用:一般用SDSD方法确定软件结构,方法确定软件结构,在详细设计阶段用面向数据结构的方法确定部分在详细设计阶段用面向数据结构的方法确定部分或全部模块的逻辑过程。或全部模块的逻辑过程。一、一、JacksonJackson图图 19751975年,年,M.A.JacksonM.A.Jackson提出了一类至今仍广泛使用的提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可结构入手,导出程序框架结构,再补充其

49、它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细格处理。该方法也可与其它方法结合,用于模块的详细设计。在实际应用中,许多报表程序的设计可按照这种设计。在实际应用中,许多报表程序的设计可按照这种方法。方法。 该方法的特点:程序模块结构与数据结构相对应该方法的特点:程序模块结构与数据结构相对应1 1JacksonJackson方法设计结果的表示方法设计结果的表示结构图解结构图解: :表示数据结构、

50、程序结构的类型表示数据结构、程序结构的类型图解逻辑图解逻辑: :使用类似使用类似PDLPDL语言的工具补充结构图解语言的工具补充结构图解2 2JacksonJackson图的组成图的组成 由方框、连线和一些附加的标记组成。由方框、连线和一些附加的标记组成。0 0代表选代表选择,择,* *代表重复,连线表示代表重复,连线表示“包含或包含或“由由组组成成”( (不一定是调用不一定是调用) );连线上可标记;连线上可标记SnSn、InIn表示是第表示是第几个选择或循环。几个选择或循环。3 3三种基本程序结构的表示图例三种基本程序结构的表示图例(1) (1) 顺序结构顺序结构顺序结构的数据由一个或多个

51、数据元素组成,每个元素按顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次确定次序出现一次A A由由B B、C C、D D三个元素顺序组成三个元素顺序组成( (每个元素只出现一次,出现的次序依次是每个元素只出现一次,出现的次序依次是B B、C C和和D)D)3 3三种基本程序结构的表示图例三种基本程序结构的表示图例(2) (2) 选择结构选择结构选择结构的数据包含两个或多个数据元素,每次使用这个选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。数据时按一定条件从这些数据元素中选择一个。根据条件,根据条件,A A是是B B或或C C或或D

52、 D中的某一个中的某一个( (留意:在留意:在B B、C C和和D D的右上角有小圆圈做标记的右上角有小圆圈做标记) )3 3三种基本程序结构的表示图例三种基本程序结构的表示图例(3) (3) 重复结构重复结构重复结构的数据,根据使用时的条件由一个数据元素出现重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。零次或多次构成。A A由由B B出现出现N N次次(N0)(N0)组成组成( (留意:在留意:在B B的右上角有星号标记的右上角有星号标记) )(a)(a)顺序结构,顺序结构,B B、C C、D D中任一个都不能是中任一个都不能是选择出现或重复出现选择出现或重复出现的数据元

53、素;的数据元素;(b)(b)选择结构,选择结构,S S右面右面括号中的数字括号中的数字i i是分是分支条件的编号;支条件的编号;(c)(c)可选结构,可选结构,A A或者或者是元素是元素B B或者不出现或者不出现( (可选结构是选择结可选结构是选择结构的一种常见的特殊构的一种常见的特殊形式形式) );(d)(d)重复结构,循环重复结构,循环结束条件的编号为结束条件的编号为i i。改进的改进的Jackson图图数据结构与问题结构相对应数据结构与问题结构相对应姓名姓名类别类别津贴津贴教职工名册表头表头表体表体名册名册表体表体表头表头栏名行栏名行表名行表名行行行*类别类别姓名姓名津贴津贴教龄津贴教龄

54、津贴0工龄津贴工龄津贴0例:表格的计算机处理例:表格的计算机处理程序模块结构与数据结构相对应程序模块结构与数据结构相对应名册表体表头栏名行表名行行*类别姓名津贴教龄津贴0工龄津贴0产生名册文件产生表体产生表头产生栏名行产生表名行产生行*产生类别产生姓名产生津贴产生教龄津贴0产生工龄津贴04 4JacksonJackson伪代码:伪代码:seqseq代表顺序结构;代表顺序结构;selectselect代表选择代表选择结构;结构;iteruntil|whileiteruntil|while代表循环结构;代表循环结构;endend代表一个代表一个结构的结束。结构的结束。顺序结构顺序结构A seq B

55、 C Dend A选择结构选择结构A select cond1 Bor cond2 Cend A循环结构循环结构A iter cond Bend Auntilwhile二、二、JacksonJackson方法方法1 1JacksonJackson方法与方法与SDSD方法的设计步骤图解方法的设计步骤图解数据结构数据结构(Jackson图图)程序结构程序结构(Jackson图图)程序的过程性表示程序的过程性表示(Jackson伪代码伪代码)映射程序分析程序分析程序设计程序设计问题结构问题结构(DFD图图)软件结构软件结构(SC图图)各模块的过程表示各模块的过程表示(PDL等工具等工具)映射概要设计

56、概要设计详细设计详细设计SD方法Jackson方法2 2JacksonJackson方法设计步骤方法设计步骤(1)(1)建立数据结构,评价数据结构的特征建立数据结构,评价数据结构的特征( (特别是输入和输特别是输入和输出数据结构出数据结构) ),按照基本形式对数据进行描述;,按照基本形式对数据进行描述;(2)(2)把数据结构转换为软件的控制层次,建立程序模块结把数据结构转换为软件的控制层次,建立程序模块结构。步骤如下:构。步骤如下:为每一对在输入结构与输出结构中有对应关系的单元画一为每一对在输入结构与输出结构中有对应关系的单元画一个处理框个处理框为输入结构中每一剩余的数据单元画一处理框为输入结

57、构中每一剩余的数据单元画一处理框为输出结构中每一剩余的数据单元画一处理框为输出结构中每一剩余的数据单元画一处理框所有处理框在程序结构图上的位置,应与由它处理的数据所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构单元在数据结构JacksonJackson图上的位置相对应;图上的位置相对应;(3)(3)列出程序的各种操作;列出程序的各种操作;(4)(4)将每个操作分配给适当的模块;将每个操作分配给适当的模块;(5)(5)用用JacksonJackson伪代码写出与程序结构图对应的过伪代码写出与程序结构图对应的过程性描述程性描述3 3、设计实例:正文文件处理程序、设计实例:正文文件处

58、理程序例一个正文文件由若干个记录组成,每个记录是一例一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。的空格数,最后印出文件中空格的总个数。 表示输入/输出数据结构的Jackson图(a) 输入数据结构;(b) 输出数据结构描绘统计空格程序结构的Jackson图把操作和条件分配到程

59、序结构图的适当位置P1351.停顿停顿2.打开文件打开文件I(2) 字符串结束字符串结束S(3)字符是空格字符是空格4 4、补充技术、补充技术 数据有效性检查和出错处理:有可能修改软件数据有效性检查和出错处理:有可能修改软件结构以增加有效性检查和出错处理部分结构以增加有效性检查和出错处理部分 结构冲突:指在输入结构和输出结构间找不到结构冲突:指在输入结构和输出结构间找不到对应的结构关系。对应的结构关系。 解决方法之一是:在输入结构和输出结构之间解决方法之一是:在输入结构和输出结构之间建立一些中间数据结构,使输入结构通过它们逐步建立一些中间数据结构,使输入结构通过它们逐步过渡到输出结构过渡到输出

60、结构n本章介绍了两种结构化的系统设计方法,本章介绍了两种结构化的系统设计方法,即面向数据流的即面向数据流的SD方法,和面向数据结构方法,和面向数据结构的的Jackson方法。它们都是传统软件开发方法。它们都是传统软件开发常用的方法。常用的方法。 生生 产产 通通 知知 单单 附 图:共 页 客户名称: 生产单编号: 单位:mm 块 m2 品名用途 编 号 高 宽 数量 面积 倒角 大棋子 磨圆 大斜边 图 示 品种 1 A1 100 100 100 6.5 2 200 400 50 300 500 10 1 设计示意图 1 B1 500 200 10 8 100 500 100 400 500

温馨提示

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

评论

0/150

提交评论