本文概述
模块联轴器
在软件工程中, 耦合是软件模块之间的相互依赖程度。紧密耦合的两个模块彼此强烈依赖。但是, 两个松散耦合的模块并不相互依赖。未耦合的模块在它们内部完全没有相互依赖性。
图中显示了各种类型的耦合技术:
良好的设计是低耦合的设计。耦合通过模块之间的关系数来衡量。即, 随着模块之间的调用数量增加或共享数据量大, 耦合增加。因此, 可以说具有高耦合的设计将具有更多的误差。
模块联轴器的类型
1.没有直接耦合:M1和M2之间没有直接耦合。
在这种情况下, 模块属于不同的模块。因此, 没有直接耦合。
2.数据耦合:当一个模块的数据传递到另一模块时, 这称为数据耦合。
3.标记耦合:如果两个模块使用复合数据项(例如结构, 对象等)进行通信, 则它们将被标记耦合。当模块将非全局数据结构或整个结构传递给另一个模块时, 它们被称为标记耦合。例如, 将C语言中的结构变量或C ++语言中的对象传递给模块。
4.控制耦合:如果来自一个模块的数据用于指导另一个模块的指令执行结构, 则两个模块之间存在控制耦合。
5.外部耦合:当两个模块共享外部施加的数据格式, 通信协议或设备接口时, 就会发生外部耦合。这与与外部工具和设备的通信有关。
6.通用耦合:如果两个模块通过某些全局数据项共享信息, 则它们是通用耦合。
7.内容耦合:如果两个模块共享代码, 则它们之间存在内容耦合, 例如, 从一个模块到另一个模块的分支。
模块内聚
在计算机程序设计中, 内聚性定义了模块的各个元素所属的程度。因此, 内聚度量了给定模块内功能之间的关系强度。例如, 在高度内聚的系统中, 功能密切相关。
内聚力是测量的序数类型, 通常被描述为”高内聚力”或”低内聚力”。
模块内聚的类型
- 功能内聚:如果模块的不同元素协作以实现单个功能, 那么功能内聚就存在。
- 顺序内聚:如果模块的元素形成序列的组成部分, 则该模块具有序列内聚, 其中序列的一个组成部分的输出将输入到下一个。
- 通讯凝聚力:如果模块的所有任务都引用或更新相同的数据结构(例如, 在数组或堆栈上定义的功能集), 则该模块具有通讯凝聚力。
- 程序内聚:如果模块的目的集是过程的所有部分, 那么该模块就称为过程内聚, 在该过程中必须执行特定的步骤顺序以实现目标, 例如解码消息的算法。
- 时间凝聚:当模块包含必须同时执行所有方法的事实而关联的功能时, 该模块就表现为时间凝聚。
- 逻辑内聚:如果模块的所有元素都执行类似的操作, 则该模块被称为逻辑内聚。例如错误处理, 数据输入和数据输出等。
- 巧合的凝聚力:如果一个模块执行一组非常松散地相互关联的任务(如果有的话), 则称其具有巧合的凝聚力。
区分耦合和内聚
Coupling | Cohesion |
---|---|
耦合也称为模块间绑定。 | 内聚也称为模块内绑定。 |
耦合显示模块之间的关系。 | 内聚力显示模块内的关系。 |
耦合显示了模块之间的相对独立性。 | 内聚力显示模块的相对功能强度。 |
在创建时, 你应该以低耦合为目标, 即模块之间的依赖关系应该更少。 | 在创建时, 你应该追求较高的内聚性, 即内聚的组件/模块专注于单个功能(即, 一心一意), 而与系统的其他模块的交互作用很小。 |
在耦合中, 模块链接到其他模块。 | 在衔接方面, 该模块专注于单个事物。 |
评论前必须登录!
注册