内聚与耦合

本文详细介绍了软件设计中的高内聚与低耦合原则,包括耦合的七种类型及其影响,以及内聚的八种形式,阐述了如何通过优化模块间的关系提升软件质量和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高内聚与低耦合:


不同模块之间的关系就是耦合,根据耦合程度可以分为7种,耦合度以此降低

内容耦合:是指如果一个模块与另一个模块的内部属性有关,不经调用直接使用另一个模块的程序代码或内部数据,那么这两个模块之间就存在内容耦合。这种耦合表明一个模块与另一个模块的额内部数据或程序代码有关,当一个模块的程序代码被修改或内部数据出错,必然引起另一个模块出错。


公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。公共数据环境是全程变量或数据结构共享的通信。内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合)。由于两个模块都要引用同一个公共数据域,因此有较高的耦合度。


外部耦合:一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合和公共耦合很像,区别就是一个是简单变量,一个是复杂数据结构。


控制耦合:指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能。


标记耦合两个模块之间传递的是数据结构,如高级语言的数组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。


数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递。


非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。

 

一个模块内部各成分之间相关联程度的度量就是内聚

偶然内聚

如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。

逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

时间内聚

如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

通信内聚

如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。

顺序内聚

如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚

过程内聚

构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。

模块完成多个需要按一定的步骤一次完成的功能。(过程相关---控制耦合)。例如:在用程序流程图设计模块时,若将程序流程图中的一部分划出各自组成模块,便形成过程内聚

信息内聚

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。

功能内聚

模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值