第4章 总体设计_第1页
第4章 总体设计_第2页
第4章 总体设计_第3页
第4章 总体设计_第4页
第4章 总体设计_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程导论 天津市大学软件园天津市大学软件园第4章 总体设计 理解总体设计的目的与任务 掌握总体设计的设计原理 掌握总体设计的启发式规则 熟练掌握结构化设计方法第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法 总体设计:总体设计: 应用各种技术和原理,对设备、过程或系统做应用各种技术和原理,对设备、过程或系统做出足够详细的定义,使之能够

2、在物理上得以实现。出足够详细的定义,使之能够在物理上得以实现。 过程:过程: 将将“做什么做什么”的逻辑模型转变为的逻辑模型转变为“怎么做怎么做”的的物理模型,即将前期工程中的软件需求转换为软件物理模型,即将前期工程中的软件需求转换为软件表示的过程。表示的过程。4.1 总体设计的目标及任务 总体设计的基本目的:总体设计的基本目的: 解决“系统应该如何实现”的问题 总体设计的两个阶段:总体设计的两个阶段: 系统设计阶段:确定系统的具体实现方案 结构设计阶段:确定系统的软件结构4.1总体设计的目标及任务1 1、设计软件结构、设计软件结构(1)通过需求分析阶段得到的数据流图设想各种可能方案。将一个复

3、杂的系统按功能划分为若干模块;(2)确定每个模块的功能;(3)确定模块之间的调用关系;(4)确定模块之间的接口,即模块之间传递的消息;(5)评价模块结构的质量。4.1 总体设计的目标及任务2 2数据结构及数据库设计数据结构及数据库设计 数据结构的设计采用逐步细化的方法。在需求分析阶段可通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行描述,确定数据的结构特性。在总体设计阶段要加以细化,详细设计阶段则规定具体的实现细节。4.1 总体设计的目标及任务3 3确定测试要求并制定测试计划确定测试要求并制定测试计划 软件开发早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。

4、4 4、编写总体设计文档、编写总体设计文档概要设计说明概要设计说明书书4.1 总体设计的目标及任务5 5、评审、评审 对设计部分是否完整地实现需求中规定的功能、性能等要求,设计方案的可行性、关键的处理及内外部接口定义正确性、有效性,及各部分之间的一致性等进行评审。4.1 总体设计的目标及任务第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法4.2 软件结构设计原理软件结构设计(结构化方法):软件结构设计(结构化方法): 在系统设计中分析信息流程,绘制数据流程图; 根据数据的规范,编制数据字典

5、; 根据概念结构的设计,确定数据文件的逻辑结构; 选择系统执行的结构化语言,以及采用控制结构作为软件的设计工具。4.2 软件结构设计原理4.2.1 模块化“由大化小,各个击破由大化小,各个击破” 优点: 提高可靠性、可修改性 错误一般出现在模块或接口中成 本 ( 工 作 量 )模 块 数 目软 件 总 成 本接 口 成 本成 本 / 模 块4.2 软件结构设计原理4.2.1 模块化模块模块: : 数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素(如函数、子程序)等。模块化模块化: : 解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所

6、有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。4.2 软件结构设计原理4.2.1 模块化模块的基本属性:模块的基本属性: 接口:接口:模块的输入与输出。 功能:功能:模块实现什么功能。 逻辑:逻辑:描述内部如何实现要求的功能及所需的数据。 状态:状态:指该模块的运行环境,是模块的调用与被调用的关系。 功能、状态、接口反映模块的外部特性,逻辑反映它的内部特性。4.2 软件结构设计原理4.2.2 抽象 抽出事物本质特性而不考虑细节抽出事物本质特性而不考虑细节软件设计:从抽象概括到具体实现的过程软件设计:从抽象概括到具体实现的过程具体具体 抽象抽象 具体具体(系统功能)(系统功

7、能) (建模)(建模) (程序代码)(程序代码)问题定义阶段问题定义阶段: (具体)(具体) 用户给出对目标系统的实际需求。 系统定义阶段:(抽象)系统定义阶段:(抽象) 软件可作为整个计算机系统的一个元素来看待。 软件需求分析阶段:(抽象)软件需求分析阶段:(抽象) 软件的解决方案是使用问题环境中的术语来描述。 总体设计总体设计详细设计阶段:(抽象详细设计阶段:(抽象具体)具体) 将面向问题的术语与面向实现的术语结合起来来描述解决方法,直到产生源程序时到达最低抽象层次。4.2 软件结构设计原理4.2 软件结构设计原理4.2.2 逐步求精为了能集中精力解决主要问题而尽为了能集中精力解决主要问题

8、而尽量推迟对问题细节的考虑。量推迟对问题细节的考虑。MillerMiller法则:法则:一个人在任何时候都只能把注一个人在任何时候都只能把注意力集中在意力集中在(7(72)2)个知识块上。个知识块上。4.2 软件结构设计原理4.2.3 信息隐藏和局部化信息隐藏原理:信息隐藏原理:设计和确定模块时,使得一个设计和确定模块时,使得一个模块内包含的信息对于不需要这些信息的模块来模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。说,是不能访问的。局部化:局部化:把一些关系密切的软件元素物理地放把一些关系密切的软件元素物理地放得彼此靠近。得彼此靠近。优点优点:防止错误的扩大与传播。防止错误的扩

9、大与传播。4.2 软件结构设计原理4.2.4 模块独立性 模块独立是模块化、抽象、信息隐藏和局部化概念的直接结果。 模块独立:模块独立:每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。4.2 软件结构设计原理4.2.4 模块独立性良好的模块独立性的重要性:良好的模块独立性的重要性: 能使开发的软件具有较高的质量。 设计的模块可理解性、可维护性及可测试性好,必然导致软件的可靠性高。 接口简单、功能独立的模块易开发,且可并行工作,有效地提高了软件的生产率。4.2 软件结构设计原理4.2.4 模块独立性4.2 软件结构设计原理4.2.4 模块独立性4.2 软件结构设计原理4.2

10、.4 模块独立性 4.2 软件结构设计原理4.2.4 模块独立性 4.2 软件结构设计原理4.2.4 模块独立性4.2 软件结构设计原理4.2.4 模块独立性 内聚:内聚:一个模块内部各个元素彼此结合的紧密程度一个模块内部各个元素彼此结合的紧密程度的度量。的度量。4.2 软件结构设计原理4.2.4 模块独立性 偶然内聚:偶然内聚:指一个模块内的各处理元素之间没有任何联系。 逻辑内聚:逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 时间内聚:时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。时间内聚模块中的各部分都要在同一时间内完成。 过程内聚:过

11、程内聚:如果一个模块内部的处理是相关的,而且这些处理必须以特定的次序执行,则称过程内聚。 4.2 软件结构设计原理4.2.4 模块独立性 通信内聚:通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或指各处理使用相同的输入数据或者产生相同的输出数据。 顺序内聚:顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。 功能内聚:功能内聚:最强的内聚形式,指模块内所有元素共同完成一个功能,缺一不可。模块不能再分割。4.2 软件结构设计原理4.2.4 模块独立性第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4

12、.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法4.4 软件结构设计启发式规则1 1模块独立性准则模块独立性准则:通过模块分解或合并,力求做到降低耦合提高内聚,保持模块相对独立性。(1)如图4.13(a)所示,若多个模块公有的一个子功能(使用阴影部分表示),则可以将这个子功能独立成一个模块,由这些模块调用。4.4 软件结构设计启发式规则(2)若有多个功能相关的模块,如图4.13(b)所示B、C、D三个模块耦合度较高,E、F两个模块耦合度较高,应考虑对它们进行合并以减少控制信息的传递,降低接口的复杂程度。4.4 软件结构设计启发式规则2 2模块的作用域应该在控制域内

13、模块的作用域应该在控制域内 作用域作用域:指受该模块内一个判断影响的所有模块的集合。控制域控制域:指模块本身以及其所有直接或者间接从属于它的模块集合。4.4 软件结构设计启发式规则(a) (b) (c) 图4.14 模块的作用域和控制域(a) 差的结构图 (b) 不理想的结构图 (c) 理想的结构图4.4 软件结构设计启发式规则改进改进方法:方法:(1)上移判断点。如图4.14 (a)所示,将模块D中的判断点上移到它的上层模块B中,或者将整个模块D合并到模块B中,使该判断的层次升高,以扩大它的控制域。(2)下移受判断影响的模块。将受判断影响的模块下移到判断所在模块的控制域内,如图4.14 (a

14、)所示,将模块C下移到模块D的下层。(1)深度指软件结构中模块的层次数,它表示控制的层数,一定意义上能粗略地反映系统的规模和复杂程度。 (2)宽度指同一层次中最大的模块个数,它表示控制的总分布。 (3)扇出指一个模块直接调用的模块数目。经验证明,良好的系统结构平均扇出数一般是3-4,不能超过5-9。 (4)扇入指有多少个上级模块直接调用它。 4.4 软件结构设计启发式规则3 3软件结构的形态特征准则软件结构的形态特征准则 (1)深度能粗略地反映系统的规模和复杂程度,宽度也能反映系统的复杂情况。宽度与模块扇出有关,若一个模块的扇出太多,说明本模块过分复杂,缺少中间层。 (2)单一功能模块的扇入数

15、大比较好,说明本模块为上层几个模块共享的公用模块,重用率高。 (3)不能把彼此无关的功能凑在一起形成一个通用的超级模块,虽然它扇入高,但内聚低。因此非单一功能的模块扇入高时应考虑重新分解,以消除控制耦合的情况。4.4 软件结构设计启发式规则4.3 软件结构设计工具如图所示,结构图的深度为5;宽度为8;模块M的扇出为3;模块T的扇入为4。4.4 软件结构设计启发式规则4 4模块大小准则模块大小准则 在考虑模块的独立性时,为了增加可理解性,模块的大小最好在50-150条语句左右,可以用1-2页纸打印,便于人们阅读与研究。5 5模块的接口准则模块的接口准则(1)模块接口设计要简单,以降低复杂程度和冗

16、余度。 (2)设计功能可预测并能得到验证的模块。 (3)适当划分模块规模,以保持其独立性。第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法4.3.14.3.1层次图层次图4.3 软件结构设计工具 左图中,左图中, 矩形框矩形框:模块:模块 连线连线:调用关系:调用关系层次图:适于在自顶向下设计软件的过程中使用。层次图:适于在自顶向下设计软件的过程中使用。4.3.2 HIPO4.3.2 HIPO图图=H=H图图+ +每个模块的每个模块的IPOIPO图图(H H图:带编号的层次图)图:带编号的

17、层次图)4.3 软件结构设计工具Note: 和和H图中每个图中每个方框相对应,应都有方框相对应,应都有一张一张IPO图来描绘其图来描绘其代表的模块处理过程代表的模块处理过程。4.3 软件结构设计工具4.3.3 4.3.3 软件结构图软件结构图主要内容:主要内容: 模块方框表示 模块的调用关系单向箭头或直线 模块间的信息传递带注释的短箭头 选择调用菱形 循环调用弧形箭头4.3 软件结构设计工具4.3 软件结构设计工具画结构图应注意的事项画结构图应注意的事项 : (1)同一名字的模块在结构图中仅出现一次。 (2)调用关系只能从上到下。 (3)不严格规定模块的调用次序,习惯上从左到右。有时为了减少连

18、线的交叉,可适当地调整同一层模块的左右位置,以保持结构图的清晰性。 4.5 结构化设计方法 结构化设计方法结构化设计方法(简称SD方法),就是基基于数据流于数据流的设计方法。 基于数据流的设计方法 :将数据流图数据流图变换变换成成软件结构软件结构。 面向数据流的设计方法定义了一些不同的“映射映射”,利用这些映射可以把数据流图变换成软件结构。因为任何软件系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以用来设计任何软件的结构。4.5.1 数据流图的类型1. 变换型数据流图变换型数据流图 变换型的数据流图是由输入、变换(或称处理)和输出三部分组成 。虚线为标出的流界。变换型数据处理变换型

19、数据处理的工作过程一般分为取得数据、变换数据和输出数据。的工作过程一般分为取得数据、变换数据和输出数据。这三步体现了变换型数据流图的基本思想基本思想。 逻辑输入变换是系统的主加工,在输入端传递给变换中心中第一个变换的数据流称为系统输入端的逻辑输入,经过变换中心的最后一个变换得到的数据流称为输出端的逻辑输出。直接从外部设备输入的数据称为物理输入,反之称为物理输出。外部的输入数据一般要经过输入正确性和合理性检查、编辑及格式转换等预处理,这部分工作都由逻辑输入部分完成,它将外部形式的数据变成内部形式,送给变换中心。逻辑输出部分把主变换产生的数据的内部形式转换成外部形式然后物理输出。因此,变换型的数据

20、流图是一个顺序结构。 4.5.1 数据流图的类型2 2事务事务型数据流图型数据流图 若某个变换将它的输入流分离成许多发散的数据流,形成许多平行的变换路径,并根据输入的值选择其中一个路径来执行,这种特征的数据流图则称为事务型数据流图,这个变换称为事务处理中心。4.5.1 数据流图的类型1复查并精化数据流图复查并精化数据流图2确定数据流图类型确定数据流图类型一般情况下,系统中的所有信息流都可以认为是变换流。但是,当遇到有明显事务特性的信息流时,建议采用事务型分析方法进行设计。设计人员应该根据数据流图中占优势的属性,确定数据流的全局特性。此外还应该把具有和全局特性不同的特点的局部区域孤立出来,以后可

21、以按照这些子数据流的特点来精化根据全局特点得出的软件结构。4.5.2 结构化设计方法过程3确定数据流的边界确定数据流的边界 对于变换流,分析确定输入流和输出流的边界,从而孤立出变换中心;对于事务流,分析确定输入流的边界,从而孤立出事务中心。4完成完成“第一级分解第一级分解” 软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程,而“第一级分解”就是分配顶层控制。4.5.2 结构化设计方法过程4.5.2 结构化设计方法过程(1)对于变换流,)对于变换流,位于软件结构最顶层的控制模块协调下述3个从属模块的控制功能: 输入信息处理控制模块:协调输入信息的产生过程; 变换中心控制模块:管理对

22、内部形式的数据的所有操作; 输出信息处理控制模块:协调输出信息的产生过程。(2)对于事务流,)对于事务流,位于软件结构最顶层的总控制模块管理下属的接收分支和发送分支的工作。接收分支由输入流映射而成;发送分支的顶层是一个调度模块,它根据输入数据的类型调用相应的活动分支。4.5.2 结构化设计方法过程5完成完成“第二级分解第二级分解” 所谓“第二级分解”就是把数据流图中的每个处理映射成软件结构中一个适当的模块。6优化优化 对于第一次分割得到的软件结构,为了产生合理的分解,得到尽可能高的内聚,尽可能松散的耦合,总可以根据模块独立原理和启发式设计规则进行优化。最重要的是为了得到一个易于实现、易于测试和

23、易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。4.5.3 变换型分析设计1. 1. 确定确定DFDDFD中的变换中心、逻辑输入和逻辑输出中的变换中心、逻辑输入和逻辑输出(1)逻辑输入端的确定:)逻辑输入端的确定:从物理输入端开始,沿着数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统的输入,则它的前一个数据流就是系统的逻辑输入。(2)逻辑输出端的确定:)逻辑输出端的确定:从物理输出端开始,逆数据流方向向中间移动,可以确定系统的逻辑输出。介于逻辑输入和逻辑输出之间的加工就是变换中心。用虚线划分出流界,DFD的三部分就可以被确定了。4.5.3 变换型分析设计2. 2

24、. 设计软件结构的顶层和第一层设计软件结构的顶层和第一层变换结构变换结构主模块确定之后,开始设计软件结构的第一层。第一层至少要有输入、输出和变换三种功能的模块。为每个逻辑输入设计一个输入模块,其功能为向顶层为每个逻辑输入设计一个输入模块,其功能为向顶层模块提供相应的数据模块提供相应的数据 。为每个逻辑输出设计一个输出模块,其功能为输出顶为每个逻辑输出设计一个输出模块,其功能为输出顶层模块的信息层模块的信息 。为变换中心设计一个变换模块,它的功能是将逻辑输为变换中心设计一个变换模块,它的功能是将逻辑输入进行变换加工,然后逻辑输出。入进行变换加工,然后逻辑输出。f3f7f7f3主模块主模块get

25、f3将将f3变换成变换成f7put f74.5.3 变换型分析设计从上图导出的初始结构图从上图导出的初始结构图f2f3f8f7f5f6f4输入输入f1ABEDCF变换中心变换中心输出输出4.5.3 变换型分析设计3. 3. 设计中、下层模块设计中、下层模块(1) 输入模块的下属模块的设计:输入模块的功能是向它的调用模块提供数据,所以必须要有数据来源。这样输输入模块应由接收数据和转换成调用模块所需的信息两部入模块应由接收数据和转换成调用模块所需的信息两部分组成分组成。(2) 输出模块的下属模块的设计:输出模块的功能是将它的调用模块产生的结果送出。它由将数据转换成下属将数据转换成下属模块所需的形式

26、和发送数据两部分组成模块所需的形式和发送数据两部分组成。 (3) 变换模块的下属模块的设计:根据DFD中变换中心的组成情况,按照模块独立性的原则来组织其结构,一般对DFD中每个基本加工建立一个功能模块每个基本加工建立一个功能模块。 4.5.3 变换型分析设计4.5.3 变换型分析设计4设计的优化 根据设计准则对初始结构进行精细和改进,以下为常用的求精方法。(1) 输入部分的求精:对每个物理输入设置专门模块,以体现系统的外部接口;其他输入模块并非真正输入,当它与转换数据的模块都很简单时,可将它们合并成一个模块。 (2) 输出部分的求精:为每个物理输出设置专门模块,同时注意把相同或类似的物理输出模

27、块合并在一起,以减低耦合度。(3) 变换部分的求精:根据设计准则,对模块进行合并或调整。4.5.4 事务型分析设计1 1确定确定DFDDFD中的事务中心和加工路径中的事务中心和加工路径 当DFD中的某个加工明显地将一个输入数据流分解成多个发散的输出数据流时, 该加工就是事务中心。从事务中心辐射出去的数据流则为各个加工路径。 2 2设计软件结构的顶层和第一层设计软件结构的顶层和第一层事务结构事务结构 设计一个顶层模块,它是一个主模块,有两个功能,一是接收数据,二是根据事务类型调度相应的处理模块。事务型软件结构应包括接收分支和发送分支接收分支和发送分支两部分。 (1)接收分支:负责接收数据,它的设

28、计与变换型DFD的输入部分设计方法相同。 (2)发送分支:通常包含一个调度模块,它控制管理所有下层的事务处理模块。当事务类型不多时,调度模块可与主模块合并。4.5.4 事务型分析设计3.设计事务结构的中下层设计事务结构的中下层 为每一种事务处理设计一个事务处理模块。 为事务处理设计操作模块。 为操作模块设计细节模块。 某些操作模块和细节模块可以被它们的调用模块共享。4.4.对初始的事务结构优化工作同变换结构。对初始的事务结构优化工作同变换结构。4.5.4 事务型分析设计4.5.4 事务型分析设计4.5.5 综合型数据流图 一个大型系统DFD中,既有变换流,又有事务流,属于综合的数据流图。1确定确定DFD整体上的类型整体上的类型 事务型通常用于对高

温馨提示

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

评论

0/150

提交评论