【软件设计】软件设计术语|耦合与内聚

视频号

微信公众号

知识星球

Chinese, Simplified

sd

什么是内聚和耦合?

软件工程中的内聚和耦合是描述软件系统中模块或组件之间关系的两个重要概念。

它们用于评估设计质量,并测量系统组件之间的交互效果。

耦合表示模块之间的关系,内聚定义了模块内部的关系。

凝聚性

衔接是指单个模块的职责相关和集中的程度。

它衡量模块的内部元素连接的强度,以及为实现共同目的而协同工作的强度。

高内聚性提高了代码的可重用性、可维护性和可理解性。

内聚度越高,软件的质量就越好。

耦合

耦合是指系统中两个或多个模块之间的相互依赖程度。

它测量模块连接的紧密程度以及它们相互依赖的程度。

低耦合促进了代码的独立性、模块性和灵活性。

耦合度越低,软件的质量越好。

SD

什么是凝聚力?

软件工程中的内聚性是指模块/组件内部的元素在多大程度上属于一起,用于执行单个任务。

简单地说,它是模块的元素在功能上相关的程度。

具有高度内聚性的模块包含彼此紧密相关并在其目的上统一的元素。

但是,如果一个模块包含不相关的元素,则称其具有低内聚性;如果该模块具有所有相关元素,则认为其具有高内聚性。

一个好的软件设计将具有很高的内聚性。

衔接的概念与单一责任原则密切相关,即一个班级只应承担一项责任或执行一项任务。

SRP之后的模块可能具有很高的内聚性,因为它们旨在执行软件中的单个任务。

软件工程中的内聚有哪些不同类型?

软件工程中的内聚类型有:

SD

1.功能内聚

当模块中的元素执行单个定义明确的任务或功能时,就会发生功能内聚。

模块中的所有元素都有助于实现相同的目标。

这种类型的凝聚力被认为是最理想和最强的。

示例-读取交易记录、余弦角计算、航空公司乘客座位分配等

2.顺序内聚

当模块中的元素按特定顺序排列时,就会发生顺序衔接,其中一个元素的输出作为下一个元素。

这些元素以逐步的方式执行,以实现特定的功能。

示例-交叉验证记录和模块格式、原始记录使用、原始记录格式、原始纪录中字段的交叉验证等。

3.通讯内聚

当模块中的元素对相同的输入数据进行操作或通过参数共享数据时,就会发生通信衔接。

模块中的元素通过相互传递数据来协同工作。

它比顺序衔接弱。

示例-使用客户帐号、查找客户名称、客户的贷款余额等。

4.过程内聚

当模块中的元素基于特定的动作或步骤序列进行分组时,就会发生过程衔接。

这种类型的衔接比交际衔接弱。

示例-读取、写入、编辑模块、对数字字段进行零填充、返回记录等。

5.时间内聚

当模块中的元素在同一时间或同一时间段内执行时,就会发生时间内聚。

它被认为比程序衔接弱。

示例-将计数器设置为零,打开学生文件,清除错误消息的变量,初始化数组等。

6.逻辑内聚

当模块中的元素在逻辑上是相关的,但不适合任何其他内聚类型时,就会发生逻辑内聚。

它不像其他内聚类型那样强。

示例—组件从磁带、磁盘和网络等读取输入时。

7.重合衔接

当元素彼此不相关时,就会发生重合内聚。

示例-用于杂项功能、客户记录使用、客户记录显示、总销售额计算和读取交易记录等的模块。

什么是耦合?

软件工程中的耦合是指软件系统中模块或组件之间的相互依赖和连接程度。

如果两个模块紧密连接,则称其具有高耦合性。

简而言之,耦合不仅仅是模块,而是模块之间的连接以及两个模块之间的相互作用或相互依存程度。如果两个模块包含大量数据,那么它们是高度相互依赖的。

如果组件之间的连接是强的,我们谈论的是强耦合模块;当连接较弱时,我们谈论松散耦合的模块。

SD

软件工程中的耦合有哪些不同类型?

SD

1.数据耦合

当模块通过参数或自变量共享数据时,就会发生数据耦合。

每个模块都维护自己的数据,并不完全访问或修改其他模块的数据。

这种类型的耦合促进了封装和模块的相互依赖性。

2.印记耦合

印记耦合是一种较弱的耦合形式,其中模块共享一个复合数据结构,但并非每个模块都使用所有元素。

由于数据和元素是预先组织好的并放置好的,因此在两个耦合模块之间不会共享或传递垃圾或未使用的数据,这提高了模块的效率。

3.控制耦合

一个模块控制另一个模块的行为时,就会发生控制耦合。

这种类型的耦合意味着一个模块或另一个模块具有内部工作和决策的知识,这使得代码更难维护。

4.外部耦合

外部耦合衡量系统依赖外部实体来实现其功能或与外部环境交互的程度。

  • 低外部耦合-外部实体的变化对系统的内部实现几乎没有影响。
  • 中间外部耦合-外部实体的更改需要在系统内进行一些修改,以适应新的接口。
  • 高度外部耦合-外部实体的变化对系统的内部实施产生重大影响,需要进行大量修改。

5.公共耦合

当系统中的两个或多个模块共享全局数据时,会发生公共耦合。

模块可以访问和操作相同的全局变量和数据结构。

6.内容耦合

当一个模块直接访问或修改另一个模块的内容时,就会发生内容耦合。

这种类型的耦合是强烈的,也是不可取的,因为它将模块紧密耦合,使它们高度独立于彼此的实现。

内聚和耦合之间的关系是什么?

软件工程中内聚和耦合之间的关系可以由以下因素决定:

  • 反向关系-当内聚力高时,耦合度往往较低。高内聚性意味着模块中的元素密切相关,共同努力实现既定目的。
  • 设计目标-高内聚性和低耦合性有助于提高软件系统的可维护性、可重用性和灵活性。
  • 对软件质量的影响-高内聚性有助于代码库更好的理解性、可读性和可维护性。低耦合降低了模块之间的相互依赖性。
  • 权衡-开发人员需要根据系统的具体需求和约束条件来达成平衡。

什么是内聚和耦合度量?

这些是用于评估软件工程中的耦合和内聚水平的定量度量。以下是一些常见指标:

内聚性度量

1.缺乏凝聚方法(LCOM)

通过模块中不相交的方法集的数量计算。

LCOM值越高表示内聚力越低。

2.LCOM2

通过不相交的方法集的数量计算,但与LCOM相比,它提供了更精细的内聚度量。

3.紧密类粘聚(TCC)

表示访问相同属性的方法对的比例。

TCC值越高表示凝聚力越强。

耦合度量

1.对象之间的耦合(CBO)

CBO测量类所耦合的其他类或对象的数量。

较高的CBO值表明增加了耦合性,降低了可重用性。

2.类的响应(RFC)

RFC测量类中可以响应该类的对象接收到的消息而执行的方法的数量。

较高的RFC值表示较高的复杂性。

3.继承树深度(DIT)

DIT度量类的继承层次结构中的级别数。

DIT值越高,表示继承树越深,耦合性越强。

本文地址
https://architect.pub/software-design-glossary-cohesion-and-coupling
SEO Title
Software design glossary Cohesion and Coupling