《第4章总体设计课件.ppt》由会员分享,可在线阅读,更多相关《第4章总体设计课件.ppt(70页珍藏版)》请在优知文库上搜索。
1、软件工程导论 第4章-总体设计1第4章 总体设计 理解总体设计的目的与任务 掌握总体设计的设计原理 掌握总体设计的启发式规则 熟练掌握结构化设计方法第4章-总体设计2第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章-总体设计3第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章-总体设计4 总体设计:总体设计:应用各种技术和原理,对设备、过程或系统做应用各种技术和原理,对设备、
2、过程或系统做出足够详细的定义,使之能够在物理上得以实现。出足够详细的定义,使之能够在物理上得以实现。过程:过程:将将“做什么做什么”的逻辑模型转变为的逻辑模型转变为“怎么做怎么做”的的物理模型,即将前期工程中的软件需求转换为软件物理模型,即将前期工程中的软件需求转换为软件表示的过程。表示的过程。4.1 总体设计的目标及任务第4章-总体设计5 总体设计的基本目的:总体设计的基本目的:解决“系统应该如何实现”的问题 总体设计的两个阶段:总体设计的两个阶段:系统设计阶段:确定系统的具体实现方案 结构设计阶段:确定系统的软件结构4.1总体设计的目标及任务第4章-总体设计61 1、设计软件结构、设计软件
3、结构(1)通过需求分析阶段得到的数据流图设想各种可能方案。将一个复杂的系统按功能划分为若干模块;(2)确定每个模块的功能;(3)确定模块之间的调用关系;(4)确定模块之间的接口,即模块之间传递的消息;(5)评价模块结构的质量。4.1 总体设计的目标及任务第4章-总体设计72 2数据结构及数据库设计数据结构及数据库设计 数据结构的设计采用逐步细化的方法。在需求分析阶段可通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行描述,确定数据的结构特性。在总体设计阶段要加以细化,详细设计阶段则规定具体的实现细节。4.1 总体设计的目标及任务第4章-总体设计83 3确定测试要求并制定测试计划确定测
4、试要求并制定测试计划 软件开发早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。4 4、编写总体设计文档、编写总体设计文档概要设计说明概要设计说明书书4.1 总体设计的目标及任务第4章-总体设计95 5、评审、评审 对设计部分是否完整地实现需求中规定的功能、性能等要求,设计方案的可行性、关键的处理及内外部接口定义正确性、有效性,及各部分之间的一致性等进行评审。4.1 总体设计的目标及任务第4章-总体设计10第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章-总体设
5、计114.2 软件结构设计原理软件结构设计(结构化方法):软件结构设计(结构化方法):在系统设计中分析信息流程,绘制数据流程图;根据数据的规范,编制数据字典;根据概念结构的设计,确定数据文件的逻辑结构;选择系统执行的结构化语言,以及采用控制结构作为软件的设计工具。第4章-总体设计124.2 软件结构设计原理4.2.1 模块化“由大化小,各个击破由大化小,各个击破”优点:提高可靠性、可修改性 错误一般出现在模块或接口中成 本(工 作 量)模 块 数 目软 件 总 成 本接 口 成 本成 本/模 块第4章-总体设计134.2 软件结构设计原理4.2.1 模块化模块模块:数据说明、可执行语句等程序对
6、象的集合,或者是单独命名和编址的元素(如函数、子程序)等。模块化模块化:解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。第4章-总体设计144.2 软件结构设计原理4.2.1 模块化模块的基本属性:模块的基本属性:接口:模块的输入与输出。功能:模块实现什么功能。逻辑:描述内部如何实现要求的功能及所需的数据。状态:指该模块的运行环境,是模块的调用与被调用的关系。功能、状态、接口反映模块的外部特性,逻辑反映它的内部特性。第4章-总体设计154.2 软件结构设计原理4.2.2 抽象 抽出
7、事物本质特性而不考虑细节抽出事物本质特性而不考虑细节软件设计:从抽象概括到具体实现的过程软件设计:从抽象概括到具体实现的过程具体具体 抽象抽象 具体具体(系统功能)(系统功能)(建模)(建模)(程序代码)(程序代码)第4章-总体设计16问题定义阶段:(具体)用户给出对目标系统的实际需求。系统定义阶段:(抽象)软件可作为整个计算机系统的一个元素来看待。软件需求分析阶段:(抽象)软件的解决方案是使用问题环境中的术语来描述。总体设计详细设计阶段:(抽象具体)将面向问题的术语与面向实现的术语结合起来来描述解决方法,直到产生源程序时到达最低抽象层次。4.2 软件结构设计原理第4章-总体设计174.2 软
8、件结构设计原理4.2.2 逐步求精为了能集中精力解决主要问题而尽为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。量推迟对问题细节的考虑。MillerMiller法则:法则:一个人在任何时候都只能把注一个人在任何时候都只能把注意力集中在意力集中在(7(72)2)个知识块上。个知识块上。第4章-总体设计184.2 软件结构设计原理4.2.3 信息隐藏和局部化信息隐藏原理:信息隐藏原理:设计和确定模块时,使得一个设计和确定模块时,使得一个模块内包含的信息对于不需要这些信息的模块来模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。说,是不能访问的。局部化:局部化:把一些关系密切的软件元
9、素物理地放把一些关系密切的软件元素物理地放得彼此靠近。得彼此靠近。优点优点:防止错误的扩大与传播。防止错误的扩大与传播。第4章-总体设计194.2 软件结构设计原理4.2.4 模块独立性 模块独立是模块化、抽象、信息隐藏和局部化概念的直接结果。模块独立:模块独立:每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。第4章-总体设计204.2 软件结构设计原理4.2.4 模块独立性良好的模块独立性的重要性:良好的模块独立性的重要性:能使开发的软件具有较高的质量。设计的模块可理解性、可维护性及可测试性好,必然导致软件的可靠性高。接口简单、功能独立的模块易开发,且可并行工作,有效地
10、提高了软件的生产率。第4章-总体设计214.2 软件结构设计原理4.2.4 模块独立性第4章-总体设计224.2 软件结构设计原理4.2.4 模块独立性第4章-总体设计234.2 软件结构设计原理4.2.4 模块独立性 第4章-总体设计244.2 软件结构设计原理4.2.4 模块独立性 第4章-总体设计254.2 软件结构设计原理4.2.4 模块独立性第4章-总体设计264.2 软件结构设计原理4.2.4 模块独立性 内聚:内聚:一个模块内部各个元素彼此结合的紧密程度一个模块内部各个元素彼此结合的紧密程度的度量。的度量。第4章-总体设计274.2 软件结构设计原理4.2.4 模块独立性 偶然内
11、聚:偶然内聚:指一个模块内的各处理元素之间没有任何联系。逻辑内聚:逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。时间内聚:时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。时间内聚模块中的各部分都要在同一时间内完成。过程内聚:过程内聚:如果一个模块内部的处理是相关的,而且这些处理必须以特定的次序执行,则称过程内聚。第4章-总体设计284.2 软件结构设计原理4.2.4 模块独立性 通信内聚:通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或指各处理使用相同的输入数据或者产生相同的输出数据。顺序内聚:顺序内聚:指一个模块中各个处理元素都密切
12、相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。功能内聚:功能内聚:最强的内聚形式,指模块内所有元素共同完成一个功能,缺一不可。模块不能再分割。第4章-总体设计294.2 软件结构设计原理4.2.4 模块独立性第4章-总体设计30第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章-总体设计314.4 软件结构设计启发式规则1 1模块独立性准则:通过模块分解或合并,力求做到降低耦合提高内聚,保持模块相对独立性。(1)如图4.13(a)所示,若多个模块公有的一个子功
13、能(使用阴影部分表示),则可以将这个子功能独立成一个模块,由这些模块调用。第4章-总体设计324.4 软件结构设计启发式规则(2)若有多个功能相关的模块,如图4.13(b)所示B、C、D三个模块耦合度较高,E、F两个模块耦合度较高,应考虑对它们进行合并以减少控制信息的传递,降低接口的复杂程度。第4章-总体设计334.4 软件结构设计启发式规则2 2模块的作用域应该在控制域内 作用域:指受该模块内一个判断影响的所有模块的集合。控制域:指模块本身以及其所有直接或者间接从属于它的模块集合。第4章-总体设计344.4 软件结构设计启发式规则(a)(b)(c)图4.14 模块的作用域和控制域(a)差的结
14、构图 (b)不理想的结构图 (c)理想的结构图第4章-总体设计354.4 软件结构设计启发式规则改进方法:(1)上移判断点。如图4.14(a)所示,将模块D中的判断点上移到它的上层模块B中,或者将整个模块D合并到模块B中,使该判断的层次升高,以扩大它的控制域。(2)下移受判断影响的模块。将受判断影响的模块下移到判断所在模块的控制域内,如图4.14(a)所示,将模块C下移到模块D的下层。第4章-总体设计36(1)深度指软件结构中模块的层次数,它表示控制的层数,一定意义上能粗略地反映系统的规模和复杂程度。(2)宽度指同一层次中最大的模块个数,它表示控制的总分布。(3)扇出指一个模块直接调用的模块数
15、目。经验证明,良好的系统结构平均扇出数一般是3-4,不能超过5-9。(4)扇入指有多少个上级模块直接调用它。4.4 软件结构设计启发式规则3 3软件结构的形态特征准则软件结构的形态特征准则第4章-总体设计37(1)深度能粗略地反映系统的规模和复杂程度,宽度也能反映系统的复杂情况。宽度与模块扇出有关,若一个模块的扇出太多,说明本模块过分复杂,缺少中间层。(2)单一功能模块的扇入数大比较好,说明本模块为上层几个模块共享的公用模块,重用率高。(3)不能把彼此无关的功能凑在一起形成一个通用的超级模块,虽然它扇入高,但内聚低。因此非单一功能的模块扇入高时应考虑重新分解,以消除控制耦合的情况。4.4 软件
16、结构设计启发式规则第4章-总体设计384.3 软件结构设计工具如图所示,结构图的深度为5;宽度为8;模块M的扇出为3;模块T的扇入为4。第4章-总体设计394.4 软件结构设计启发式规则4 4模块大小准则 在考虑模块的独立性时,为了增加可理解性,模块的大小最好在50-150条语句左右,可以用1-2页纸打印,便于人们阅读与研究。5 5模块的接口准则(1)模块接口设计要简单,以降低复杂程度和冗余度。(2)设计功能可预测并能得到验证的模块。(3)适当划分模块规模,以保持其独立性。第4章-总体设计40第4章 总体设计 4.1 总体设计的目标及任务 4.2 软件结构设计原理 4.3 软件结构设计工具 4.4 软件结构设计启发式规则 4.5 结构化设计方法第4章-总体设计414.3.14.3.1层次图层次图4.3 软件结构设计工具 左图中,左图中,矩形框矩形框:模块:模块 连线连线:调用关系:调用关系层次图:适于在自顶向下设计软件的过程中使用。层次图:适于在自顶向下设计软件的过程中使用。第4章-总体设计424.3.2 HIPO4.3.2 HIPO图图=H=H图图+每个模块的每个模块的IPOIPO图