




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构化总体设计第1页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院2第7章结构化总体设计本章的主要目标是运用结构化方法,介绍软件总体设计的相关工作。读完本章,你将了解以下基本内容:软件设计的基本原理。软件设计的启发式规则。软件结构的描述工具。面向数据流的结构化设计过程。第2页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院3Contents7.1软件设计的基本概念和原理7.2软件结构的描绘工具7.3面向数据流的设计过程7.4启发式设计7.5设计优化原则第3页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院47.1软件设计的基本概念和原理在完成了需求分析之后,项目开发人员对系统的需求有了完整准确的理解,即知道了“做什么”,接下来就是回答“怎么做”。第一个阶段为总体设计阶段,期间项目开发人员确定软件系统的基本框架;第二阶段为详细设计阶段,期间确定软件系统的内部实现细节。第4页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院57.1.1抽象抽象是人类在认识复杂世界时所使用的最有力的工具。抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、梨、葡萄、桃子等,它们共同的特征就是水果。7.1.2信息隐蔽信息隐蔽是指每个模块的内部实现细节对外部来说是看不见的,即模块内部的数据、代码等信息不允许其他不需要这些信息的模块使用。这样主要有两个好处,一是利于模块之间相互有效隔离,使每个模块更加具有独立性,二是可以使系统具有更好的健壮性,以及更好的可维护性。第5页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院67.1.3模块化设计人们不断创新的目的在于更加高效。从软件开发的角度来看,人们希望开发维护同样一个系统所使用的时间最短,所耗费的成本最低。软件系统模块化就是出于这样的目的,提出了一种提高开发效率的思想。在结构化分析方法中,模块的规模可大可小,是一个功能单位。模块可以是软件系统中的一个子系统,也可以是子系统内一个功能程序块(由边界元素限定的数据说明、可执行的语句等的序列,而且有一个总体标识符来代表它。第6页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院7
模块化可以简化软件问题,一个系统模块越多,模块与模块之间的通信或接口就越多,希望依靠模块化将系统不断被分解而使软件成本不断降低的愿望可能是不切实际的。随着系统的分解,系统中模块数目将会增加,模块接口也会增加,软件构造会由此变得复杂起来,模块连接的难度也会由此加大。
第7页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院8那么如何确定一个软件系统的模块数目?
分别从模块可分解性、可组装性、可理解性、连续性和保护性五个方面来理解:如果一种设计方法提供了把问题分解为子问题的系统化机制,它就能降低整个问题的复杂性,从而可以实现一种有效的模块化解决方案。如果一种设计方法能把现有的(可重用的)设计构件组装成新系统,它就能提供一种并非一切从头开始的模块化解决方案。如果可以把一个模块作为一种独立单元(无段参考其他模块)来理解,那么,这样的模块是易于构造和易于修改的。如果对系统需求的微小修改只会针对个别模块,而不是对整个系统的修改,则修改所引起的副作用将最小。如果在一个模块内出现异常情况时,它的影响仅局限在该模块内部,则由错误引起的副作用最小。第8页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院97.1.4模块独立模块独立是模块化、抽象、信息隐蔽的直接结果,是指系统中的模块尽可能地只涉及自己特定的子功能,并且模块接口简单,与其他模块没有过多的通信。如果系统中每个模块都具有很好的独立性,系统实现起来就更加容易。因此,模块独立性是衡量软件中模块质量最重要的指标。一般来说,采用耦合和内聚这两个定性的技术指标来对这一模块的独立性进行衡量。内聚性可以衡量各模块内部功能的结合强度,模块内部各元素之间结合得越紧密,则它的内聚性就越高;耦合性显示了模块与模块之间相互的依赖关系,模块与模块之间联系越紧密,耦合性就越高。第9页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院107.1.5耦合耦合度量了各模块之间相互关联的程度,各个模块之间接口的复杂程度、接口数据对模块内部运算的影响程度、使用模块的方式都决定了耦合的强弱。以下是耦合的几种主要形式:非直接耦合。两个模块之间的联系,仅限于被共同模块控制和调用,它们之间没有直接的联系,那么这种耦合就成为非直接耦合,因为模块和模块之间没有数据通信,所以它的耦合形式是最弱的。数据耦合。模块与模块之间发生联系,彼此之间通过接口参数实现通信,传递的接口参数是用于计算的,它们不会影响内部程序执行的路径。我们提倡用数据耦合,它是一种较弱的耦合方式。第10页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院11控制耦合。如果在数据耦合的基础上,模块间接口参数不仅传递数据,同时还传递标志、名字、开关等控制信息,从而影响模块的内部程序执行路径。显而易见,控制耦合比数据耦合的耦合性要强一些,它属于中等程度的耦合。如果需要通过接口传递模块内多项功能的选择时,就需要用到控制耦合。公共耦合。在软件系统中,可能有独立于模块而存在的数据文件、公共变量和公共数据环境。模块之间通过访问公共数据环境从而实现通信。内容耦合。内容耦合是一种耦合性很强的耦合,这种耦合严重影响了模块的独立性。它的表现形式主要有以下几种:i.模块直接访问另一模块的内部数据;ii.模块不通过正常的入口转到另一模块内部;iii.模块之间存在一部分代码重叠;iv.某个模块有多个入口。内容耦合致使模块的变动变得非常困难,程序维护和升级也极其困难,这要求在设计软件结构时,不允许出现内容耦合。第11页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院127.1.6内聚内聚性是信息隐蔽概念的自然扩展,它度量了模块内部各个元素彼此结合的紧密程度,元素之间联系越紧密,其内聚性越强。把模块内聚分为以下几种主要类型:
功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。
第12页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院13偶然内聚。偶然内聚即模块内部各元素之间的联系很少或者没有。逻辑内聚。逻辑内聚将几种相关的功能组合在一起形成一个模块。时间内聚。时间内聚是指模块内部各功能之间的执行与时间相关。过程内聚。如果模块内各元素的执行是按照一定次序来进行的,即各个元素的处理是相关的,则称其为过程内聚。通信内聚。一个模块内部可以有几个功能部分,如果这些功能部分都使用相同的数据输入,或者产生相同的数据输出,这不是通信内聚。顺序内聚。如果模块内某一功能元素的输出作为另一个功能元素的输入,模块内各功能元素顺序联结,它们之间关系紧密,那么称这个模块为顺序内聚模块。功能内聚。如果为了实现模块的具体功能,模块内各个元素都是必需的,这些元素要协同工作,它们无法单独执行,称这样的模块为功能内聚模块。功能内聚模块的内聚程度很高,在进行软件设计时,应尽可能地实现功能内聚。第13页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院147.2软件结构的描绘工具7.2.1层次图和HIPO图
层次图是用来描绘软件的层次结构。层次图很适合在自顶向下设计软件的过程中使用。
第14页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院15HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了能使HIPO图具有可追踪性,在H图(层次图)里除了最底层的方框之外,每个方框都加了编号。编号规则与数据流图的级联编号方式相同,图7.2加了编号后演变为图7.3。第15页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院167.2.2结构图Yourdon提出的结构图是进行软件结构设计的另一个有利工具。结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。第16页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院17图7.4是结构图的一个例子。第17页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院18图7.5表示当模块M中某个判定为真时调用模块A,为假时调用模块B。图7.6表示模块M循环调用模块A、B和C。注意,层次图和结构图并不严格表示模块的调用次序。事实上,层次图和结构图只表明一个模块调用那些模块,至于模块内还有没有其他成分则完全没有表示。通常用层次图作为描绘软件结构的文档。结构图作为文档并不很合适,因为图上包含的信息太多有时反而降低了清晰程度。
第18页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院19第19页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院207.3面向数据流的设计过程面向数据流的设计过程,也就是结构化设计方法(简称为SD),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。第20页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院217.3.1基本概念和设计过程SD方法能方便地将数据流图转换为软件结构,需要5个步骤:确定信息流的类型;划清流程边界;将数据流图映射为软件结构;提取层次控制结构;通过设计复审和使用启发式方法优化所得到的结构。第21页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院22第3步所用映射方法涉及到信息流的类型,信息流分为变换流和事务流两种类型:变换流在基本系统模型(即顶层数据流图)中,信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。
输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式,如果数据流图所描述的信息流具有上述特征,则称为变换流。
第22页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院23事务流
由于基本系统模型一般均可呈现为变换流,故任意系统中的信息均可用变换流刻画。第23页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院24值得注意的是,在大型系统的DFD中,变换流与事务流往往交织在一起。比如在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征。
第24页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院257.3.2变换分析
变换分析由一系列步骤组成,经过这些步骤就能把具有变换流特点的数据流图按预先确定的模式映射成软件结构。下面以“家庭保安系统”的传感器监测子系统为例说明变换分析的各个步骤。
第25页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院26第26页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院277.3.2变换分析
图7.10和图7.11分别为“家庭保安系统”的顶级和第一级数据流图。
第27页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院28第28页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院29步骤一:复审基本系统模型。步骤二:复审和精化软件数据流图。这一步主要是对软件需求规格说明书中的分析模型进行精化,直至获得足够详细的DFD。步骤三:确定DFD的特性,判定它为变换流还是事务流。设计人员首先要判定DFD中占主导地位的信息流,确定其特性,然后孤立具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。数据沿1个传入路径进来,沿3个传出路径离开,无明显的事务中心,因此,该信息流是变换流。
第29页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院30步骤四:划定输入流和输出流的边界,孤立变换中心。输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。
第30页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院31步骤五:执行“一级分解”(FirstLevelFactoring)。一级分解的目标是导出具有3个层次的程序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、协调底层的工作。程序结构可用Yourdon结构图(SC图)表示。图7.14所示的结构图对应于一级分解的上两层模块,即主控模块和下面几个中层控制模块:
输入流控制模块(Ca),接收所有输入数据;变换流控制模块(Ct),对内部形式数据进行加工、处理,也称为中心变换。输出流控制模块(Ce),产生输出数据。主控模块(Cm)代表整个系统。第31页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院32“传感器监测子系统”一级分解如图7.15所示,其中控制模块的名字概括了所有下属模块的功能。
第32页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院33步骤六:执行“二级分解”。二级分解过程是从中心变换的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块。第33页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院34图7.13的输出流部分导出的程序结构如图7.17所示:第34页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院35第35页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院36第36页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院37有必要为每个模块写一个简要的处理说明,应包括:进出模块的信息(接口描述);模块的局部信息;处理过程陈述,包括主要的判断点和任务;对有关限制和一些专门特性的简要说明(例如文件I/O、独立于硬件的特性、特殊的实时要求等)。第37页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院38步骤七:采用启发式设计策略,精化所得到的结构雏形,改良软件质量,以“模块独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合、易实现、易测试、易维护的软件结构。“传感器监测子系统”的结构雏形可修改如下:因只存在惟一一条传入路径,故输入控制模块可删除;由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电话号码的功能纳入其中),变换控制模块不再需要;(3)“格式化显示”和“生成显示”两个模块归并为“产生显示”一个模块。第38页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院39“传感器监测子系统”精化后的程序结构如图7.19:第39页,共59页,2023年,2月20日,星期四40举例:人事信息更新第40页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院41第41页,共59页,2023年,2月20日,星期四7.3.3事务分析当数据流具有明显的事务特征时,如果能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。*©曲阜师范大学计算机科学学院42第42页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院43事务流的映射方法第43页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院44第44页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院457.3.3事务分析当数据流具有明显的事务特征时,如果能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。在“家庭保安系统”中“用户交互子系统”是一个事务分析过程。第45页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院46
事务分析法的步骤与变换分析方法基本相似,主要差别在于从数据流图到程序结构的映射。事务分析法可概括为7个步骤:步骤一:复审基本系统模型。步骤二:复审并精化软件数据流图。步骤三:确定数据流图的特征。显然,前三步与变换分析法相同。第46页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院47步骤四:找出事务中心,确定由事务中心发出的每一动作路径的数据流特征。数条路径的公共源头即为事务中心,事务中心定位为“启动命令处理”框。事务中心一经确定,即可划定接受路径与所有动作路径的界限。第47页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院48步骤五:把数据流图映射为事务处理型的程序结构。事务处理型的程序结构由“输入”和“散转”两部分组成。第48页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院49“用户交互子系统”一级分解的结构如图7.23所示第49页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院50步骤六:分解并精化事务结构以及每条动作路径所对应的结构。
步骤七:使用启发式设计策略,精化所得程序结构雏形,改良软件质量。这一步骤与变换分析法相同。第50页,共59页,2023年,2月20日,星期四混合流*©曲阜师范大学计算机科学学院51第51页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院527.4启发式设计改造程序结构,降低耦合度,提高内聚度。改造程序结构,减少扇出,在增加程序深度的前提下追求高扇入。第52页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院53深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。宽度是软件结构内同一层次上的模块总数的最大值。扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。
第53页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院54通过观察大量软件实例后发现,设计良好的软件结构通常顶层扇出较高,中层扇出较低,底层又高扇入到公共的实用模块中去。第54页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院55改造程序结构,使任一模块的作用域在其控制域之内。模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。第55页,共59页,2023年,2月20日,星期四*©曲阜师范大学计算机科学学院56改造程序结构,降低界面的复杂性和冗余程度,提高协调性。界面复杂是引起软件错误的一个基本要素。模块功能应该是可预言的,避免对模块施加过多限制。改造程序结构,追求单入口单出口的模块。为满足设计或可移植性的要求,把某些软件用包(Package)的形式封装起来。无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档作为软件总体设计的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外广告牌项目施工合同
- 医药行业 研究报告
- 2025年度按摩师服务职业培训基地合同
- 中医护理学(第5版)课件 切诊
- 跨境电商物流收费标准
- 50平太阳能光伏发电
- 城市规划建设指南
- 残疾人康复中心建设项目可行性研究报告
- 保险公司装修保修条款
- 天然气项目可行性研究报告
- 设计变更单表格
- 良性前列腺增生诊疗指南
- 中学生食品安全教育 主题班会课件(18张PPT) 上学期
- 《长方形和正方形》 完整版课件
- 《乘法交换律和结合律》教学课件数学四年级下册
- 趣味数学-高斯求和 完整版课件
- 花卉生产设施课件
- 高中体育与健康人教版高中必修全一册(新课标)第十章体操类运动-技巧模块计划
- 云南省主要矿产资源
- 临床试验疑难问题解答
- 光伏发电工程施工组织设计施工工程光伏发电工程光伏发电施工组织设计
评论
0/150
提交评论