《第四章_总体设计.ppt》由会员分享,可在线阅读,更多相关《第四章_总体设计.ppt(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章总体设计第四章总体设计第四章:总体设计第四章:总体设计学习目标学习目标:1.1.了解;总体设计的文档与评审了解;总体设计的文档与评审 2.2.掌掌握握:总总体体设设计计的的步步骤骤、软软件件设设计计的的概概念念和和原原理理、启发规则、图形工具、变换分析、事物分析启发规则、图形工具、变换分析、事物分析学习要点学习要点:软件设计的概念和原理、面向数据流的设计过程。软件设计的概念和原理、面向数据流的设计过程。学习目标与学习要点学习目标与学习要点第四章:总体设计第四章:总体设计总体设计总体设计(System Design)System Design)又称又称概要设计概要设计,初步设计初步设计基本
2、目的:基本目的:回答回答“概括地说,系统应该如何实现概括地说,系统应该如何实现?”?”在总体设计阶段,应划分出组成系统的物理元在总体设计阶段,应划分出组成系统的物理元素素程序、文件、数据库、人工过程和文档等,并程序、文件、数据库、人工过程和文档等,并确定系统中每个程序由哪些模块组成以及这些模块相确定系统中每个程序由哪些模块组成以及这些模块相互间的关系。互间的关系。第四章:总体设计第四章:总体设计第四章:总体设计第四章:总体设计系统设计:系统设计:从数据流图出发,确定系统的具体实现方案从数据流图出发,确定系统的具体实现方案软件结构设计:软件结构设计:确定软件由哪些模块组成,以及这些模确定软件由哪
3、些模块组成,以及这些模块之间的动态调用关系。块之间的动态调用关系。4.1总体设计的步骤总体设计的步骤第四章:总体设计第四章:总体设计1.设想供选择的方案设想供选择的方案从数据流图出发,设想将数据流图中的处理分从数据流图出发,设想将数据流图中的处理分组的各种可能的分组方法,抛弃技术上不可行的方组的各种可能的分组方法,抛弃技术上不可行的方法,余下的为可能的实现策略。法,余下的为可能的实现策略。第四章:总体设计第四章:总体设计2.选取合理的方案选取合理的方案选择若干个合理方案(低成本、中等成本、选择若干个合理方案(低成本、中等成本、高成本高成本),每个合理的方案应配备下列),每个合理的方案应配备下列
4、4份资料:份资料:n系统流程图系统流程图n组成系统的物理元素清单组成系统的物理元素清单n成本成本/效益分析效益分析n实现这个系统的进度计划实现这个系统的进度计划第四章:总体设计第四章:总体设计3.推荐最佳实施方案推荐最佳实施方案分析员从若干个方案中推荐最佳一个方案。分析员从若干个方案中推荐最佳一个方案。根据最佳方案制定详细的实现计划术。根据最佳方案制定详细的实现计划术。最后使用部门负责人审批。最后使用部门负责人审批。若接受、进入结构设计阶段若接受、进入结构设计阶段第四章:总体设计第四章:总体设计4.功能分解功能分解从实现角度把复杂的功能进一步分解从实现角度把复杂的功能进一步分解分析数据流图中的
5、每个处理,把复杂的功能分析数据流图中的每个处理,把复杂的功能分解成一个个较简单的功能,这样程序员容易读懂。分解成一个个较简单的功能,这样程序员容易读懂。功能分解使得数据库流图进一步细化,同时要功能分解使得数据库流图进一步细化,同时要用用IPO简单描述细化后的算法。简单描述细化后的算法。第四章:总体设计第四章:总体设计5.软件结构设计软件结构设计软件结构:由模块组成的层次系统软件结构:由模块组成的层次系统可用图形工具(层次图,结构图)描绘。可用图形工具(层次图,结构图)描绘。可从数据流图映射出软件结构可从数据流图映射出软件结构第四章:总体设计第四章:总体设计6.数据库设计数据库设计数据库设计数据
6、库设计4个步骤:个步骤:模式设计:模式设计:确定物理数据库结构。处理数据库管理确定物理数据库结构。处理数据库管理系统的结构约束。系统的结构约束。子模式设计:子模式设计:子模式是用户使用的数据视图。子模式是用户使用的数据视图。完整性和安全性设计完整性和安全性设计优化优化:改进模式和子模式以优化数据的存取。改进模式和子模式以优化数据的存取。第四章:总体设计第四章:总体设计7.制定测试计划制定测试计划8.书写文档书写文档系统说明,用户手册,测试计划,详细的实施计系统说明,用户手册,测试计划,详细的实施计划,数据库设计结果划,数据库设计结果9.9.审查与复审概要设计文档审查与复审概要设计文档对总体设计
7、的结果进行严格的技术审查对总体设计的结果进行严格的技术审查,使用部门的负责人从管理角度进行复审使用部门的负责人从管理角度进行复审第四章:总体设计第四章:总体设计数据数据字典字典数据数据流图流图E-RE-R图图状态变迁图状态变迁图加加加加工工工工规规规规约约约约控制规约控制规约控制规约控制规约数数据据对对描描 述述象象数数 据据 设设 计计体系结构设计体系结构设计接口设计接口设计过程设计过程设计分析模型分析模型分析模型分析模型设计模型设计模型设计模型设计模型第四章:总体设计第四章:总体设计4.24.2软件设计的原理软件设计的原理4.2.14.2.1模块化模块化1.模块模块(module)模块模块
8、(组件组件)是由边界元素限定的相邻的程序元素的是由边界元素限定的相邻的程序元素的序列,而且有一个总体标识符来代表它。序列,而且有一个总体标识符来代表它。模块可以单独被命名的而且可通过名字来访问。模块可以单独被命名的而且可通过名字来访问。模块的三个属性:模块的三个属性:功能功能:描述该模块实现什么功能,做什么事情。:描述该模块实现什么功能,做什么事情。逻辑逻辑:描述模块内部怎么做。:描述模块内部怎么做。状态状态:描述模块使用时的环境和条件:描述模块使用时的环境和条件第四章:总体设计第四章:总体设计把程序划分成若干个模块,每个模块完成一个把程序划分成若干个模块,每个模块完成一个子功能,这些模块组成
9、一个整体,完成一个指定的总子功能,这些模块组成一个整体,完成一个指定的总功能。功能。2.模块化:模块化:第四章:总体设计第四章:总体设计(1)设函数设函数C(X)定义问题定义问题X的复杂程度,函数的复杂程度,函数E(X)确定解决问题确定解决问题X需要的工作量。对于问题需要的工作量。对于问题P1、P2如果:如果:C(P1)C(P2)那么:那么:E(P1)E(P2)根据经验根据经验C(P1+P2)C(P1)+C(P2)那么:那么:E(P1+p2)E(P1)+E(p2)(2)但并不是软件可以无限分割,分割的块越多,工作量但并不是软件可以无限分割,分割的块越多,工作量就越小。模块数量多了模块接口的设计
10、工作量也将增加就越小。模块数量多了模块接口的设计工作量也将增加分割时,模块数目分割时,模块数目m取值适当,使成本最小的取值适当,使成本最小的m值还值还不能精确确定,但有指南作用不能精确确定,但有指南作用3.模块化原理模块化原理(Modularization)第四章:总体设计第四章:总体设计模块大小、模块数目与费用的关系图模块大小、模块数目与费用的关系图 第四章:总体设计第四章:总体设计软件结构清晰,易设计、易阅读理解、易修改。软件结构清晰,易设计、易阅读理解、易修改。(1)程序错误通常局限在有关模块及其接口中;程序错误通常局限在有关模块及其接口中;(2)修改错误只会涉及少数模块;修改错误只会涉
11、及少数模块;(3)可以由许多程序员同时协同完成大型程序可以由许多程序员同时协同完成大型程序采用模块化的原理的优点采用模块化的原理的优点第四章:总体设计第四章:总体设计抽象:抽出事物的本质特性而暂时不考虑它们的细节。抽象:抽出事物的本质特性而暂时不考虑它们的细节。抽象的最高层次:抽象的最高层次:使用问题环境语言,以概括的方式叙述问题的解法。使用问题环境语言,以概括的方式叙述问题的解法。抽象的较低层次:抽象的较低层次:采用更过程化的方法,把面向问题的术语和面向实采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来,叙述问题的解法。现的术语结合起来,叙述问题的解法。抽象的最低层次:抽象的最低
12、层次:用可以直接实现的方式叙述问题的解法。用可以直接实现的方式叙述问题的解法。忽略细节,分层理解问题,自顶向下层层加细忽略细节,分层理解问题,自顶向下层层加细 4.2.2 4.2.2抽象抽象(Abstraction)Abstraction)第四章:总体设计第四章:总体设计例:例:开发一个开发一个CAD软件,实现一个二维绘图系统的全软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。部功能,供低级计算机辅助设计使用。抽象层次抽象层次1 1:用问题所处环境的术语来描述这个软件。用问题所处环境的术语来描述这个软件。该软件包括一个计算机绘图界面该软件包括一个计算机绘图界面,向绘图员显示图向
13、绘图员显示图形形,以及一个数字化仪界面以及一个数字化仪界面,用以代替绘图板和丁字尺。用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个计算、所有的剖面图和辅助视图都可以用这个CADCAD软件软件实现实现第四章:总体设计第四章:总体设计抽象层次抽象层次2 2:任务需求的描述。任务需求的描述。CADSOFTWARETASKS:userinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagemen
14、ttask;END 在这个抽象层次上在这个抽象层次上,未给出未给出“怎样做怎样做”的信息的信息,不能直接实现不能直接实现 第四章:总体设计第四章:总体设计抽象层次抽象层次3 3:程序过程表示。以程序过程表示。以2-2-D D绘图生成任务为例绘图生成任务为例PROCEDURE2-DdrawingcreationREPEATUNTILE(drawingcreationtaskterminates)DOWHILE(digitizerinteractionoccurs)Digitizerinterfacetask;DETERMINEdrawingrequestCASELine:linedrawingt
15、ask;Rectangle:rectangledrawingtask;Circle:circledrawingtask;END;在这个抽象层次上在这个抽象层次上,给出了初步的过程表示,所用的术语都给出了初步的过程表示,所用的术语都已面向软件,且模块化的工作已经开始显露。已面向软件,且模块化的工作已经开始显露。第四章:总体设计第四章:总体设计“为了能集中精力解决主要问题而尽量推迟对问为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。题细节的考虑。”人的认知:人的认知:(7/2)个知识块)个知识块逐步求精是把问题的求解过程分成若干步骤或阶逐步求精是把问题的求解过程分成若干步骤或阶段,每个步骤或
16、阶段都比上一个更精化,更接近问题段,每个步骤或阶段都比上一个更精化,更接近问题的解法。的解法。注:逐步求精是和抽象化紧密结合的概念,是一个注:逐步求精是和抽象化紧密结合的概念,是一个从从抽象到具体抽象到具体的过程。的过程。4.2.3 4.2.3逐步求精(逐步细化)逐步求精(逐步细化)第四章:总体设计第四章:总体设计信息隐蔽信息隐蔽(Information hiding)Information hiding)每个模块的实现细节对于其他模块来说是隐蔽的,每个模块的实现细节对于其他模块来说是隐蔽的,一个模块中所包含的信息不允许其他不需要这些信息的一个模块中所包含的信息不允许其他不需要这些信息的模块使
17、用。模块使用。局部化局部化 把一些关系密切的软件元素物理地放得彼此靠近。把一些关系密切的软件元素物理地放得彼此靠近。局部化有利于实现信息隐蔽局部化有利于实现信息隐蔽。4.2.4 4.2.4信息隐蔽和局部化信息隐蔽和局部化第四章:总体设计第四章:总体设计软件系统中每个模块只涉及软件要求的具体子功软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。能,而和软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。化概念的直接结果。4.2.5 4.2.5模块独立性模块独立性(Module
18、 Module independence)independence)第四章:总体设计第四章:总体设计(1)具有独立的模块的软件比较容易开发出来。)具有独立的模块的软件比较容易开发出来。(2)独立的模块比较容易测试和维护。)独立的模块比较容易测试和维护。度量模块独立性有两个定性标准:度量模块独立性有两个定性标准:a.模块间的耦合模块间的耦合b.模块内的内聚模块内的内聚耦合:耦合:衡量不同模块彼此间互相依赖的紧密程度。衡量不同模块彼此间互相依赖的紧密程度。内聚:内聚:衡量一个模块内各个元素彼此结合的紧密程度。衡量一个模块内各个元素彼此结合的紧密程度。独立性比较强独立性比较强的模块应是的模块应是高内
19、聚低耦合高内聚低耦合的模块的模块1.模块独立性的重要性模块独立性的重要性第四章:总体设计第四章:总体设计耦合是对一个软件结构内各个模块之间互连耦合是对一个软件结构内各个模块之间互连程度的度量。程度的度量。耦合强弱取决于模块间接口的复杂程度,调用耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的数据模块的方式,以及通过接口的数据。软件设计中应该追求模块间尽可能软件设计中应该追求模块间尽可能松散耦合松散耦合的系统的系统。2.耦合耦合(Coupling)第四章:总体设计第四章:总体设计无耦合没有依赖关系无耦合没有依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系松散耦合有松散耦合有
20、少量依赖关系少量依赖关系第四章:总体设计第四章:总体设计模块间的耦合模块间的耦合第四章:总体设计第四章:总体设计模块间不传递任何信息,它们之间的联系完全是模块间不传递任何信息,它们之间的联系完全是通过主模块的控制和调用来实现的通过主模块的控制和调用来实现的。非直接耦合模块非直接耦合模块:独立性最强,耦合度最低独立性最强,耦合度最低(1 1)非直接耦合()非直接耦合(NoDirectCoupling)第四章:总体设计第四章:总体设计两个模块之间通过简单的数据参数两个模块之间通过简单的数据参数(不是控制参数、不是控制参数、公共数据结构或外部变量公共数据结构或外部变量)来交换信息,而且来交换信息,而
21、且交换的信息交换的信息仅仅是数据仅仅是数据。数据耦合数据耦合:松散的耦合,模块之间的独立性比较强。松散的耦合,模块之间的独立性比较强。开发票开发票计算水费计算水费单价数量单价数量金额金额(2)数据耦合()数据耦合(DataCoupling)第四章:总体设计第四章:总体设计一组模块通过一组模块通过数据结构数据结构(不是简单数据,而是记不是简单数据,而是记录、数组等录、数组等)作为参数表传递记录信息作为参数表传递记录信息。计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费 电费电费住户情况住户情况“住户情况住户情况”是一个数据结构是一个数据结构(3)标记耦合)标记耦合(S
22、tampCoupling)第四章:总体设计第四章:总体设计将标记耦合修改为将标记耦合修改为数据耦合举例数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费第四章:总体设计第四章:总体设计两个模块间传递的信息中含有控制信息两个模块间传递的信息中含有控制信息(如开如开关量、标志值、名字等关量、标志值、名字等)。控制耦合控制耦合:中等程度的耦合中等程度的耦合控制耦合增加了理解和编程的复杂性,调用模控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖块必须知道被调模块的内部逻辑,增加了相互依赖(4)控制
23、耦合()控制耦合(ControlCoupling)第四章:总体设计第四章:总体设计接口单一,但仍然影响被控模块的内部逻辑接口单一,但仍然影响被控模块的内部逻辑第四章:总体设计第四章:总体设计A A计算平均分计算平均分或最高分或最高分B B平均平均/最高最高(控制信号控制信号)成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/最高最高?B B第四章:总体设计第四章:总体设计去除模块间控制耦合的方法:去除模块间控制耦合的方法:n(1)将被调用模块内的判定上移到调用模块中进行将被调用模块内的判定上移到调用模块中进行n(2)被调用模块分解成若干单一功能模块被调用
24、模块分解成若干单一功能模块 A A计算平均分计算平均分B1B1平均成绩平均成绩最高成绩最高成绩计算最高分计算最高分B2B2第四章:总体设计第四章:总体设计一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而不是同一而不是同一全局数据结构,而且不是通过参数表传递该全局变量全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。的信息,则称之为外部耦合。例如例如:I/O模块与特定的设备、格式和通信协议相关联。模块与特定的设备、格式和通信协议相关联。外部偶合必不可少外部偶合必不可少,但这种模块数目应尽量少。但这种模块数目应尽量少。(5)外部耦合()外部耦合(External
25、Coupling)第四章:总体设计第四章:总体设计若一组模块都访问同一个公共数据环境,则它们若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合之间的耦合就称为公共耦合公共的数据环境公共的数据环境:全局数据结构、共享的通信区、内全局数据结构、共享的通信区、内存的公共覆盖区等。存的公共覆盖区等。两个模块之间公共耦合:两个模块之间公共耦合:松散公共耦合松散公共耦合,紧密公共耦合紧密公共耦合注意:注意:只有在模块之间共享的数据很多,且通过参数表只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合传递不方便时,才使用公共耦合(6)公共耦合)公共耦合(CommonCoup
26、ling)第四章:总体设计第四章:总体设计问题问题:公共部分的改动将影响所有调用它的模块;公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。复杂程度随耦合模块的个数增加而增加。慎用公共数据区慎用公共数据区!Global:V1 V2A:A1=V1+V2B:V1=B1松散公共耦合松散公共耦合Global:V1 V2A:V1+B:V2=B1+V1紧密公共耦合紧密公共耦合第四章:总体设计第四章:总体设计如发生下列情形,两个模块之间就发生了内容耦合如发生下列情形,两个模块之间就发生了内容耦合一个模块访问另一个模块的内部数据;
27、一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一个模块的内部;一个模块不通过正常入口而转到另一个模块的内部;两个模块有一部分代码重叠两个模块有一部分代码重叠(常出现在汇编语言中常出现在汇编语言中);一个模块有多个入口一个模块有多个入口(这表明一个模块有几种功能这表明一个模块有几种功能)。内容耦合内容耦合:程度最高的耦合程度最高的耦合(7)内容耦合)内容耦合(ContentCoupling)第四章:总体设计第四章:总体设计例例2:A访问访问C的内部数的内部数据或不通过正常入口而据或不通过正常入口而转入转入C的内部。的内部。ABCDA:goto C1C:C1:例例1:一模块直接访
28、问一模块直接访问另一模块的内部信息另一模块的内部信息(程序代码或数据)程序代码或数据)AB第四章:总体设计第四章:总体设计应该坚决避免使用内容耦合。应该坚决避免使用内容耦合。尽量使用数据耦合,少用控制耦合,限制公共环境尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。耦合的范围,完全不用内容耦合。例例3:部分代码重叠(常出现:部分代码重叠(常出现在汇编程序中)在汇编程序中)B A例例4:一个模块有多个入口:一个模块有多个入口(功能)(功能)A:entry 1:entry 2:第四章:总体设计第四章:总体设计内聚标志一个模块内各个元素彼此结合的紧密程内聚标志一个模块内各个
29、元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。度,它是信息隐蔽和局部化概念的自然扩展。理想内聚的模块只做一件事情理想内聚的模块只做一件事情内聚和耦合呈反比关系内聚和耦合呈反比关系:模块内的内聚度越高,模块间的耦合度就越低。模块内的内聚度越高,模块间的耦合度就越低。在概要设计阶段,模块内聚更重要。只要做到了各在概要设计阶段,模块内聚更重要。只要做到了各模块的高内聚,模块间的耦合度自然就降低了。模块的高内聚,模块间的耦合度自然就降低了。3.内聚内聚:(Cohesion)Cohesion)第四章:总体设计第四章:总体设计模块内聚模块内聚第四章:总体设计第四章:总体设计低内聚低内聚 模块
30、内各部分之间没有联系,或者即使有联系,模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块这种联系也很松散,则称这种模块为偶然内聚模块.偶然内聚偶然内聚:内聚程度最低。内聚程度最低。缺点缺点:模块的内容不易理解,不易修改和维护。模块的内容不易理解,不易修改和维护。(1 1)偶然内聚()偶然内聚(Coincidental Coincidental CohesionCohesion)(巧合内聚巧合内聚)第四章:总体设计第四章:总体设计模块模块M M中的三个语句没有任何联系中的三个语句没有任何联系第四章:总体设计第四章:总体设计这种模块把几种相关的功能(逻辑上相似这
31、种模块把几种相关的功能(逻辑上相似的的功能)组合在一起功能)组合在一起.每次被调用时,由传送给模块的每次被调用时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。控制型参数来确定该模块应执行哪一种功能。逻辑内聚逻辑内聚:比比偶然内偶然内聚模块的内聚程度要高。聚模块的内聚程度要高。它表明了各部分之间在功能上的相关关系。它表明了各部分之间在功能上的相关关系。(2)逻辑内聚)逻辑内聚(LogicalCohesion)第四章:总体设计第四章:总体设计第四章:总体设计第四章:总体设计缺点缺点:增强了耦合程度增强了耦合程度(控制耦合控制耦合)不易修改,效率低不易修改,效率低A AB BC CE EF
32、 FG GA AB BC CEFGEFGE E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFGA1A1B1B1C1C1EFGEFG模块内部逻辑模块内部逻辑公用代码段公用代码段公用代码段公用代码段第四章:总体设计第四章:总体设计这种模块大多为多功能模块,但要求模块的各个这种模块大多为多功能模块,但要求模块的各个功能必须在同一时间段内执行。功能必须在同一时间段内执行。例如例如:初始化系统模块、初始化系统模块、系统结束模块、系统结束模块、紧急故障处理模块紧急故障处理模块时间内聚模时间内聚模:比逻辑内聚模块的内聚程度又稍高一些比逻辑内聚模块的内聚程度又稍高一些问题:问题:不
33、同功能混在一个模块中,有时共用部分编不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。码,使局部功能的修改牵动全局。(3)时间内聚)时间内聚(TemporalCohesion)(经典内聚经典内聚)第四章:总体设计第四章:总体设计 中内聚中内聚如果一个模块内各处理成分相关,且如果一个模块内各处理成分相关,且必须以特定必须以特定次序执行次序执行,则称为过程内聚则称为过程内聚例如,把流程图中的循环部分、判定部分、计算部分例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块分成三个模块,这三个模块都是过程内聚模块。(4)过程内聚()过程内聚(proc
34、eduralcohesion)第四章:总体设计第四章:总体设计读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查成读入并审查成绩单绩单统计并打印成统计并打印成绩单绩单第四章:总体设计第四章:总体设计如果一个模块内各功能部分都使用了相同的如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通输入数据,或产生了相同的输出数据,则称之为通信内聚模块。信内聚模块。通常通信内聚模块是通过数据流图来定义的。通常通信内聚模块是通过数据流图来定义的。(5)通信内聚)通信内聚(CommunicationalCohesion)第四章:总体设计第四章:总体
35、设计第四章:总体设计第四章:总体设计高内聚高内聚如果一个模块内的处理元素和同一个功能密切如果一个模块内的处理元素和同一个功能密切相关相关,而且这些处理必须顺序执行。而且这些处理必须顺序执行。(6)顺序内聚)顺序内聚(SequentialCohesion)(信息内聚)信息内聚)第四章:总体设计第四章:总体设计一个模块中各个部分都是为一个模块中各个部分都是为完成一项具体完成一项具体功能功能而协同工作,紧密联系,不可分割的。则称而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。该模块为功能内聚模块。功能内聚功能内聚:内聚性最强内聚性最强(7 7)功能内聚功能内聚(FunctionalCoh
36、esion)第四章:总体设计第四章:总体设计模块模块内聚内聚判断树判断树该模块只该模块只该模块只该模块只执行一个执行一个执行一个执行一个功能吗?功能吗?功能吗?功能吗?功能内聚功能内聚功能内聚功能内聚否否否否模块内各模块内各模块内各模块内各组成部分组成部分组成部分组成部分关系如何关系如何关系如何关系如何?数据流数据流数据流数据流否否否否是是是是顺序内聚顺序内聚顺序内聚顺序内聚通信内聚通信内聚通信内聚通信内聚否否否否是是是是步骤内聚步骤内聚步骤内聚步骤内聚时间内聚时间内聚时间内聚时间内聚否否否否是是是是逻辑内聚逻辑内聚逻辑内聚逻辑内聚偶然内聚偶然内聚偶然内聚偶然内聚控制流控制流控制流控制流两者皆
37、非两者皆非两者皆非两者皆非是是是是次序重次序重次序重次序重要吗?要吗?要吗?要吗?逻辑相逻辑相逻辑相逻辑相似吗?似吗?似吗?似吗?次序重次序重次序重次序重要吗?要吗?要吗?要吗?第四章:总体设计第四章:总体设计4.34.3启发式规则启发式规则 1 1 改进软件结构提高模块独立性改进软件结构提高模块独立性 划分模块时尽量做到划分模块时尽量做到降低耦合,提高内聚降低耦合,提高内聚,保保持模块相对独立性持模块相对独立性,并以此原则优化初始的软件结构。,并以此原则优化初始的软件结构。(1 1)如果若干模块之间耦合强度过高,每个模块内)如果若干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合并,以
38、减少信息的传递和公功能不复杂,可将它们合并,以减少信息的传递和公共区的引用。共区的引用。(2 2)若有多个相关模块,应对它们的功能进行分析,)若有多个相关模块,应对它们的功能进行分析,消去重复功能。消去重复功能。第四章:总体设计第四章:总体设计模块过大不易理解;太小则接口开销过大。模块过大不易理解;太小则接口开销过大。注意注意:分解后不应降低模块的独立性。最好编写在一页分解后不应降低模块的独立性。最好编写在一页纸内纸内(不超过不超过60行语句行语句)2模块规模应该适中模块规模应该适中第四章:总体设计第四章:总体设计3深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当深度:深度:表示软
39、件结构中控制的层数。表示软件结构中控制的层数。深度往往粗略地标志一个系统的大小和复杂程度。深度往往粗略地标志一个系统的大小和复杂程度。宽度:宽度:软件结构内同一层次上的模块总和的最大值。软件结构内同一层次上的模块总和的最大值。一般说宽度越大系统越复杂。一般说宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出对宽度影响最大的因素是模块的扇出第四章:总体设计第四章:总体设计扇出扇出:一个模块直接调一个模块直接调用用控制的模块数。控制的模块数。3 fan-out 9AA的扇出的扇出AA的扇入的扇入 扇入扇入:直接调用该模块的模直接调用该模块的模块数块数在不破坏独立性的前提下,在不破坏独立性的前提下
40、,fan-in 大的比较好。大的比较好。第四章:总体设计第四章:总体设计深深度度宽度宽度扇出扇出扇入扇入(模块的模块的 层数层数)(同一层最大模块数同一层最大模块数)(一个模块直接一个模块直接调用的模块数调用的模块数)(调用一个给定模调用一个给定模 块的模块个数块的模块个数)软件结构度量术语软件结构度量术语第四章:总体设计第四章:总体设计模块的作用域模块的作用域:受该模块内一个判定影响的所:受该模块内一个判定影响的所有模块集合。有模块集合。模块的控制域模块的控制域:这个模块本身以及所有直接或:这个模块本身以及所有直接或间接从属于它的模块的集合。间接从属于它的模块的集合。MACBM的控制域为的控
41、制域为 M,A,B,C4模块的作用域应该在控制域之内模块的作用域应该在控制域之内第四章:总体设计第四章:总体设计A:if then goto B1 B:B1:作用域在控制域内作用域在控制域内A:if then goto M1 M:M1:goto C1 作用域超出了控制域作用域超出了控制域上例中上例中A的作用超出了控制域。的作用超出了控制域。改进方法之一:可以把改进方法之一:可以把A中的中的 if 移到移到M中;中;改进改进方法之二方法之二:可以把可以把C移到移到A下面。下面。第四章:总体设计第四章:总体设计模块接口复杂是软件发生错误的一个重要原因。模块接口复杂是软件发生错误的一个重要原因。接口
42、的复杂或不一致是高耦合或低内聚的征兆,应重接口的复杂或不一致是高耦合或低内聚的征兆,应重新分析该模块的独立性。新分析该模块的独立性。5力争降低模块接口的复杂程度力争降低模块接口的复杂程度第四章:总体设计第四章:总体设计如果模块不是单入和单出的,则一定存在内容如果模块不是单入和单出的,则一定存在内容耦合。耦合。单入单出的模块一定是从顶部进入模块并且从单入单出的模块一定是从顶部进入模块并且从底部退出,这样软件比较容易理解,也容易维护。底部退出,这样软件比较容易理解,也容易维护。6设计单入口单出口的模块设计单入口单出口的模块第四章:总体设计第四章:总体设计只要输入的数据相同就产生同样的输出,这只要输
43、入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。个模块的功能就是可以预测的。带有内部带有内部“存储器存储器”的模块的功能可能是的模块的功能可能是不不可预测的,因为它的输出可能取决于内部存储器可预测的,因为它的输出可能取决于内部存储器(例如某个标记)的状态。(例如某个标记)的状态。7模块功能应该可以预测模块功能应该可以预测第四章:总体设计第四章:总体设计总体设计原则总体设计原则n设计功能内聚的模块设计功能内聚的模块n模块使用过程语句调用其他模块,传递的参数模块使用过程语句调用其他模块,传递的参数作数据用,并且尽可能少作数据用,并且尽可能少n模块内语句数一般为模块内语句数一般为5010
44、0n平均扇出系数最好是平均扇出系数最好是35n高层模块高扇出,最低层模块高扇入高层模块高扇出,最低层模块高扇入n一个判断的作用范围是判断所在模块的控制范一个判断的作用范围是判断所在模块的控制范围的子集围的子集第四章:总体设计第四章:总体设计4.44.4图形工具图形工具 4.4.14.4.1层次图和层次图和HIPOHIPO图图层次图层次图(HierarchyDiagram)通常用来描绘软件的层次结构。通常用来描绘软件的层次结构。*一个矩形框代表一个模块一个矩形框代表一个模块*框间的连线表示调用关系框间的连线表示调用关系位于上方的矩形框所代表的模块调用位于下位于上方的矩形框所代表的模块调用位于下方
45、的矩形框所代表的模块。方的矩形框所代表的模块。第四章:总体设计第四章:总体设计正文加工系统的层次图正文加工系统的层次图正文加工系统正文加工系统输入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录添加添加删除删除插入插入修改修改合并合并列表列表第四章:总体设计第四章:总体设计美国美国IBM公司发明的公司发明的“层次图加输入层次图加输入/处理处理/输出输出图图”的英文缩写。的英文缩写。为了使为了使HIPO图具有可追踪性,在图具有可追踪性,在H图图(即层次图即层次图)里除了顶层的方框之外,每个方框都加了编号。里除了顶层的方框之外,每个方框都加了编号。层次图中每一个方框都有一个对应层次图中
46、每一个方框都有一个对应IPO图图(表示模表示模块的处理过程块的处理过程)。每张每张IPO图应增加编号与其表示的图应增加编号与其表示的(对应的对应的)层次层次图图编号一致编号一致HIPO图图第四章:总体设计第四章:总体设计带编号的层次图带编号的层次图(HIPO图图)正文加工系统正文加工系统输入输入1.01.0输出输出2.02.0编辑编辑3.03.0加标题加标题 4.04.0存储存储5.05.0检索检索6.06.0编目录编目录 7.07.0添加添加3.13.1删除删除3.23.2插入插入3.33.3修改修改3.43.4合并合并3.53.5列表列表3.63.6第四章:总体设计第四章:总体设计以以特特
47、定定的的符符号号表表示示模模块块、模模块块间间的的调调用用关关系系和和模模块间信息的传递。块间信息的传递。反映程序中模块之间的层次调用关系和联系反映程序中模块之间的层次调用关系和联系4.4.2结构图结构图(StructureDiagram)第四章:总体设计第四章:总体设计用矩形框表示,并用模块的名字标记它。用矩形框表示,并用模块的名字标记它。1.模块模块第四章:总体设计第四章:总体设计 模块之间用单向箭头联结,箭头从调用模块指模块之间用单向箭头联结,箭头从调用模块指向被调用模块。向被调用模块。2.模块的调用关系和接口模块的调用关系和接口第四章:总体设计第四章:总体设计传入模块传入模块从下属模块
48、取得数据从下属模块取得数据,经过某些处理经过某些处理,再将其传送再将其传送给上级模块。给上级模块。它传送的数据流叫做逻辑输入数据流它传送的数据流叫做逻辑输入数据流第四章:总体设计第四章:总体设计传出模块传出模块从上级模块获得数据从上级模块获得数据,进行某些处理进行某些处理,再将其再将其传传送给下属模块。送给下属模块。它传送的数据流叫做逻辑输出数据流它传送的数据流叫做逻辑输出数据流第四章:总体设计第四章:总体设计变换模块变换模块 它从上级模块取得数据,进行特定的处理,它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数
49、据流。它加工的数据流叫做变换数据流。第四章:总体设计第四章:总体设计协调模块协调模块对所有下属模块进行协调和管理的模块。对所有下属模块进行协调和管理的模块。第四章:总体设计第四章:总体设计或或循环循环3.在模块的箭头尾部标以一个在模块的箭头尾部标以一个菱形符号菱形符号,表示,表示模块模块有条件地调用有条件地调用另外的模块。另外的模块。当一个在调用箭头尾部标以一个当一个在调用箭头尾部标以一个弧形符号弧形符号,表示一个模块表示一个模块反复调用反复调用另外的模块。另外的模块。第四章:总体设计第四章:总体设计选择调用选择调用循环调用循环调用第四章:总体设计第四章:总体设计举例:产生最佳解程序的结构图举
50、例:产生最佳解程序的结构图 第四章:总体设计第四章:总体设计4.54.5面向数据流的设计方法面向数据流的设计方法目标目标:给出设计软件结构的一个系统化的途径。给出设计软件结构的一个系统化的途径。SD以数据流图为基础,它定义了把以数据流图为基础,它定义了把DFD变换变换成成软件结构软件结构的不同的不同映射映射方法。方法。数据流的类型决定了映射的方法数据流的类型决定了映射的方法第四章:总体设计第四章:总体设计(1 1)变换流)变换流信息沿输入通路进入系统,同时由外部形式变换信息沿输入通路进入系统,同时由外部形式变换成内部形式进入系统;信息通过变换中心,经加工处理成内部形式进入系统;信息通过变换中心