第5章-总体设计-2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章-总体设计-2

回顾 软件设计的任务 软件总体设计的步骤 什么是好的软件设计? 回顾 结构化设计方法 将问题的解决方案表述为: 软件结构图+关系数据模式 软件结构图描述软件系统的程序结构 关系数据模式描述软件系统的数据库结构 结构化设计工作主要包括程序结构设计和数据库设计 回顾 设计原理 模块化 抽 象 逐步求精 信息隐藏和局部化 模块独立 设计原理 五、模块独立 模块的独立性的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。 模块独立性原则,希望每个模块完成一个相对独立的功能,并与其他模块之间的关系尽量简单。 设计原理 五、模块独立 设计时追求模块独立理由有二: 第一,功能与接口都简单,便于团队分工协作。 第二,易测试、易维护。 比如手和脚是两个“功能独立”的模块。没有脚时,手照样能干活。没有手时,脚仍可以走路。但如果想让人跑得快,那么迈左脚时一定要伸右臂甩左臂,迈右脚时则要伸左臂甩右臂。所以在设计模块时不仅要考虑“这个模块应当有什么样的功能”,还要考虑“这个模块应该怎样与其它模块交流信息”。 设计原理 设计原理 五、模块独立 耦合是对一个软件结构内各个模块之间互连程度的度量。 耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。 根据模块间耦合程度的强弱的标准,划分耦合类型,共有五种。 五、模块独立--- 耦合 设计原理 公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共耦合的复杂程度随耦合模块的个数增加而显著增加。 若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。 设计原理 设计原理 设计原理 五、模块独立 设计原则: 控制耦合是一种中等程度的耦合。应尽可能少用。 外部耦合和公共耦合是较强程度的耦合。尽管有时无法避免,但要特别注意、严加控制。 内容耦合是耦合程度最强的耦合,极大增强了软件的复杂性,给维护带来严重困难,是“病态联系”,应禁止使用。实际完全可以避免。 设计原理 特征耦合的模块联接形式不如数据耦合形式好,如果不是特别需要,尽量使用数据耦合形式。 设计原理 设计原理 设计原理 五、模块独立—耦合 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调用模块中进行 (2)被调用模块分解成若干单一功能模块 设计原理 五、模块独立—内聚 模块的内聚性是反映模块的独立性的另一个侧面,模块内聚性越强,其独立性就越好。 内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 设计时应该力求做到高内聚。 设计原理 设计原理 设计原理 设计原理 设计原理 五、模块独立—内聚  4、过程内聚:模块内各处理成分相关,且必须以特定次序执行 设计原理 设计原理 设计原理 设计原理 本章要点 一、软件设计概述 二、总体设计的过程 三、总体设计原理 四、启发规则 五、常用的描述软件结构的图形工具 六、面向数据流的设计方法 七、案例分析 八、软件总体设计文档 实践中,总结经验得出了一些启发式规则。发式规则虽然不像上基本原理和概念那样普遍适用,但是在许多场合仍然能给软件工程师以有益的启示,能帮助他们找到改进软件设计提高软件质量的途径。 启发规则 启发规则 改进软件结构提高模块独立性。 模块规模应该适中。 深度、宽度、扇出和扇入都应适当。 模块的作用域应该在控制域之内。 力争降低模块接口的复杂程度。 设计单入口单出口的模块。 模块功能应该可以预测。 启发规则 1. 改进软件结构,提高模块独立性 设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。 例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用; 有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。 启发规则 启发规则 2. 模块规模应该适中 经验表明,一个模块的规模不应过大。 过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立性。 模块数目过多将使系统接口复杂,因此过小的模块有时不值得单独存在。 启发规则 启发规则 3. 深度、宽度、扇出和扇入都应适当 深度和程序长度之间应该有粗略的对应关系。如果层数过多则应该考虑是否有许多管理模块过分简单了,能否适当合并。 一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。 启发规则 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是5~9)。

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档