耦合

来源:互联网 发布:乐视视频 mac 编辑:程序博客网 时间:2024/05/11 13:04
模块的独立性很重要,因为有效的模块化(即具有独立的模块)的软件比较容易开发出来。
独立的模块比较容易测试和维护。
模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

耦合

耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
模块耦合分为数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合。

数据耦合

两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。数据耦合是低耦合。系统中至少必须存在这种耦合。

控制耦合

传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。控制耦合是中等程度的耦合

特征耦合

当把整个数据结构作为参数传递,而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。

公共环境耦合

当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。
公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。
公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。

只有两个模块有公共环境,耦合有下面两种可能。

(1) 一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。
(2) 两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。

内容耦合

最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合。
一个模块访问另一个模块的内部数据
 一个模块不通过正常入口而转到另一个模块的内部
 两个模块有一部分程序代码重叠(只可能出现在汇编程序中)
 一个模块有多个入口(这意味着一个模块有几种功能)
应该坚决避免使用内容耦合。

总之,耦合是影响软件复杂程度的一个重要因素。
应该采取下述设计原则:
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

0 0