模块之耦合性

来源:互联网 发布:linux怎么发送at指令 编辑:程序博客网 时间:2024/06/11 23:46

概念:

耦合是模块之间的相互独立性(互相链接的紧密程度)的度量。它取决于各个模块之间接口的复杂度、调用模块的方式以及哪些信息通过接口,构成耦合性的七种类型


耦合类型

描述

定义

对修改的敏感度

可重用性

可修改性

可理解性

非直接耦合

没有直接联系,互相不依赖对方

如果两个模块之间没有直接关系,他们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强

 

 

 

 

数据耦合

借助参数表传递简单数据

如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则成这种耦合为数据耦合。数据耦合时松散的耦合,模块之间的独立性比较强

不一定

标记耦合

一个数据结构的一部分借助于模块接口被传递

如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了某一数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结构要求对记录进行操作

不一定

控制耦合

模块间传递的信息中包含用于控制模块内部逻辑的信息

如果一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一模块的功能,这就是控制耦合

一般

外部耦合

与软件以外的环境有关

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。类似与公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排

一般

很差

很差

公共耦合

多个模块引用同一个全局数据区

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。其复杂程度随偶和模块的个数增加而显著增加。只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合

很差

很差

内容耦合

一个模块访问另一个模块的内部数据

一个模块不通过正常入口转达到另一模块的内部

两个模块有一部分程序代码重叠

一个模块有多个入口

如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。在内容耦合的情形,被访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。这种耦合时模块独立性最弱的耦合

很强

很差

很差

很差


原创粉丝点击