正在加载图片...
(4)耦合性 耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间 接口的复杂程度、调用模块的方式以及哪些信息通过接口。 般模块之间可能的连接方式有七种,构成耦合性的七种类型 低 耦合性 非直接耦合数据耦合标记耦合|控制耦合外部耦合公共耦合|内容耦合 强 模块独立性 弱 ■内容耦合:如果一个模块直接访问另一个模块的内部数据:或者一个模块不通过正 常入口转到另一模块内部;或者两个模块有一部分程序代码重迭:或者一个模块有多个入口, 则两个模块之间就发生了内容耦合。在内容耦合的情形,被访问模块的任何变更,或者用不 同的编译器对它再编译,都会造成程序出错。这种耦合是模块独立性最弱的耦合。 公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共 耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等 公共耦合的复杂程度随耦合模块的个数增加而显著增加。如图49所示,若只是两个模 块之间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。只有在模 块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合。 外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是 通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合引起的问题类似于公共耦 合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。 B B ommon公共数据区 common公共数据区 (a)松散的公共耦合 (b)紧密的公共耦合 图49公共耦合 控制耦合:如果一个模块通过传送开关、标志、 A 名字等控制信息,明显地控制选择另一模块的功能,就是 Flag 控制耦合。如图4.10所示。这种耦合的实质是在单一接 口上选择多功能模块中的某项功能。因此,对被控制模块 Flag 的任何修改,都会影响控制模块。另外,控制耦合也意味 着控制模块必须知道被控制模块内部的一些逻辑关系,这 些都会降低模块的独立性 标记耦合:如果一组模块通过参数表传递记录信 息,就是标记耦合。事实上,这组模块共享了某一数据结 构的子结构,而不是简单变量。这要求这些模块都必须清 楚该记录的结构,并按结构要求对记录进行操作 图4.10控制耦合 ■数据耦合:如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制 参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。数 据耦合是松散的耦合,模块之间的独立性比较强。 非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块10 图 4.10 控制耦合 (4) 耦合性 耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间 接口的复杂程度、调用模块的方式以及哪些信息通过接口。 一般模块之间可能的连接方式有七种,构成耦合性的七种类型。 ▪ 内容耦合 :如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正 常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有多个入口, 则两个模块之间就发生了内容耦合。在内容耦合的情形,被访问模块的任何变更,或者用不 同的编译器对它再编译,都会造成程序出错。这种耦合是模块独立性最弱的耦合。 ▪ 公共耦合 :若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共 耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 公共耦合的复杂程度随耦合模块的个数增加而显著增加。如图 4.9 所示,若只是两个模 块之间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。只有在模 块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合。 ▪ 外部耦合 :一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是 通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合引起的问题类似于公共耦 合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。 图 4.9 公共耦合 ▪ 控制耦合 :如果一个模块通过传送开关、标志、 名字等控制信息,明显地控制选择另一模块的功能,就是 控制耦合。如图 4.10 所示。这种耦合的实质是在单一接 口上选择多功能模块中的某项功能。因此,对被控制模块 的任何修改,都会影响控制模块。另外,控制耦合也意味 着控制模块必须知道被控制模块内部的一些逻辑关系,这 些都会降低模块的独立性。 ▪ 标记耦合 :如果一组模块通过参数表传递记录信 息,就是标记耦合。事实上,这组模块共享了某一数据结 构的子结构,而不是简单变量。这要求这些模块都必须清 楚该记录的结构,并按结构要求对记录进行操作。 ▪ 数据耦合 :如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制 参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。数 据耦合是松散的耦合,模块之间的独立性比较强。 ▪ 非直接耦合 :如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有