耦合是对软件系统中模块之间相互依赖程度的度量,耦合度越高,模块之间的独立性越差,系统的可维护性和可复用性也越低

耦合是对软件系统中模块之间相互依赖程度的度量,耦合度越高,模块之间的独立性越差,系统的可维护性和可复用性也越低。根据模块间依赖关系的不同,耦合可以分为以下几种类型,按耦合度由高到低排列如下:

  1. 内容耦合(Content Coupling)
    最高程度的耦合。一个模块直接访问或修改另一个模块的内部数据或逻辑,例如一个模块跳转到另一个模块的中间执行代码。这是最不希望出现的耦合形式。

  2. 公共耦合(Common Coupling)
    多个模块共享同一个全局数据环境(如全局变量)。一个模块对全局数据的修改可能间接影响其他模块,导致模块间高度依赖。

  3. 外部耦合(External Coupling)
    模块之间通过外部媒介(如I/O格式、通信协议或设备接口)进行交互。由于依赖外部约定,改变外部格式会影响多个模块。

  4. 控制耦合(Control Coupling)
    一个模块通过传递“控制信号”来决定另一个模块的执行流程。例如,传入一个标志参数来选择执行哪段逻辑。这使得被调用模块的行为依赖于调用模块的控制逻辑。

  5. 标记耦合(Stamp Coupling)
    两个模块通过传递复杂的数据结构(如结构体或对象)进行通信,但只使用其中的一部分数据。这种耦合比数据耦合更强,因为模块依赖了整个数据结构的形式。

  6. 数据耦合(Data Coupling)
    模块之间仅通过基本数据参数进行通信,每个参数都是独立的数据项。这是较为理想的耦合方式,模块间依赖最小,独立性强。

  7. 非直接耦合(No Direct Coupling)
    两个模块之间没有直接的信息传递,它们彼此独立,可能通过主模块调用或完全不交互。这是最低的耦合度,理想情况下应尽可能达到。

在软件设计中,应尽量追求低耦合(如数据耦合或非直接耦合),以提高模块的独立性、可测试性、可维护性和可扩展性。

内聚(Cohesion)是指一个模块内部各个元素之间相互关联的紧密程度,或者说是一个模块内部的功能集中度。高内聚意味着模块内的功能高度相关,共同完成一个明确的任务;低内聚则表示模块包含不相关或多个分散的功能。

内聚通常分为七种类型,按从低到高排列如下:

  1. 偶然内聚(Coincidental Cohesion):模块中的任务没有任何逻辑关联,只是因为巧合被放在一起。
  2. 逻辑内聚(Logical Cohesion):将逻辑上相似的功能放在一个模块中(如所有输入处理),但实际操作不同。
  3. 时间内聚(Temporal Cohesion):模块中的操作在同一时间段内执行,但功能无关(如初始化系统资源)。
  4. 过程内聚(Procedural Cohesion):操作按特定顺序执行,形成一个处理流程。
  5. 通信内聚(Communicational Cohesion):模块中的所有处理都使用相同的数据或输出到同一数据区。
  6. 顺序内聚(Sequential Cohesion):前一个操作的输出是下一个操作的输入,形成数据流。
  7. 功能内聚(Functional Cohesion):最高级别的内聚,模块内所有元素共同完成一个单一、明确的功能。

内聚与耦合的关系

  • 内聚和耦合是衡量软件模块化设计质量的两个关键标准。
  • 高内聚、低耦合 是软件设计的理想目标:
    • 高内聚使模块职责清晰、易于理解与维护;
    • 低耦合减少模块间的依赖,提升系统的灵活性和可扩展性。
  • 提高模块的内聚性往往有助于降低与其他模块的耦合度。例如,当一个模块只做一件事(功能内聚),它对外部的需求就会更少、接口更简洁,从而减少不必要的依赖。

因此,在软件工程中,追求“高内聚、低耦合”能够显著提升系统的可读性、可测试性和可维护性。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值