【架构设计】软件设计原则中的7种耦合和内聚(详解) ...

打印 上一主题 下一主题

主题 572|帖子 572|积分 1720

<> 博客简介:Linux、rtos体系,arm、stm32等芯片,嵌入式高级工程师、面试官、架构师,日常技术干货、个人总结、职场经验分享

<> 公众号:嵌入式技术部落

<> 系列专栏:C/C++、Linux、rtos、嵌入式开发、流媒体、数据结构、网络协议、开源库、CMake、Makefile、架构设计模式等
  
  
一、前言

耦合(Coupling)和内聚(Cohesion)是衡量软件模块设计质量的两个非常紧张的概念。高内聚、低耦合是我们在软件设计过程中必须遵照的一个紧张原则,在整个软件工程中占有很大的比重。而对于内聚和耦合你是否照旧仅仅局限于“高内聚,低耦合”的模糊概念吗?如何判断何为高低呢?本篇文章将带你分别深度分析和总结内聚与耦合的 7 种范例和形貌,为在以后的项目软件开发中助你一臂之力!
二、内聚

1、定义

内聚指的是模块的内部关系,是一个模块内部各身分之间相关联水平的度量,即模块内部各元素之间联系的紧密水平。通俗来说,如果一个模块的功能能被拆分成许多小功能,那么这个模块的内聚度就不高。
2、7 种内聚范例及其形貌

模块的内聚范例通常可以分为 7 种,我们根据内聚度从高到低排序,如下所示:


  • 功能内聚:模块内全部元素都紧密围绕一个单一的功能构造,共同完成一个特定的使命,全部处置惩罚元素只为完成某一个功能,缺一不可,这是最高级别的内聚。
  • 顺序内聚:一个模块内的操纵必须按特定顺序实验,输出数据成为下一步操纵的输入数据时。前一功能元素的输出就是下一功能元素的输入。
  • 通讯内聚:模块中的全部功能都操纵雷同的数据结构,即指模块内各个组成部分都使用雷同的数据结构或产生雷同的数据结构。
  • 过程内聚:当模块中的元素协同工作实验一个使命序列,相互之间按照特定顺序实验。
  • 时间内聚:模块中的元素相关联,因为它们需要在同一时间段内被实验。顾名思义,就是单纯在时段上重合(如:初始化模块)。
  • 逻辑内聚:当一个模块中的元素被构造在一起,因为它们在逻辑上分类相似,通常通过一个控制语句(如 if-else 或 switch)来选择实验。
  • 偶然内聚:模块内部各个部分之间没有明显的关联,仅仅是偶然放在一起,这是最低级别的内聚。

3、设计要求

在软件模块设计中,寻求高内聚,即模块内部各元素之间的联系越紧密越好,这样有助于模块功能的清楚和专注,提高模块的可明白性和复用性。
三、耦合

1、定义

耦合指的是各个模块之间的关系,是模块之间依靠水平的度量,即模块之间相互联系的紧密水平。通俗来说,如果两个模块的功能相互依靠,没有他我就不能做事,阐明两个模块的联系非常紧密,依靠度高,耦合度高。
2、7 种耦合范例及其形貌

模块的耦合性范例通常分为 7 种,我们根据耦合度从低到高排序,如下所示:


  • 非直接耦合:模块之间没有直接联系,相互不依靠对方。
  • 数据耦合:模块间的交互仅仅通过参数来通报根本范例的数据,这是最佳的耦合方式。
  • 标记耦合:模块间通过参数通报复杂的内部数据结构,这种数据结构的变革将使相关的模块发生变革。又叫特性耦合,当把整个数据结构作为参数通报,而被调用的模块只需要使用此中一部分数据元素时,就出现了特性耦合。
  • 控制耦合:当一个模块控制着另一个模块的逻辑流程(比如通过通报控制参数)时。存在流程控制,阐明控制参数会决定接下来的流程。
  • 外部耦合:当多个模块共享一个外部传来的数据结构大概全局变量时。如 I/O 将模块耦合到特定的设备、格式、 通讯协议上。
  • 公共耦合:两个或更多的模块共享同一个全局数据结构时,这些模块被认为具有公共耦合。公共环境可以是全局变量、共享数据、任何存储介质上的文件等。这种耦合的紧密水平取决于模块对公共数据的存取方式。
  • 内容耦合:一个模块直接使用另一个模块的内部数据大概控制流程时,这是最强的耦合范例,模块独立性最弱。

3、设计要求

在模块设计中,寻求低耦合,即模块之间的依靠关系越弱越好,这样有助于模块的独立性和可维护性,低沉模块间相互影响的风险。
四、总结

本文给大家介绍了软件设计原则中两个核心概念——内聚、耦合,并对两个概念举行了阐述。同时分别补充了内聚与耦合各自的 7 种范例,便于我们判别其水平,在软件开发中更好地设计性能精良的软件体系,只管的淘汰由于内聚、耦合度差带来后期维护和升级的困扰。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表