在软件开发过程中,模块的内聚类型对于系统的设计和维护至关重要。它决定了模块内部元素的紧密程度和功能相关性。以下将详细介绍各种内聚类型,并通过实例和 UML 图示来帮助理解。

一、功能内聚

功能内聚是指模块完成一个单一功能,各个部分协同工作,缺一不可。这意味着模块内部的所有元素都紧密围绕着实现一个具体且独立的功能

image.png

例如,在一个计算器软件中,加法运算模块就是功能内聚的。这个模块只负责将输入的两个数字相加并返回结果。模块内部的算法、数据处理等元素都只为了实现加法运算这一功能。

二、顺序内聚

顺序内聚是指模块中的处理元素相关,而且必须顺序执行。也就是说,模块内部的操作有明确的先后顺序,前一个操作的结果是后一个操作的输入

image.png

以在线购物系统中的订单处理模块为例。订单处理流程包括接收订单、验证订单信息、扣减库存、生成支付链接等步骤。这些步骤必须按顺序执行,属于顺序内聚。

三、通信内聚

通信内聚是指所有处理元素集中在一个数据结构的区域上。模块内的操作主要是对特定的数据结构进行处理

image.png

在一个学生管理系统中,成绩统计模块就是通信内聚的。该模块主要对学生成绩的数据结构进行操作,例如计算平均分、最高分、最低分等操作都围绕学生成绩数据展开。

四、过程内聚

过程内聚是指处理元素相关,而且必须按特定的次序执行与顺序内聚类似,但更强调处理过程的整体性

image.png

比如在一个文件处理系统中,文件上传模块就是过程内聚的。它包括选择文件、压缩文件、加密文件、上传文件等步骤,这些步骤有特定的次序且紧密相关。

五、瞬时内聚(时间内聚)

瞬时内聚是指所包含的任务必须在同一时间间隔内执行。模块内的操作在时间上具有紧密的关联性。

image.png

在一个定时备份系统中,每天凌晨 2 点进行数据备份操作的模块就是瞬时内聚的。在凌晨 2 点这个特定时间点,系统会同时执行数据读取、压缩、存储等操作来完成备份。

六、逻辑内聚

逻辑内聚是指完成逻辑上相关的一组任务。模块内的操作在逻辑上是相关的,但可能涉及不同的数据和操作类型。

image.png

在一个数据分析系统中,数据筛选模块就是逻辑内聚的。它可能包括筛选出销售额大于一定数值的数据、筛选出特定地区的数据等操作,这些操作在逻辑上都属于数据筛选范畴。

七、偶然内聚(巧合内聚)

偶然内聚是指完成一组没有关系或松散关系的任务。这种内聚类型的模块内部元素关联性最弱。

image.png

假设在一个软件中有一个杂项工具模块,它包含了计算圆面积、转换文件格式、生成随机数等操作,这些操作之间没有紧密的联系,属于偶然内聚。