欢迎来到天天文库
浏览记录
ID:56411383
大小:1.25 MB
页数:57页
时间:2020-06-17
《软件工程导论(第五版) 第五章.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、软件工程(SoftwareEngineering)广东工业大学计算机学院软件工程系杨易扬第5章:总体设计5.1设计过程1.设想供选择的方案2.选择合理的方案对每个合理的方案要提供:A.系统流程图B.组成系统的物理元素清单C.成本/效益分析D.实现这个系统的进度计划3.推荐最佳方案4.功能分解5.设计软件结构6.数据库设计A.模式设计B.子模式设计C.完整性和安全性设计D.优化7.制定测试计划8.书写文档A.系统说明B.用户手册C.测试计划D.详细的实现计划E.数据库设计结果9.审查和复审5.2设计原理如果一个大型程序仅由一个模块
2、组成,很难被人理解。设函数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)5.2.1模块化模块数目接口成本成本/模块软件总成本M最小成本区成本图5.1模块化与软件成本5.2.2抽象5.2.3逐步求精模块的独立性很重要,因为:1)有效的模块化的软件比较容易开发出来;2)独立的模块比较容易测试和维护。5.2.
3、4信息隐蔽和局部化5.2.5模块独立一、耦合耦合:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。模块独立程度可以由两个定性标准度量:耦合与内聚。模块的偶合分四类:1)数据耦合两个模块之间只是通过参数交换信息,而且交换的信息仅仅是数据。数据耦合是最低程度的耦合。AB数据(1)数据耦合2)控制耦合两个模块之间所交换的信息包含控制信息。控制耦合是中等程度的耦合。图中模块A的内部处理程序判断是执行C还是执行D,要取决于模块B传来的信息状态(Status)。BACD(2)控制耦合astatus3)公用耦合两个或多个模块通过一个公
4、共区相互作用时的耦合。公共区可以是:全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设备等。软件结构中存在大量的公用耦合时会给诊断错误带来困难。图中存在公用耦合,假设模块A、C、E都存取全程数据区(如公用一个磁盘文件)中的一个数据项。如果A模块读取该项数据,然后调用C模块对该项重新计算,并进行数据更新。ABCDE全程数据区(3)公用耦合如果此时C模块错误地更新了该项数据,在往下的处理中模块E读该数据项时出现错误。表面上看,问题由模块E产生,实际上由模块C引起。ABCDE全程数据区(3)公用耦合4)内容耦合一个模块与
5、另一个模块的内容直接发生联系。内容耦合对维护会带来严重的困难。模块A…LAB:MOVE1…模块B…GOTOLAB…内容耦合(4)内容耦合程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的耦合,应该避免采用。软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。因此建议:尽量使用数据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合。二、内聚内聚:一个模块内部各个元素彼此结合的紧密程度。它是衡量一个模
6、块内部组成部分间整体统一性的度量。常见的内聚有七类。1)功能内聚(FunctionalCohesion)如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。功能内聚是最高程度的内聚。但在软件结构中,并不是每个模块都能设计成一个功能内聚模块。2)顺序内聚(SequentialCohesion)如果一个模块内处理元素和同一个功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。如图,一个求一元二次方程根的模块由三个处理元素组成,该模块中存在顺序内聚。通常,顺序内聚中一个处理元素的输出是另一个处理元素的输入。
7、求一元二次方程根模块1.输入方程系数2.求解3.打印方程的解顺序内聚示例3)通信内聚(CommunicationalCohesion)如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称为通信内聚。如图,模块A的处理单元将根据同一个数据文件FILE的数据产生不同的表格,因此它存在通信内聚。通信内聚有时也称为数据内聚。A从文件FILE中读出数据1.由数据产生报表A2.由数据产生报表B通信内聚示例4)过程内聚(ProceduralCohesion)如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称
8、为过程内聚。过程内聚与顺序内聚的区别是:顺序内聚中是数据流从一个处理单元流到另一个处理单元,而过程内聚是控制流从一个动作流向另一个动作。5)时间内聚(TemporalCohesion)如果一个模块包含的任务必须在同一段时间内执行,称为时间内聚。也称为瞬时内聚。例
此文档下载收益归作者所有