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

下载本文档

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

kok电子竞技:文档简介

1、第第5 5章章 总体设计总体设计软件生命周期软件生命周期软件定义软件定义开发时期开发时期维护时期维护时期问题定义问题定义可行性研究可行性研究需求分析需求分析总体设计总体设计详细设计详细设计编码和单元测试编码和单元测试综合测试综合测试系统设计系统设计系统实现系统实现n 5.1 5.1 软件设计概述软件设计概述n 5.2 5.2 软件设计原则软件设计原则5.2.1 5.2.1 模块化模块化5.2.2 5.2.2 模块独立模块独立5.2.3 5.2.3 抽象化抽象化5.2.4 5.2.4 自顶向下,逐步细化自顶向下,逐步细化5.2.5 5.2.5 信息隐蔽信息隐蔽n 5.3 5.3 模块设计准则模块

2、设计准则启发式规则启发式规则n 5.4 5.4 面向数据流的结构化设计方法面向数据流的结构化设计方法5.4.1 5.4.1 基本思想基本思想 5.4.2 5.4.2 变换型分析变换型分析5.4.3 5.4.3 事务型分析事务型分析本章内容本章内容:n掌握掌握: :软件设计的目标和任务;软件设计的目标和任务;n掌握掌握: :总体设计过程和原理;总体设计过程和原理;n掌握掌握: :模块化方法和模块独立性原则;模块化方法和模块独立性原则;n掌握掌握: :面向数据流的设计方法;面向数据流的设计方法;本章学习要求:本章学习要求:5.1 5.1 软件设计概述软件设计概述 从从工程管理工程管理和和技术技术两

3、个不同的角度对软件两个不同的角度对软件设计的认识:设计的认识:5.1 5.1 软件设计概述软件设计概述从从工程管理工程管理的角度来看,软件设计通常的角度来看,软件设计通常分为两步,即分为两步,即概要设计概要设计和和详细设计详细设计。概要设计概要设计p回答回答“怎样实现目标系统怎样实现目标系统”,又称为总体设,又称为总体设计、逻辑设计、高层设计;计、逻辑设计、高层设计;p确定软件的总体结构,即确定软件的总体结构,即确定软件系统的组确定软件系统的组成成份(子系统或模块)以及各组成成份之成成份(子系统或模块)以及各组成成份之间的相互关系;间的相互关系;详细设计详细设计p回答回答“怎样具体实现这个系统

4、怎样具体实现这个系统”,又称为模,又称为模块设计、物理设计、底层设计;块设计、物理设计、底层设计;p确定软件系统各组成成份内部的数据结构和确定软件系统各组成成份内部的数据结构和算法过程算法过程。5.1 5.1 软件设计概述软件设计概述从从技术技术的角度来看,根据用信息域表示的角度来看,根据用信息域表示的软件需求,以及功能和性能需求,进行的软件需求,以及功能和性能需求,进行数数据设计据设计、系统结构设计系统结构设计、过程设计过程设计。数据设计数据设计p侧重数据结构的定义;侧重数据结构的定义;系统结构设计系统结构设计p系统按功能划分系统按功能划分模块层次结构模块层次结构;p确定每个确定每个模块的功

5、能模块的功能、模块间的模块间的调用关系调用关系、模块间的模块间的接口接口;p建立与已确定的软件需求的对应关系;建立与已确定的软件需求的对应关系;p评估评估模块划分的质量;模块划分的质量;5.1 5.1 软件设计概述软件设计概述过程设计过程设计p确定为满足系统的性能需求所必须的确定为满足系统的性能需求所必须的算算法和模块间的控制方式法和模块间的控制方式;p确定外部信号的接收发送形式确定外部信号的接收发送形式;5.1 5.1 软件设计概述软件设计概述5.2 5.2 软件设计原理软件设计原理n模块化模块化n抽象化抽象化n自顶向下,逐步细化自顶向下,逐步细化n信息隐蔽信息隐蔽n模块独立模块独立n模块的

6、定义模块的定义 又称又称“组件组件“,它一般具有如下三个基本属性:,它一般具有如下三个基本属性:l功能功能 描述该模块实现什么功能描述该模块实现什么功能l逻辑逻辑 描述模块内部怎么做描述模块内部怎么做l状态状态 该模块使用时环境和条件该模块使用时环境和条件 在描述一个模块时,必须按模块的在描述一个模块时,必须按模块的外部特性外部特性和和内部特性内部特性分别描述。分别描述。5.2.1 5.2.1 模块化模块化n模块的定义模块的定义 外部特性外部特性 模块的模块的名称名称、参数表参数表,其中,其中输入参数输入参数和和输出参数输出参数,以及程序返回的,以及程序返回的状态状态;内部特性内部特性 完成功

7、能的完成功能的程序代码程序代码和仅供该模块和仅供该模块内部内部使用的数据使用的数据; 5.2.1 5.2.1 模块化模块化n模块的分类模块的分类传入模块传入模块 从下属模块取得数据从下属模块取得数据,经过处理,再将其,经过处理,再将其传送给上级模块传送给上级模块,它传送的数据流叫,它传送的数据流叫逻辑输逻辑输入数据流入数据流;5.2.1 5.2.1 模块化模块化n模块的分类模块的分类传出模块传出模块 从上级模块获得数据从上级模块获得数据,进行处理,再将其,进行处理,再将其传送给下属模块传送给下属模块,它传送的数据流叫,它传送的数据流叫逻辑输逻辑输出数据流出数据流;5.2.1 5.2.1 模块化

8、模块化n模块的分类模块的分类变换模块变换模块 从上级模块取得数据从上级模块取得数据,进行特定的处理,进行特定的处理,转换成其它形式再转换成其它形式再返回给上级模块返回给上级模块,它加工,它加工的数据流叫的数据流叫变换数据流变换数据流 ;5.2.1 5.2.1 模块化模块化n模块的分类模块的分类协调模块协调模块对所有对所有下属模块进行协调和管理下属模块进行协调和管理的模块的模块 ;5.2.1 5.2.1 模块化模块化5.2.1 5.2.1 模块化模块化n模块化模块化 把程序划分成把程序划分成独立命名且可以独立访问独立命名且可以独立访问的模块的模块,每个模块完成一个子功能。再,每个模块完成一个子功

9、能。再把他把他们们组成一个集体组成一个集体,可以,可以完成指定的功能完成指定的功能,满,满足问题的要求。足问题的要求。n作用作用使软件结构清晰;使软件结构清晰;使软件容易测试和调试,从而提高软件的使软件容易测试和调试,从而提高软件的可靠性;可靠性;提高软件的可修改性;提高软件的可修改性; 模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握问题从整体上把握问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题可减小解题所需的总的工作可减小解题所需的总的工作分解分解5.2.1 5.2.1 模块化模块化C(p1)C(p2) C(p1)C(p2

10、) 则则 E(p1)E(p2)E(p1)E(p2)其中:其中:p1p1和和p2p2是两个问题是两个问题C(xC(x) )是由是由x x问题决定的复杂性问题决定的复杂性E(xE(x) )是解决是解决x x问题所需要的工作问题所需要的工作量量C(p1+p2) C(p1)+C(p2)C(p1+p2) C(p1)+C(p2)E(p1+p2) E(p1)+E(p2)E(p1+p2) E(p1)+E(p2)试验试验发现发现 模块划分得越小成本越低模块划分得越小成本越低 ,但是,但是集成成本集成成本却随着模却随着模块划分得越小成本块划分得越小成本越高越高。如何确定模块化分的最小成本区,并保证模块的如何确定模

11、块化分的最小成本区,并保证模块的最佳性能,是设计活动中的主要任务之一。最佳性能,是设计活动中的主要任务之一。n模块数与开发工作量的关系模块数与开发工作量的关系5.2.1 5.2.1 模块化模块化成成本本或或工工作作量量模块数量模块数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块最小成本区域最小成本区域5.2.1 5.2.1 模块化模块化5.2.1 5.2.1 模块化模块化nMeyerMeyer五五条标准:条标准:用以评价定义模块系统设用以评价定义模块系统设计方法的有效能力计方法的有效能力模块可分解性模块可分解性模块可模块可组装性:组装性:能把现有的能把现有的( (可重用的可重用的

12、) )设计构件组装成新系统;设计构件组装成新系统;模块模块连续性:连续性:系统需求的微小修改只修系统需求的微小修改只修改对个别模块,而不是整体;改对个别模块,而不是整体;模块可模块可理解性:理解性:理解模块无需参考其他理解模块无需参考其他模块;模块;模块模块保护性:保护性:模块内出现异常情况时,模块内出现异常情况时,它的影响局限在该模块内部;它的影响局限在该模块内部;n 定义定义模块的独立性指软件模块的独立性指软件系统中每个模块系统中每个模块只涉及只涉及软件要求的软件要求的具体的子功能具体的子功能;与与软件软件系统中其他模块的接口简单系统中其他模块的接口简单,接口指传递数据的方式,传递数据的接

13、口指传递数据的方式,传递数据的结构,传递数据的量;结构,传递数据的量;5.2.2 5.2.2 模块的独立性模块的独立性 n 衡量独立性准则衡量独立性准则 独立性好的模块具有易于开发、组合、易独立性好的模块具有易于开发、组合、易修改以及测试的特点,衡量模块的独立程度修改以及测试的特点,衡量模块的独立程度的两个准则:的两个准则:耦合性耦合性 模块之间模块之间的互相连接的紧密程度的度量;的互相连接的紧密程度的度量;内聚性内聚性 模块内部各个元素之间模块内部各个元素之间结合的紧密程度的结合的紧密程度的度量度量 ; 模块独立性比较强的模块应是模块独立性比较强的模块应是松散耦合高松散耦合高度内聚度内聚的模

14、块的模块。 5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性耦合性耦合性对软件结构内对软件结构内不同模块之间的联不同模块之间的联系程度的度量系程度的度量。耦合强度依赖的因素:耦合强度依赖的因素:p一模块对另一模块的引用;一模块对另一模块的引用;p一模块向另一模块传递的数据量;一模块向另一模块传递的数据量;p一模块施加到另一模块的控制的数量;一模块施加到另一模块的控制的数量;p模块间接口的复杂程度;模块间接口的复杂程度;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性模块之间可能的连接方式有模块之间可能的连接方式有7 7种,构成

15、耦合种,构成耦合性的性的7 7种类型;种类型;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性非直接耦合非直接耦合( (模块独立性最强模块独立性最强) )p两个模块没有直接关系;两个模块没有直接关系;p模块之间的联系完全是模块之间的联系完全是通过主模块的控通过主模块的控制和调用来实现的制和调用来实现的;5.2.2 5.2.2 模块的独立性模块的独立性 模块模块1 1模块模块2 2模块模块1.1模块模块1.2模块A非直接耦合模块:非直接耦合模块:模快模快1 1与模快与模快2 2模快模快1.11.1与模快与模快1.2 1.2 n 模块间的耦合性模块间的耦合性数据数

16、据耦合耦合p模块之间模块之间通过通过简单数据参数简单数据参数来交换输入、来交换输入、输出的信息,不是控制参数、公共数据输出的信息,不是控制参数、公共数据结构或外部变量结构或外部变量。5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性特征耦合特征耦合( (标记标记耦合耦合) )p两个模块都与同一个两个模块都与同一个数据结构数据结构有关,被有关,被调用的模块调用的模块只需要使用其中一部分数据只需要使用其中一部分数据元素元素。5.2.2 5.2.2 模块的独立性模块的独立性 住户详情住户详情住户详情住户详情数据结构中包数据结构中包括括本月用水量本月用水量、本月用本月用

17、电量电量 本月本月用电量用电量将传递参数由数据结构将传递参数由数据结构改为数据元素,则由改为数据元素,则由特特征耦合征耦合转换为转换为数据耦合数据耦合。 (本月本月用水量用水量)n 模块间的耦合性模块间的耦合性控制控制耦合耦合p一个模块一个模块通过传送开关、标志、名字等通过传送开关、标志、名字等控制信息控制信息,控制选择另一模块的功能。,控制选择另一模块的功能。5.2.2 5.2.2 模块的独立性模块的独立性 ABFlagF2F1FnFlag接口单一接口单一,但仍,但仍然然影响被控模块影响被控模块的内部逻辑。的内部逻辑。n 模块间的耦合性模块间的耦合性控制控制耦合耦合p控制耦合增加了理解和编程

18、的复杂性,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,调用模块必须知道被调模块的内部逻辑,增加了相互依赖增加了相互依赖;p去除模块间控制耦合的方法:去除模块间控制耦合的方法:p将将被调用模块被调用模块内的判定内的判定上移到调用模上移到调用模块中进行块中进行;p被调用模块分解被调用模块分解成若干单一功能模块;成若干单一功能模块;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性控制控制耦合耦合p去除模块间控制耦合的方法举例去除模块间控制耦合的方法举例5.2.2 5.2.2 模块的独立性模块的独立性 AB计算平均分或最高分计算平均分或最高分

19、平均/最高成绩AB1计算平均分计算平均分平均成绩最高成绩B2计算最高分计算最高分n 模块间的耦合性模块间的耦合性外部外部耦合耦合p一组模块一组模块都访问同一都访问同一简单全局变量简单全局变量,不是,不是同一全局数据结构,不是通过参数表传递同一全局数据结构,不是通过参数表传递该全局变量的信息。该全局变量的信息。pextern、static修饰全局变量,修饰全局变量,const修饰全修饰全局常量局常量lexternextern:声明函数或变量,不是定义,:声明函数或变量,不是定义,可作用与其他编译单元;可作用与其他编译单元;lstaticstatic:声明的同时进行定义,作用:声明的同时进行定义,

20、作用范围只能是本身的编译单元;范围只能是本身的编译单元;lconstconst:单独使用与:单独使用与staticstatic作用相同,作用相同,与与externextern连用时与连用时与externextern作用相同;作用相同;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性公共公共耦合耦合p一组模块都访问一组模块都访问同一个公共数据环境同一个公共数据环境( (公共数据结构公共数据结构) ),则它们之间的耦合就,则它们之间的耦合就称为公共耦合;称为公共耦合;p公共耦合的公共耦合的复杂程度随耦合模块的个数复杂程度随耦合模块的个数增加增加而显著增加;而显著增

21、加;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性公共公共耦合耦合p类型类型5.2.2 5.2.2 模块的独立性模块的独立性 Global:V1,V2A:A1=V1+V2B:V1=B1Global : V1, V2A:V1+B:V2=B1+V1松散的公共耦合松散的公共耦合紧密的公共耦合紧密的公共耦合n 模块间的耦合性模块间的耦合性公共公共耦合耦合p存在问题存在问题l模块间存在错综复杂的联系,软件模块间存在错综复杂的联系,软件可可理解性降低理解性降低;l修改变量名或属性困难,软件修改变量名或属性困难,软件可维护可维护性差性差;l公共数据区及全程变量无保护措施,

22、公共数据区及全程变量无保护措施,软件可靠性差软件可靠性差;慎用公共数据区和全局变量慎用公共数据区和全局变量!5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性内容内容耦合耦合p当一个模块直接修改或操作另一个模块当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,的数据,或者直接转入另一个模块时,发生了内容耦合发生了内容耦合 。5.2.2 5.2.2 模块的独立性模块的独立性 n 模块间的耦合性模块间的耦合性内容内容耦合耦合p内容耦合发生情况:内容耦合发生情况:n访问另一模块的内部数据访问另一模块的内部数据或或不通过正不通过正常入口进入另一模块常入

23、口进入另一模块;5.2.2 5.2.2 模块的独立性模块的独立性 ABCDA:goto C1C:C1: n 模块间的耦合性模块间的耦合性内容内容耦合耦合p内容耦合发生情况:内容耦合发生情况:n部分代码重叠部分代码重叠(常出现在汇编程序(常出现在汇编程序中);中);5.2.2 5.2.2 模块的独立性模块的独立性 B An 模块间的耦合性模块间的耦合性内容内容耦合耦合p内容耦合发生情况:内容耦合发生情况:n一个模块有多个入口(功能);一个模块有多个入口(功能);5.2.2 5.2.2 模块的独立性模块的独立性 A:entry 1:entry 2:n 模块间的耦合性模块间的耦合性5.2.2 5.2

24、.2 模块的独立性模块的独立性 耦合是影响软件复杂程度和设计质量的耦合是影响软件复杂程度和设计质量的重要因素,重要因素,建立模块间耦合度尽可能松散建立模块间耦合度尽可能松散的系统。的系统。尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共环境耦合限制公共环境耦合完全不用内容耦合完全不用内容耦合n 模块的内聚性模块的内聚性模块内各个元素(或组成部分)模块内各个元素(或组成部分)结合紧结合紧密程度的度量;密程度的度量;内聚程度高的模块应当只完成软件过程内聚程度高的模块应当只完成软件过程中的一个单一的任务;中的一个单一的任务;类型类型p一般模块的内聚性分为一般模块的内聚性分为7 7种类

25、型种类型5.2.2 5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性功能内聚功能内聚(高内聚高内聚)p模块中各个部分都是完成某一具体功能模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能所有部分都是为了完成一项具体功能而而协同工作,紧密联系,不可分割的;协同工作,紧密联系,不可分割的;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性顺序内聚顺序内聚(高内聚高内聚)p模块内的处理元素和同一功能密切相关,模块内的处理元素和同一功能密切相关,且这些且这些处理顺序执行处理

26、顺序执行;p一个处理元素的输出数据作为下一处理一个处理元素的输出数据作为下一处理元素的输入数据;元素的输入数据;p根据根据数据流图划分数据流图划分模块时通常得模块时通常得到顺序到顺序内聚的模块内聚的模块;5.2.2 5.2.2 模块的独立性模块的独立性 模块模块A(A(顺序内聚顺序内聚) )求一元二次方程根的模块求一元二次方程根的模块1 1、输入系数、输入系数2 2、求解、求解3 3、输出方程解、输出方程解n 模块的内聚性模块的内聚性通信内聚通信内聚(中内聚中内聚)p如果一个模块内各功能部分都如果一个模块内各功能部分都使用了相使用了相同的输入数据,或产生了相同的输出数同的输入数据,或产生了相同

27、的输出数据据;5.2.2 5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性通信内聚通信内聚(中内聚中内聚)p举例举例5.2.2 5.2.2 模块的独立性模块的独立性 产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块产生产生工资报表工资报表计算计算平均工资平均工资职工工资记录职工工资记录职工工资报表职工工资报表平均工资平均工资n 模块的内聚性模块的内聚性通信内聚通信内聚(中内聚中内聚)p举例举例5.2.2 5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性过程内聚过程内聚(中内聚中内聚)p使用流程图做为工具设计程序时,把使用流程图做为工具设计

28、程序时,把流程图流程图中的某一部分划出组成模块中的某一部分划出组成模块,就得到过程内,就得到过程内聚模块,聚模块,例如把程序流程图中的循环部分、例如把程序流程图中的循环部分、判定部分分别组成模块,这些模块都是过程判定部分分别组成模块,这些模块都是过程内聚模块内聚模块;p模块内的处理是相关的,而且必须以特定次模块内的处理是相关的,而且必须以特定次序执行。序执行。5.2.2 5.2.2 模块的独立性模块的独立性 读入读入成绩单成绩单读入并审查读入并审查成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计并打印成绩成绩n 模块的内聚性模块的内聚性时间内聚时间内聚(低内聚低内

29、聚)p一个模块包含的一个模块包含的任务必须在同一段时间任务必须在同一段时间内执行内执行,如模块完成各种初始化工作;,如模块完成各种初始化工作;5.2.2 5.2.2 模块的独立性模块的独立性 模块模块C C(时间内聚)(时间内聚)紧急故障处理模块紧急故障处理模块1 1、关闭文件、关闭文件2 2、报警、报警3 3、保留现场、保留现场。n 模块的内聚性模块的内聚性逻辑内聚逻辑内聚(低内聚低内聚)p模块把模块把几种相关的功能组几种相关的功能组合在一起合在一起,每次被调用时,每次被调用时,由由传送给模块传送给模块的判定参数的判定参数来确定该模块应执行哪一来确定该模块应执行哪一种功能种功能;5.2.2

30、5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性巧合内聚巧合内聚(低内聚低内聚)p一个模块完成一组任务,任务间的关系一个模块完成一组任务,任务间的关系松散松散;p程序中若一组语句多次出现,将其作为程序中若一组语句多次出现,将其作为一个模块以节省内存;一个模块以节省内存;5.2.2 5.2.2 模块的独立性模块的独立性 ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M M中的三个语句没中的三个语句没有任何联系;有任何联系;缺点:缺点:可理解性差可理解性差, 可修改性差可修改性差;n 模块的内聚性模块的内聚性模块内聚性的判断模块内聚性的判断5.

31、2.2 5.2.2 模块的独立性模块的独立性 该模块该模块只能执只能执行一个行一个功能功能吗?吗?功能内聚功能内聚模块模块内各内各组成组成部分部分的关的关系系如如何?何?是是否否次序重次序重要吗?要吗?次序重次序重要吗?要吗?逻辑相逻辑相似吗?似吗?数据流数据流控制流控制流两者两者都不是都不是是是是是是是否否否否否否顺序内聚顺序内聚通信内聚通信内聚过程内聚过程内聚时间内聚时间内聚逻辑内聚逻辑内聚巧合内聚巧合内聚5.2.2 5.2.2 模块的独立性模块的独立性 n 模块的内聚性模块的内聚性七种模块内聚性能比较七种模块内聚性能比较抽象就是抽象就是抽出事务的本质特性而暂时不抽出事务的本质特性而暂时不

32、考虑它们的细节考虑它们的细节,处理,处理复杂系统复杂系统的唯一有效的唯一有效方法是用方法是用层次的方式构造和分析层次的方式构造和分析。对软件系统进行模块设计时,可以有对软件系统进行模块设计时,可以有不不同层次的抽象同层次的抽象, ,不同层次抽象的细化建立不同层次抽象的细化建立: :l需求分析级:领域术语描述求解方案;需求分析级:领域术语描述求解方案;l概要设计级:软件的体系结构;概要设计级:软件的体系结构;l详细设计级:接口设计、过程设计;详细设计级:接口设计、过程设计;l代码设计级:源代码设计。代码设计级:源代码设计。5.2.3 5.2.3 抽象化抽象化 将软件的体系结构按照将软件的体系结构

33、按照自顶向下自顶向下的原则,的原则,对各个层次的对各个层次的过程细节和数据细节逐层细化,过程细节和数据细节逐层细化,直到能够用某种程序设计语言的语句实现为直到能够用某种程序设计语言的语句实现为止止,从而最后确定整个体系结构。,从而最后确定整个体系结构。 5.2.4 5.2.4 自顶向下,逐步细化自顶向下,逐步细化使用问题环境语言,概括地描述问题的解。使用问题环境语言,概括地描述问题的解。使用面向问题和实现的术语,描述问题的解。使用面向问题和实现的术语,描述问题的解。以直接实现的方式描述问题的解。以直接实现的方式描述问题的解。5.2.5 5.2.5 信息隐蔽信息隐蔽 信息隐蔽是指信息隐蔽是指每个

34、模块的实现细节对于每个模块的实现细节对于其它模块来说是隐蔽的其它模块来说是隐蔽的。也就是说,模块中。也就是说,模块中所包含的信息(包括所包含的信息(包括数据和过程数据和过程)不允许其)不允许其它不需要这些信息的模块使用。它不需要这些信息的模块使用。对模块内部信息访问的约束对模块内部信息访问的约束 !5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 改进软件结构提高模块独立性改进软件结构提高模块独立性n 模块规模适中模块规模适中n 适当控制深度、扇入、扇出适当控制深度、扇入、扇出n 作用域在控制域内作用域在控制域内n 降低接口的复杂程度降低接口的复杂程度n 单出单入,避免内容耦合单

35、出单入,避免内容耦合n 模块功能可预测模块功能可预测5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 改进软件结构提高模块独立性改进软件结构提高模块独立性 通过模块分解或合并,争取降低耦合、通过模块分解或合并,争取降低耦合、提高内聚,(增加内聚提高内聚,(增加内聚 减少耦合)减少耦合)分解分解A AB BC1C1C CC2C2C CAC1AC1BC2BC2C CA AB BC1C1C2C2C C 合并合并5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 模块规模适中模块规模适中分解不充分导致分解不充分导致模块过大,可理解性模块过大,可理解性降低降低,分解不应该降低模

36、块的独立性;,分解不应该降低模块的独立性;过小的模块开销大于有效操作过小的模块开销大于有效操作,当只,当只有一个模块调用该模块时可合并到上级有一个模块调用该模块时可合并到上级模块;模块;5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 适当控制深度、扇入、扇出适当控制深度、扇入、扇出深度深度= =分层的层数,分层的层数,过大表示分工过细过大表示分工过细,应,应考虑管理模块考虑管理模块合并合并;宽度宽度= =同一层上模块数的最大值,过大表示同一层上模块数的最大值,过大表示系统复杂度大,影响宽度的最大因素是模块系统复杂度大,影响宽度的最大因素是模块的扇出;的扇出;扇出扇出= =直接调

37、用的模块数,直接调用的模块数,过大表示需控制过大表示需控制和协调的下级模块多和协调的下级模块多,好的系统扇出通常是,好的系统扇出通常是3 34 4;过小可将下级模块功能分解过小可将下级模块功能分解,或合并,或合并到上级模块;到上级模块;扇入扇入= =调用该模块的上级模块数;调用该模块的上级模块数;减少扇出,在增加程序深度的前提减少扇出,在增加程序深度的前提下追求高扇入。下追求高扇入。5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 作用域在控制域内作用域在控制域内控制域控制域: : M M的控制域为的控制域为 MM,A A,B B,CC作用域作用域: : M M中的一个中的一个判

38、定所影响的模块判定所影响的模块M MA AC CB BA: if then goto B1 B: B1: 作用域在控制域内作用域在控制域内A: if then goto M1 M: M1: goto C 作用域超出了控制域作用域超出了控制域改进方法改进方法:1):1)可以把可以把A A中的中的 if if 移到移到M M中;中; 2)2)可以把可以把C C移到移到A A下面下面; ;5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 作用域在控制域内作用域在控制域内原则原则p 对于任何一个内部存在判断调用的模对于任何一个内部存在判断调用的模块,它的块,它的判断作用域应该是其控制域判

39、断作用域应该是其控制域的一个子集的一个子集; ;p 存在判断调用的模块存在判断调用的模块,所在层次,所在层次不不要与那些属于判断作用域的模块所在要与那些属于判断作用域的模块所在的层次相隔太远的层次相隔太远; ;5.3 5.3 模块设计准则模块设计准则启发式规则启发式规则n 降低接口的复杂程度降低接口的复杂程度接口复杂可能表明模块的独立性差接口复杂可能表明模块的独立性差n模块功能可预测模块功能可预测相同输入必产生相同输出;相同输入必产生相同输出; 反例:模块中使用全局变量或静态变反例:模块中使用全局变量或静态变量,则可能导致不可预量,则可能导致不可预5.4 5.4 面向数据流的结构化设计方法面向

40、数据流的结构化设计方法 n 定义定义 由美国由美国IBMIBM公司提出来的基于数据流的系公司提出来的基于数据流的系统设计方法,由统设计方法,由模块化、自顶向下细化、结模块化、自顶向下细化、结构化程序设计构化程序设计等软件系统总体设计思想等软件系统总体设计思想发展发展而来而来的,的,目标目标是建立一个是建立一个耦合度尽可能小耦合度尽可能小、内聚度应尽可能强内聚度应尽可能强的结果良好的软件的结果良好的软件系统系统。 5.4.1 5.4.1 基本思想基本思想n 分类分类变换型变换型事务型事务型混合型混合型5.4.1 5.4.1 基本思想基本思想n 分类分类变换型变换型5.4.1 5.4.1 基本思想

41、基本思想输入输入输出输出变换变换中心中心基本结构基本结构由输入、变换由输入、变换中心和输出三中心和输出三部分组成部分组成特征特征输入输入:取得数据,为变换数据做准备;:取得数据,为变换数据做准备;变换中心变换中心:变换数据,数据处理过程的核心工作;:变换数据,数据处理过程的核心工作;输出输出:给出数据,对变换后的数据进行处理工作:给出数据,对变换后的数据进行处理工作;n 分类分类事务型事务型 某某种作业数据流种作业数据流可以引发一个或多可以引发一个或多个处理个处理,这些处理能够完成该作业要求,这些处理能够完成该作业要求的功能,这种数据流就叫做的功能,这种数据流就叫做事务事务。5.4.1 5.4

42、.1 基本思想基本思想事务事务中心中心接受接受路径路径动动作作路路径径基本结构基本结构具有在多种事务具有在多种事务中选择执行某类中选择执行某类事物的能力事物的能力特征特征n 分类分类混合型混合型5.4.1 5.4.1 基本思想基本思想输入输入输出输出变换型数据流图变换型数据流图事务型数据流图事务型数据流图事务事务中心中心活动活动路径路径变换中心变换中心n 工作步骤工作步骤分析分析数据处理问题的数据处理问题的类型类型从数据流图从数据流图导出模块结构图导出模块结构图根据模块的独立性原则根据模块的独立性原则修改系统结构图修改系统结构图 5.4.1 5.4.1 基本思想基本思想5.4.1 5.4.1

43、基本思想基本思想n重画数据流图重画数据流图,出发点是,出发点是描述系统中的数据是描述系统中的数据是如何流动的如何流动的;n在数据流图上在数据流图上区分区分系统的系统的逻辑输入逻辑输入、逻辑输出逻辑输出和和中心变换中心变换部分;部分;5.4.2 5.4.2 变换型分析变换型分析变换中心变换中心传传入入部分部分传出部分传出部分输入输入加工加工输出输出总控模块总控模块加工模块加工模块输入模块输入模块输出模块输出模块映射映射n一级分解一级分解,设计主模块,设计主模块为每个逻辑输入设计一个为每个逻辑输入设计一个输入模块,为输入模块,为主模块提供数据主模块提供数据;为每个逻辑输出设计一个为每个逻辑输出设计

44、一个输出模块,将输出模块,将主模块提供的数据输出主模块提供的数据输出;为中心变换设计一个为中心变换设计一个变换模块,将逻辑变换模块,将逻辑输入转换成逻辑输出;输入转换成逻辑输出;n二级分解二级分解,设计中、下层模块,设计中、下层模块自顶向下,逐层细化,自顶向下,逐层细化,为每一个输入模为每一个输入模块、输出模块、变换模块设计它们的从块、输出模块、变换模块设计它们的从属模块;属模块;设计下层模块的顺序是任意的,但设计下层模块的顺序是任意的,但一般一般是先设计输入模块的下层模块;是先设计输入模块的下层模块;5.4.2 5.4.2 变换型分析变换型分析举例:举例:5.4.2 5.4.2 变换型分析变

45、换型分析(1)(1)重画数据流图;重画数据流图;(2)(2)在图上标出逻辑输入、逻辑输出和变换中心的分界;在图上标出逻辑输入、逻辑输出和变换中心的分界;abdvrp变换中心变换中心c,ec,e 逻逻辑输入辑输入w,uw,u 逻逻辑输出辑输出(3)(3)完成第一级分解完成第一级分解变换中心变换中心a ab bv vr rp pd de eMcMcM MI IM MT TM MO Oc,ec,ec,ec,eu,wu,wu,wu,w顶层顶层第一层第一层5.4.2 5.4.2 变换型分析变换型分析第一级分解后第一级分解后 ( (另一种画法另一种画法) )McMcM MI IM MO Oc ce eu

46、u M MI IQ QP PR RM MO Oe ec,pc,p p pr r r r w,u w,uw wa ab bv vr rp pd de e变换中心变换中心5.4.2 5.4.2 变换型分析变换型分析M MI I对逻辑输入的分解对逻辑输入的分解C CE EB BA AD Da a b b d d e ec ca ab bv vr rp pd de e变换中变换中心心M MO O对输出的分解对输出的分解W WU UV Vv vu uw wM MT TQ QP PR R e ec,pc,pr ru,wu,w对变换中心加工的分解对变换中心加工的分解p pr rw,uw,u(4)(4)完成第

47、二级分解完成第二级分解5.4.2 5.4.2 变换型分析变换型分析M MI IC CB BA AE ED DM MT TQ QP PR R从变换分析导出的初始从变换分析导出的初始结构结构图图M MO OW WU UV VMcMcc, ec, ew,uw,uw,uw,uc,ec,e获得完整的结构图获得完整的结构图5.4.2 5.4.2 变换型分析变换型分析n识别事务源,识别事务源,从问题定义和需求分析的结果中,找从问题定义和需求分析的结果中,找出各种需要处理的事务,出各种需要处理的事务,通常来自物理输入装置通常来自物理输入装置;n规定适当的事务型结构规定适当的事务型结构;n识别各种事务和它们定义

48、的操作识别各种事务和它们定义的操作;n在事务分析的过程中,如果不同事务的一些中间模在事务分析的过程中,如果不同事务的一些中间模块可由块可由具有类似的语法和语义的若干个具有类似的语法和语义的若干个低层模块组低层模块组成,则可以把这些成,则可以把这些低层模块构造成公用模块低层模块构造成公用模块;n建立事务处理模块,建立事务处理模块,对每一事务,或对联系密切的对每一事务,或对联系密切的一组事务,建立一个事务处理模块;一组事务,建立一个事务处理模块; n对事务处理模块规定它们全部的下层操作模块;对事务处理模块规定它们全部的下层操作模块;n对操作模块规定它们的全部细节模块;对操作模块规定它们的全部细节模

49、块;5.4.3 5.4.3 事务型分析事务型分析动作动作1 1事务中心事务中心接受部分接受部分接受接受事务事务事务事务分析分析动作动作2 2动作动作3 3事务中心事务中心调度模块调度模块输入事务输入事务输出模块输出模块动作动作2 2动作动作1 1动作动作3 3映射映射5.4.3 5.4.3 事务型分析事务型分析举例:举例:- - 将具有将具有事务型事务型的的数据流数据流图导出图导出结构结构图图事务中心事务中心事务事务源源5.4.3 5.4.3 事务型分析事务型分析主模块主模块给出给出H H取得取得A AL LM MN NA AG GH HB BE EC CF FD D5.4.3 5.4.3 事

50、务型分析事务型分析举例:举例:实例分析:银行储蓄系统实例分析:银行储蓄系统业务员业务员1 1接收事务接收事务2.12.1记录存款记录存款信息信息2.22.2打印存款单打印存款单储户储户3.13.1检查是否有检查是否有密码密码3.43.4打印利息打印利息清单清单3.23.2验证密码验证密码3.33.3计算利息计算利息存款业务存款业务存款信息存款信息存款单存款单利息清单利息清单密码正确密码正确利息利息取款业务取款业务储户储户事务事务存款信息存款信息无无有有输入密码输入密码密码无效密码无效第第1 1步:步: 对银行储蓄系统的数据流图进行复查对银行储蓄系统的数据流图进行复查并精化,得到如图所示的数据流

51、图。并精化,得到如图所示的数据流图。 第第2 2步:步: 确定数据流图具有变换特性还是事务确定数据流图具有变换特性还是事务特性。特性。 分析精化后的数据流图,可以看到分析精化后的数据流图,可以看到整整个系统是对存款及取款两种不同的事务个系统是对存款及取款两种不同的事务进行处理,因此属于事务特型进行处理,因此属于事务特型。第第3 3步:步: 确定输入流和输出流的边界。确定输入流和输出流的边界。实例分析:银行储蓄系统实例分析:银行储蓄系统实例分析:银行储蓄系统实例分析:银行储蓄系统业务员业务员1 1接收事务接收事务2.12.1记录存款记录存款信息信息2.22.2打印存款打印存款单单储户储户3.13

52、.1检查是否有检查是否有密码密码3.43.4打印利息打印利息清单清单3.23.2验证密码验证密码3.33.3计算利息计算利息存款业务存款业务存款信息存款信息存款单存款单利息清单利息清单密码正确密码正确利息利息取款业务取款业务储户储户事务事务存款信息存款信息无无有有输入密码输入密码密码无效密码无效输入输入输出输出事务调度事务调度第第4 4步:步:完成第一级分解。完成第一级分解。实例分析:银行储蓄系统实例分析:银行储蓄系统 储蓄系统储蓄系统 输入数据输入数据事务调度事务调度 输出数据输出数据第第5 5步:步: 完成第二级分解完成第二级分解- -输入结构输入结构 实例分析:银行储蓄系统实例分析:银行

53、储蓄系统输入数据输入数据输入事务输入事务输入密码输入密码第第5 5步:步: 完成第二级分解完成第二级分解- -输出结构输出结构 实例分析:银行储蓄系统实例分析:银行储蓄系统输出数据输出数据打印存款单打印存款单打印利息清单打印利息清单第第5 5步:步: 完成第二级分解完成第二级分解- -事务结构事务结构 实例分析:银行储蓄系统实例分析:银行储蓄系统事务调度事务调度处理存款处理存款处理取款处理取款记录存款信息记录存款信息检查密码检查密码计算利息计算利息验证密码验证密码实例分析:银行储蓄系统实例分析:银行储蓄系统第第5 5步:步: 将输入结构、输出结构和事务结构合并。将输入结构、输出结构和事务结构合

54、并。 输入数据输入数据输入事务输入事务输入密码输入密码输出数据输出数据打印存款单打印存款单打印利息清单打印利息清单 调度调度处理存款处理存款处理取款处理取款记录存款信息记录存款信息检查密码检查密码计算利息计算利息验证密码验证密码 储储 蓄蓄 系系 统统实例分析:银行储蓄系统实例分析:银行储蓄系统第第6 6步:步: 对软件结构进行精细化,由于对软件结构进行精细化,由于“输入密码输入密码”模块模块实际应该在实际应该在”检查密码检查密码“模块内,调整模块内,调整如下:如下:输入事务输入事务输出数据输出数据打印存款单打印存款单打印利息清单打印利息清单输入密码输入密码 调度调度处理存款处理存款处理取款处

55、理取款记录存款信息记录存款信息检查密码检查密码计算利息计算利息验证密码验证密码 储储 蓄蓄 系系 统统实例分析:银行储蓄系统实例分析:银行储蓄系统第第6 6步:步: 进一步对进一步对“输入事务输入事务”模块精细化模块精细化,调整如,调整如下:下:输入密码输入密码打印存款单打印存款单处理存款处理存款 记录记录存款信息存款信息 打印打印利息清单利息清单 处理取款处理取款检查密码检查密码计算利息计算利息验证密码验证密码 储储 蓄蓄 系系 统统输入事务输入事务存款信息存款信息取款信息取款信息重点掌握:重点掌握:总体设计的总体设计的任务任务软件设计原理软件设计原理模块化、抽象化、信息隐蔽的概念模块化、抽象化、信息隐蔽的概念 模块独立性的衡量标准模块独立性的衡量标准 耦合性、内聚性的类型及独立性的强弱耦合性、内聚性的类型及独立性的强弱启发式规则启发式规则 规则内容规则内容面向数据结构化设计方法面向数据结构化设计方法 变换型、事务型的定以及结构化分析方法变换型、事务型的定以及结构化分析方法本章小结本章小结

温馨提示

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

kok电子竞技:最新文档

评论

0/150

提交评论