design principles example 模块设计的原则.pptVIP

  • 4
  • 0
  • 约4.33千字
  • 约 54页
  • 2018-04-28 发布于浙江
  • 举报
design principles example 模块设计的原则

模块设计的原则 系统的可维护性是系统评价的一个重要因素 1.模块的独立性 模块独立的含义: 模块完成独立、单一的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小 2.模块独立性的度量 模块独立性取决于模块的内部和外部特性。 SD方法提出的定性的度量标准: 模块之间的耦合性(块间联系) 模块自身的聚合性(块内联系) 3.模块独立性的度量之一:耦合度 耦合度是模块间的联结关系,衡量不同模块间的相互依赖的紧密密程度,耦合的强弱取决于模块间接口的复杂程度;进入或访问一个模块的入口点;以及通过接口的数据。 耦合度越高,模块独立性越弱 模块耦合度(续) 耦合度强弱的因素: 一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度 模块间耦合的类型: 低 非直接耦合 耦 数据耦合 合 标记耦合 性 控制耦合 高 内容耦合 (1) 非直接耦合 两个模块没有直接关系(模块1和模块2),模块独立性最强。 (2) 数据耦合 一模块调用另一模块时,被调 用模块的输入、输出都是简单 的数据。 属松散耦合。 数据耦合举例 数据耦合举例 (3) 标记耦合(特征耦合) 如两个模块通过传递数据结构 (不是简单数据,而是记录、数组 等)加以联系,或都与一个数据 结构有关系, 则称这两个模块 间存在标记耦合。 标记耦合举例 (4) 控制耦合 一模块通过开关量、标志、名字等控制信息,明显地控制另一模块的功能。 控制耦合举例 设想一下A( )函数中调用B( )的语句是怎样的? 这个问题与前面的调用MAX( )的例子不同。 在MAX( )函数中,我们很清楚地看到:形式参数表是两个整数,表示要比较的两个数。 函数说明为: MAX( int x, int y) 函数处理后,返回的结果为较大的那个数。 所以,在主调函数中,我们只需以两个被比较的数作为 实际参数,所以就可写出形如: ..=MAX( 25, 36) 的调用语句。 设想一下A( )函数中调用B( )的语句是怎样的? 但在B( )函数中,我们虽然知道:形式参数表是一个整数,表示要取得的成绩类型是平均或最高。 函数说明为: B( int x) 函数处理后,返回的结果为取出的成绩数据(平均或最高)。 可是,在主调函数中,我们仍不知道以什么作为实际参数,是0?1?2?还是其他值,取决于B()中用什么值表示平均/最高标记。因此,就要去了解B()内部的语句,而不能仅凭函数说明就写出调用语句。所以B()就成为灰箱/白箱,而非黑箱。 控制耦合举例 总结:控制耦合增加了模块之间的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调 用模块中进行。 (控制耦合增加了理解和编程的复杂度) (2)被调用模块分解成若干单一功能模块 改控制耦合为数据耦合举例(1) 控制耦合举例(2) 改控制耦合为数据耦合举例 控制耦合举例(3) 将B中核对口令功能划分到 A (5) 公共耦合(公共数据区耦合) 一组模块引用同一个公用数据区 (也称全局数据区、公共数据环境)。 公共数据区指: 全局数据结构 共享通讯区 内存公共覆盖区等 公共耦合举例 公共耦合举例 公共耦合存在的问题: (1)系统可理解性降低 (模块间存在错综复杂的连系) (2)系统可维护性差 (修改变量名或属性困难) (3)系统可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!!! (6) 内容耦合 一模块直接访问另一模块的 内部信息(程序代码或数据) 最好别用内容耦合形式 !!! 发生内容耦合的情形: (1)一模块直接访问另一模块的   内部数据 (2)一模块不通过正常入口转到 另一模块内 (3)两模块有一部分代码重叠 (4)一模块有多个入口 模块化设计对耦合度的要求: 耦合是影响系统复杂程度和设计 质量的重要因素 目标:建立模块间耦合度尽可能    松散的系统 如何降低模块间耦合度: (1) 如模块必须存在耦合, 选择适当的耦合类型 原则:a、尽量使用数据耦合    b、少用控制耦合    c、限制公共耦合的范围    d、坚决避免使用内容耦合 如何降低模块间耦合度: (2) 降低模块间接口的复杂性 接口复杂性与耦合类型的关系: 4. 模块独立性的度量之二

文档评论(0)

1亿VIP精品文档

相关文档