网站大量收购闲置独家精品文档,联系QQ:2885784924

 第5章-总体设计-1.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * 启发规则 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是5~9)。 扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。当然分解模块或合并模块必须符合问题结构,不能违背模块独立性原理。 * * 编 外 人 员 工 资 取 得 工 资 数 据 计 时 制 工 资 额 薪 金 制 工 资 额 编 外 人 员 税 款 编 外 人 员 扣 款 常 规 扣 款 税 收 扣 款 计算实发工资 模块的高扇出 启发规则 * * 计算实发工资 取得工资数据 计时工人实发工资 计薪工人实发工资 编外人员实发工资 编外 人员 工资 计时 制工 资额 薪金 制工 资额 编外 人员 税款 编外 人员 扣款 常规 扣款 税收 扣款 合理的模块扇出 启发规则 * * 扇入越大则共享该模块的上级模块数目越多,这是有好处的,但不能违背模块独立原理单纯追求高扇入。 观察大量软件系统后发现,好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高扇入)。 系统的模块结构呈现为“葫芦形”。 启发规则 Q Q1 Q2 Q3 Q * * 控制域—一个模块的控制域,等于模块本身加上其下级模块,即可供它 调用的模块。 作用域—一个模块的作用域,是受 这个模块中的判定所影响的模块。 图中模块A的控制范围: A、B、C、D、G、E、F 如果模块F的判定涉及到模块B、E、F。 则F的的作用范围:B、E、F A B C D G E F F B E (a) 启发规则 4.模块的“作用域”应该在“控制域”之内 * * 当作用域为控制域的子集时,才能获得较低的块间联系。 如图中的设计,判定的作用范围恰好在判定所在模块的下一层。 TOP X T B A B1 B2 图(b)中模块TOP 的控制范围是: 模块 TOP、X、T、B、A、B1、B2; 模块B 的控制范围与作用范围相同,均为: 模块B、A、B1、B2 (b) 4.模块的“作用域”应该在“控制域”之内 启发规则 * * 答案 显然,图(a)不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。 图(b)中模块TOP和图(c)中模块B虽然满足上述原则,但其作用范围所涉及到的模块不是直接的。 图(d)的模块设计最合理。 控制范围与作用范围举例 TOP A B C D E F (a) ◆ TOP A B C D E F (d) ◆ TOP A B C D E F (b) ◆ TOP A B C D E F (c) ◆ 比较(a)、(b)、(c)、(d)4种设计方案的优劣! * * 作用域/控制域规则 若F中有判定,影响到B… 若M中有判定,影响到B和F… 若A中有判定,影响到B和F… 若C中有判定,影响到D和F… 不好,使模块间出现控制耦合 可用。但不好,判定在模块层次中的位置太高 较好:控制范围包含了作用范围,距离也尚可 理想的设计 M A G E B C D F 启发规则 * * 5. 力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因。 应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。 接口复杂或不一致性(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。 启发规则 * * 6. 设计单入口、单出口的模块 该规则警告软件工程师,不要出现内容耦合。 当从顶部进入、底部退出时,模块是易理解的,也易维护。 启发规则 * * 7、模块的功能应该能够预测 把一个模块看作黑盒子,只要输入的数据确定,就能产生确定的欲期输出,这个模块的功能就是可以预测的。 带有内部“存储器”的模块的功能可能是不可预测的,因为它的输出可能取决于内部存储器(例如某个标记)的状态。由于内部存储器对于上级模块而言是不可见的,所以这样的模块既不易理解又难于测试和维护。 启发规则 * * 总体设计原理小结 (1) 遵照模块的特性:分解、抽象、信息隐蔽、模块化和模块的独立性. (2) 模块的功能是完备的,但要消除冗余. (4) 模块应具有高内聚、低耦合;高扇入、低扇出;模块的深度,宽度要适当. (3) 大小适中,降低模块接口的复杂性. (5) 模块的判定作用范围应限制在模块的控制范围之内. (6) 避免模块的病态连接(内容耦合、公共耦合、通信耦合) * * 遵守设计原则的软件就具有高内聚,低耦合的设计特点,也就是可维护,高扩展,高复用的设计。 设计是一项创新和平衡的活动!

文档评论(0)

huangxiong1 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档