个性化阅读
专注于IT技术分析

耦合与内聚图文详解

本文概述

模块联轴器

在软件工程中, 耦合是软件模块之间的相互依赖程度。紧密耦合的两个模块彼此强烈依赖。但是, 两个松散耦合的模块并不相互依赖。未耦合的模块在它们内部完全没有相互依赖性。

图中显示了各种类型的耦合技术:

耦合与内聚

良好的设计是低耦合的设计。耦合通过模块之间的关系数来衡量。即, 随着模块之间的调用数量增加或共享数据量大, 耦合增加。因此, 可以说具有高耦合的设计将具有更多的误差。

模块联轴器的类型

耦合与内聚

1.没有直接耦合:M1和M2之间没有直接耦合。

耦合与内聚

在这种情况下, 模块属于不同的模块。因此, 没有直接耦合。

2.数据耦合:当一个模块的数据传递到另一模块时, 这称为数据耦合。

耦合与内聚

3.标记耦合:如果两个模块使用复合数据项(例如结构, 对象等)进行通信, 则它们将被标记耦合。当模块将非全局数据结构或整个结构传递给另一个模块时, 它们被称为标记耦合。例如, 将C语言中的结构变量或C ++语言中的对象传递给模块。

4.控制耦合:如果来自一个模块的数据用于指导另一个模块的指令执行结构, 则两个模块之间存在控制耦合。

5.外部耦合:当两个模块共享外部施加的数据格式, 通信协议或设备接口时, 就会发生外部耦合。这与与外部工具和设备的通信有关。

6.通用耦合:如果两个模块通过某些全局数据项共享信息, 则它们是通用耦合。

耦合与内聚

7.内容耦合:如果两个模块共享代码, 则它们之间存在内容耦合, 例如, 从一个模块到另一个模块的分支。


模块内聚

在计算机程序设计中, 内聚性定义了模块的各个元素所属的程度。因此, 内聚度量了给定模块内功能之间的关系强度。例如, 在高度内聚的系统中, 功能密切相关。

内聚力是测量的序数类型, 通常被描述为”高内聚力”或”低内聚力”。

耦合与内聚

模块内聚的类型

耦合与内聚
  1. 功能内聚:如果模块的不同元素协作以实现单个功能, 那么功能内聚就存在。
  2. 顺序内聚:如果模块的元素形成序列的组成部分, 则该模块具有序列内聚, 其中序列的一个组成部分的输出将输入到下一个。
  3. 通讯凝聚力:如果模块的所有任务都引用或更新相同的数据结构(例如, 在数组或堆栈上定义的功能集), 则该模块具有通讯凝聚力。
  4. 程序内聚:如果模块的目的集是过程的所有部分, 那么该模块就称为过程内聚, 在该过程中必须执行特定的步骤顺序以实现目标, 例如解码消息的算法。
  5. 时间凝聚:当模块包含必须同时执行所有方法的事实而关联的功能时, 该模块就表现为时间凝聚。
  6. 逻辑内聚:如果模块的所有元素都执行类似的操作, 则该模块被称为逻辑内聚。例如错误处理, 数据输入和数据输出等。
  7. 巧合的凝聚力:如果一个模块执行一组非常松散地相互关联的任务(如果有的话), 则称其具有巧合的凝聚力。

区分耦合和内聚

Coupling Cohesion
耦合也称为模块间绑定。 内聚也称为模块内绑定。
耦合显示模块之间的关系。 内聚力显示模块内的关系。
耦合显示了模块之间的相对独立性。 内聚力显示模块的相对功能强度。
在创建时, 你应该以低耦合为目标, 即模块之间的依赖关系应该更少。 在创建时, 你应该追求较高的内聚性, 即内聚的组件/模块专注于单个功能(即, 一心一意), 而与系统的其他模块的交互作用很小。
在耦合中, 模块链接到其他模块。 在衔接方面, 该模块专注于单个事物。

赞(0) 打赏
未经允许不得转载:srcmini » 耦合与内聚图文详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏