耦合是什么意思(彻底理解什么是内聚和耦合?)
软件设计中应保持模块独立性原则。有两个标准来反映模块的独立性:内聚和耦合。内聚性衡量一个模块内各元素的紧密、友好、优秀的资源 *** 密度程度,耦合性衡量模块间的相互依赖程度。
耦合
耦合是指模块之间相互关联的程度。模块之间的相关程度取决于以下几点:
一个模块对另一个模块的访问。例如,模块A可能调用模块B来完成一个功能,因此模块A依赖于模块B来完成它的功能。
模块之间传递的数据量。
控制信息从一个模块传递到另一个模块。
模块间接口的复杂性。
根据这几点,联轴器可以分为7类:
内容耦合:
如果一个模块直接引用另一个模块的内容,那么这两个模块就是内容耦合的。
普通联轴器:
如果多个模块都访问同一个公共数据环境,则称为公共耦合。公共数据环境可以是全局数据结构、共享通信区、内存公共覆盖区等。由于许多模块共享相同的公共数据环境,如果一个模块修改了数据,就会影响所有相关的模块。
外部耦合:
如果两个模块访问的是同一个全局简单变量,而不是同一个全局数据结构,那么这两个模块属于外部耦合。
控制耦合:
如果模块A向模块B发送控制消息,这两个模块被称为控制耦合。例如,当一个函数名作为参数传递给另一个模块时,它实际上控制了另一个模块的执行逻辑。控制的主要问题是两个模块不是相互独立的。调用模块必须知道被调用模块的内部结构和逻辑,这不符合信息隐藏和抽象的设计原则,也降低了模块的可重用性。
数据结构耦合:
当一个模块调用另一个模块时,传递的是整个数据结构,所以两个模块之间存在数据结构耦合。
数据耦合:
如果两个模块传输数据项,则这两个模块是数据耦合的。
间接耦合:
如果两个模块之间没有直接关系,那么它们之间的连接完全是通过主模块的控制和调用来实现的,这就是间接耦合。
上述耦合中,内容耦合是模块间最紧密的耦合,间接耦合是模块间最松散的耦合。软件设计的目标是降低模块间的耦合度,应采用的设计原则是:尽量使用数据耦合,少用控制耦合,朋友和资源的 *** 连接,限制公共耦合,坚决避免内容耦合。
内聚力
内聚是指模块中元素之间关系的紧密程度。衔接分为七种类型。内聚的含义及其对软件独立性的影响将在下面讨论。
凝聚力:
如果一个模块执行几个完全不相关的动作,那么这个模块有重合内聚。
逻辑衔接:
当一个模块执行一系列相关的动作时,我们说它具有逻辑内聚性。例如,一个模块执行插入、删除和修改主文件的操作。通常,逻辑上内聚的模块包含太多相关的功能。当一个模块包含更多的功能时,就必须有更多的模块入口参数。通常,执行模块中的哪个功能是根据入口参数决定的。因此,逻辑内聚模块带来两个问题:一是接口参数复杂,难以理解;另一个是多个功能交织在一起,降低了模块的可维护性。
时间凝聚力:
当一个模块中的多个任务与时间相关时,这个模块具有时间内聚性。最常见的时间内聚模块是初始化模块。除了系统启动时需要完成的时间外,该模块中的动作之间没有其他关系。
流程凝聚力:
由模块执行的几个动作是相互关联的,并且具有顺序关系。例如,从输入接口读取数据,然后更新数据库记录。它仍然是通过将几个相关的功能放在一个模块中来实现的。
沟通凝聚力:
模块中的所有元素使用相同的输入数据或产生相同的输出数据。
序列内聚力:
如果一个模块中的处理元素与同一个功能密切相关,并且这些过程必须顺序执行,那么这个模块就具有顺序内聚性。
功能凝聚力:
模块的每个部分都是完成特定功能的重要部分。这些部分相互协调工作,紧密联系,密不可分,目的是完成一个完整的功能。具有内聚功能的模块是理想的模块,易于理解和维护,具有良好的复用性。
在上述七种衔接方式中,功能性衔接模块的独立性最强,而巧合性衔接模块的独立性最弱。在设计时,我们应该确保模块尽可能具有功能内聚性。
内聚和耦合是相互关联的。在整体设计中,要尽量提高模块的内聚性,降低模块间的耦合性。
本文地址:百科生活频道 https://www.neebe.cn/live/944073.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!