软件设计中七个内聚等级的说明

耦合(Coupling)和内聚(Cohesion)是衡量模块设计质量的两个非常重要的概念。耦合描述了一个模块与其他模块之间的依赖关系强度,内聚则描述了模块内部各个部分之间的关联程度。

 

软件开发应向“低耦合高内聚”靠拢,理想的软件设计应该追求低耦合和高内聚。低耦合可以使模块更独立、更易于修改和维护。

高内聚则确保模块内部逻辑清晰、专注,更易于理解和复用。

 

本文主要介绍软件设计中的模块的七个内聚等级。

关于模块之间的耦合内容的介绍,请参考:软件设计中七个耦合等级的说明

 

一、偶然内聚

偶然内聚(Coincidental Cohesion): 也称为“巧合内聚”,是模块内聚性的一种最低形式。在偶然内聚的模块中,各个元素之间几乎没有明显的逻辑关系或功能关联,它们只是被偶然地组合在一起。这种模块通常包含一些看似无关的功能或代码片段,仅仅是因为它们在某些情况下需要一起执行。

博文详解:理解“偶然内聚”

 

二、逻辑内聚

逻辑内聚是指在一个模块中,各个功能虽然执行不同的操作,但它们基于某种逻辑条件或参数来决定具体执行哪个操作。也就是说,模块中的不同功能通过某些逻辑判断(如传入的参数或控制标志)来选择执行哪一部分代码。

尽管逻辑内聚比偶然内聚(Coincidental Cohesion)要好一些,但它仍然不是理想的内聚形式。这是因为模块内部的功能虽然有一定的逻辑联系,但这些功能并不紧密相关,通常只是因为它们共享了某些输入或控制条件而被组合在一起。

博文详解:理解“逻辑内聚”

 

三、时间内聚

时间内聚是指模块中的各个功能由于需要在同一时间段内执行而被组合在一起。这种内聚形式通常出现在初始化、清理或定时任务的场景中,其中多个操作可能没有直接的逻辑关系,但它们需要在特定的时间点或时间段内完成。

尽管时间内聚比偶然内聚(Coincidental Cohesion)要好一些,但它仍然不是理想的内聚形式。这是因为模块内部的功能虽然有一定的执行时间上的联系,但这些功能并不紧密相关,通常只是因为它们需要在同一时间段内完成而被组合在一起。

博文详解:理解“时间内聚”

 

四、过程内聚

过程内聚是指在一个模块中,各个功能按照某种过程或步骤执行,即它们一起完成一系列相关的操作。这意味着模块内部的每个操作都有一定的顺序性,并且这些操作通常是为了完成一个特定的任务。尽管过程内聚比偶然内聚(Coincidental Cohesion)要好一些,但它仍然不是理想的内聚形式。这是因为模块内部的功能虽然有一定的执行顺序上的联系,但这些功能并不总是紧密相关。

博文详解:理解“过程内聚”

 

五、通信内聚

通信内聚是指在一个模块中,所有操作都使用相同的输入数据或产生相同的输出数据。这意味着模块内部的所有功能紧密依赖于共同的数据集进行处理。这种类型的内聚通常出现在需要对同一组数据执行多种相关操作的场景中。尽管通信内聚比偶然内聚和逻辑内聚要好一些,但它仍然不是最高级别的内聚形式,因为它可能包含的功能并不总是直接相关的。

博文详解:理解“通信内聚”

 

六、顺序内聚

顺序内聚是指在一个模块中,各个功能按照一定的顺序执行,并且每个操作的输出直接作为下一个操作的输入。这意味着模块内部的操作是紧密相连的,形成了一条连续的数据处理链。顺序内聚是一种较强的内聚形式,因为它确保了模块内的所有操作都直接相关并且相互依赖。

博文详解:理解“顺序内聚”

 

七、功能内聚

功能内聚(Functional Cohesion)是最高级别的内聚形式,指的是模块内的所有元素都紧密地围绕着一个单一的功能或任务进行设计。这意味着模块的所有组成部分都是为了完成这个特定的任务而存在的,并且这些部分之间具有非常强的逻辑关联性。功能内聚的模块通常是最小化、最专注的,易于理解、维护和重用。

博文详解:理解“功能内聚”

 

总结对比

内聚类型

描述

示例

偶然内聚

模块中的功能几乎没有逻辑联系。

一个类同时负责发送邮件和记录日志。

逻辑内聚

模块中的功能基于某种逻辑条件选择执行哪个操作。

一个类根据输入参数选择执行不同的算法。

时间内聚

模块中的功能需要在同一时间段内执行。

一个类同时初始化多个对象。

过程内聚

模块中的功能按照一定的顺序执行,但不一定紧密相关。

一个类依次验证用户输入、创建账户、发送确认邮件。

通信内聚

模块中的功能共享相同的数据输入或输出。

一个类同时计算订单总价、应用折扣、生成订单摘要,共享订单数据。

顺序内聚

模块中的功能按顺序执行,并且前一个功能的输出作为下一个功能的输入。

一个类依次计算订单总价、应用折扣、生成订单摘要,每步依赖前一步的结果。

功能内聚

模块中的所有功能都紧密相关,共同实现一个单一的功能或目标。

一个类专门负责处理用户的登录请求。

 

 

内容概要:本文详细介绍了基于FPGA的144输出通道可切换电压源系统的设计与实现,涵盖系统总体架构、FPGA硬件设计、上位机软件设计以及系统集成方案。系统由上位机控制软件(PC端)、FPGA控制核心和高压输出模块(144通道)三部分组成。FPGA硬件设计部分详细描述了Verilog代码实现,包括PWM生成模块、UART通信模块和温度监控模块。硬件设计说明中提及了FPGA选型、PWM生成方式、通信接口、高压输出模块和保护电路的设计要点。上位机软件采用Python编写,实现了设备连接、命令发送、序列控制等功能,并提供了一个图形用户界面(GUI)用于方便的操作和配置。 适合人群:具备一定硬件设计和编程基础的电子工程师、FPGA开发者及科研人员。 使用场景及目标:①适用于需要精确控制多通道电压输出的实验环境或工业应用场景;②帮助用户理解和掌握FPGA在复杂控制系统中的应用,包括PWM控制、UART通信及多通道信号处理;③为研究人员提供一个可扩展的平台,用于测试和验证不同的电压源控制算法和策略。 阅读建议:由于涉及硬件和软件两方面的内容,建议读者先熟悉FPGA基础知识和Verilog语言,同时具备一定的Python编程经验。在阅读过程中,应结合硬件电路图和代码注释,逐步理解系统的各个组成部分及其相互关系。此外,实际动手搭建和调试该系统将有助于加深对整个设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值