耦合是什么意思(什么是内聚和耦合?)

/ 0评 / 0

软件设计应坚持模块独立的原则。反映模块独立性的标准有两个:内聚性和耦合性。内聚性度量模块中各种元素集成的紧密程度,耦合性度量模块之间相互依赖的程度。

耦合

耦合是指模块之间的关联程度。模块之间的关联程度取决于以下几点:

从一个模块到另一个模块的访问。例如,模块A可能调用模块B来完成一个功能,所以模块A依赖模块B来完成其功能。

模块之间传输的数据量。

从一个模块传输到另一个模块的控制信息。

模块间接口的复杂性。

根据这几点,耦合可以分为七类:

内容耦合:

如果一个模块直接引用另一个模块的内容,那么这两个模块是内容耦合的。

公共耦合:

如果多个模块访问同一个公共数据环境,Best Network称之为公共耦合。公共数据环境可以是全局数据结构、共享通信区域、公共内存覆盖区域等。由于多个模块共享同一个公共数据环境,如果一个模块修改数据,将会影响所有相关模块。

外部耦合:

如果两个模块访问相同的全局简单变量而不是相同的全局数据结构,那么这两个模块是外部耦合的。

控制耦合:

如果模块A向模块B发送控制消息,则称这两个模块是控制耦合的。例如,当一个函数名作为参数传递给另一个模块时,它实际上控制着另一个模块的执行逻辑。控制耦合的主要问题是两个模块不相互独立,调用模块必须知道被调用模块的内部结构和逻辑,不符合信息隐藏和抽象的设计原则,也降低了模块的可重用性。

数据结构耦合:

当一个模块调用另一个模块时传递整个数据结构时,两个模块之间存在数据结构耦合。

数据耦合:

如果两个模块传递数据项,那么这两个模块是数据耦合的。

间接耦合:

如果两个模块之间没有直接的联系,那么它们之间的联系完全是通过主模块的控制和调用来实现的,这就是所谓的间接耦合。

以上耦合中,内容耦合是模块间最紧密的耦合,间接耦合是模块间最松散的耦合。软件设计的目标是降低模块之间的耦合度。应该采用的设计原则是:尽量使用数据耦合,尽量少控制耦合,限制公共耦合,坚决避免内容耦合。

内聚力

内聚性是指模块中元素之间关系的紧密程度。衔接分为七种类型。下面讨论内聚的含义及其对软件独立性的影响。

巧合凝聚力:

如果一个模块执行多个完全不相关的动作,那么这个模块就具有巧合的内聚性。

逻辑衔接:

当一个模块执行一系列相关的动作时,它被称为逻辑内聚。例如,模块执行插入、删除和修改主文件的操作。一般来说,一个具有逻辑内聚性的模块包含了太多相关的功能。当一个模块包含的功能较多时,模块的入口参数必然较多,模块中的哪些功能通常是根据入口参数来决定的。因此,逻辑内聚模块带来了两个问题:一是接口参数复杂,难以理解;二是多种功能交织,降低了模块的可维护性。

时间凝聚力:

当一个模块中的多个任务与时间相关时,这个模块具有时间内聚性。最常见的时间衔接模块是初始化模块,除了系统启动时需要完成的时间外,这个模块中的动作之间没有其他关系。

流程衔接:

模块执行的几个动作是相互关联的,并且具有顺序关系。例如,从输入接口读取数据,然后更新数据库记录。仍然是在一个模块中实现多个相关功能。

沟通凝聚力:

模块中的所有元素使用相同的输入数据或产生相同的输出数据。

顺序衔接:

如果一个(www.isoyu.com原创版权)模块中的处理元素与同一个功能密切相关,并且这些过程必须按顺序执行,那么这个模块就具有顺序内聚性。

功能衔接:

模块的每个部分都是完成特定功能的必要部分。这些部分相互协调工作,密切相关,不可分割,目的是完成一个完整的功能。具有功能内聚性的模块是最理想的模块,易于理解和维护,具有良好的可重用性。

在以上七种衔接中,功能衔接模块的独立性最强,巧合衔接模块的独立性最弱。设计时要尽量保证模块的功能衔接。