彻底理解什么是内聚和耦合? 耦合是什么意思


彻底理解什么是内聚和耦合? 耦合是什么意思

文章插图
耦合是什么意思(彻底理解什么是内聚和耦合?)
软件设计中应保持模块独立性原则 。反映模块独立性的标准有两个:内聚和耦合 。内聚性度量一个模块中的每个元素相互结合的紧密程度,耦合性度量模块之间相互依赖的程度 。
耦合耦合是指模块之间的相关程度 。模块之间的关联程度取决于以下几点:
从一个模块访问另一个模块 。例如,模块A可能调用模块B来完成一个功能,因此模块A依赖于模块B来完成它的功能 。
模块之间传输的数据量 。
从一个模块传输到另一个模块的控制信息 。
模块间接口的复杂性 。
根据这几点,联轴器可以分为七类:

内容耦合:
如果一个模块直接引用另一个模块的内容,那么这两个模块就是内容耦合的 。
普通联轴器:
如果多个模块访问同一个公共数据环境,则称为公共耦合 。公共数据环境可以是全局数据结构、共享通信区、存储器的公共覆盖区等 。因为多个模块共享同一个公共数据环境,所以如果一个模块修改了数据,就会影响所有相关的模块 。
外部耦合:
如果两个模块访问的是同一个全局简单变量,而不是同一个全局数据结构,那么这两个模块属于外部耦合 。
控制耦合:
如果模块A向模块B发送控制消息,这两个模块被称为控制耦合 。例如,当一个函数名作为参数传递给另一个模块时,它实际上控制了另一个模块的执行逻辑 。控制的主要问题是两个模块不是相互独立的,调用模块必须知道被调用模块的内部结构和逻辑,这不符合信息隐藏和抽象的设计原则,也降低了模块的可重用性 。
数据结构耦合:
当一个模块调用另一个模块时,传递的是整个数据结构,所以两个模块之间存在数据结构耦合 。
数据耦合:
如果两个模块传递数据项,则这两个模块是数据耦合的 。
间接耦合:
如果两个模块之间没有直接关系,那么它们之间的连接完全是通过主模块的控制和调用来实现的,这就是间接耦合 。
上述耦合中,内容耦合是模块间最紧密的耦合,间接耦合是模块间最松散的耦合 。软件设计的目标是降低模块间的耦合度 。设计原则应该是:尽量使用数据耦合,少用控制耦合,限制公共耦合,坚决不使用内容耦合 。
内聚力内聚指的是一个模块内元素之间关系的紧密程度 。衔接分为七种类型 。内聚的含义及其对软件独立性的影响将在下面讨论 。

重合内聚:
如果一个模块执行几个完全不相关的动作,那么信息资源网络对这个模块具有重合内聚性 。
【彻底理解什么是内聚和耦合? 耦合是什么意思】逻辑衔接:
当一个模块执行一系列相关的动作时,我们说它具有逻辑内聚性 。例如,一个模块可以插入、删除和修改主文件 。通常,逻辑上内聚的模块包含太多相关的功能 。当一个模块包含更多的函数时,必然会有更多的模块入口参数,通常根据入口参数来决定模块中的哪个函数 。因此,逻辑内聚模块带来两个问题:一是接口参数复杂,难以理解;另一个是多个信息资源网络的功能相互交织,降低了模块的可维护性 。
时间凝聚力:
当一个模块中的多个任务与时间相关时,这个模块具有时间内聚性 。最常见的时间内聚模块是初始化模块 。除了时间需要在系统初始启动时完成之外,该模块中的动作之间没有其他关系 。
流程凝聚力:
由模块执行的几个动作是相互关联的,并且具有顺序关系 。例如,从输入接口读取数据,然后更新数据库记录 。还是把几个相关的功能放在一个模块里实现 。
沟通凝聚力:
模块中的所有元素使用相同的输入数据或产生相同的输出数据 。
顺序衔接:
如果一个模块中的处理元素与同一个功能密切相关,并且这些过程必须顺序执行,那么这个模块就具有顺序内聚性 。
功能凝聚力:
模块的每个部分都是完成特定功能的基本组件 。这些部分相互协调工作,紧密联系,密不可分,旨在完成一个完整的功能 。具有内聚功能的模块是最理想的模块,易于理解和维护,复用性好 。
在上述七种内部信息资源网络化中,功能衔接模块独立性最强,重合衔接模块独立性最弱 。设计的时候要尽量保证模块的功能衔接 。
内聚和耦合是相互关联的 。在整体设计中,要尽量提高模块的内聚性,降低模块间的耦合性 。


推荐阅读