软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?

文章目录

  • 前言
  • 一、何为内聚?
    • 1.1、7 种内聚类型及其描述
  • 二、何为耦合?
    • 2.1、7 种耦合类型及其描述
  • 总结


前言

高内聚、低耦合是我们在软件设计过程中必须遵循的一个重要原则,在整个软件工程中占有很大的比重。而对于内聚和耦合你还是仅仅局限于“高内聚,低耦合”的模糊概念吗?那你是如何判断何为高低呢?本篇文章将带你分别深度剖析和总结内聚与耦合的 7 种类型和描述,为在以后的项目开发与考试中更好地判断类型助你一臂之力!

在这里插入图片描述


一、何为内聚?

内聚是指模块内部各元素之间联系的紧密程度,也就是代码功能的集中程度。

1.1、7 种内聚类型及其描述

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

内聚类型描述
功能内聚完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚处理元素相关,而且必须顺序执行
通信内聚所有处理元素集中在一个数据结构的区域上
过程内聚处理元素相关,而且必须按特定的次序执行
瞬时内聚所包含的任务必须在同一时间间隔内执行(如:初始化模块)
逻辑内聚完成一组逻辑上相关的任务
偶然内聚完成一组没有关系或松散关系的任务

二、何为耦合?

耦合是指模块之间相互联系的紧密程度。

2.1、7 种耦合类型及其描述

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

耦合类型描述
非直接耦合没有直接联系,互相不依赖对方
数据耦合借助参数表传递简单数据
标记耦合一个数据结构的一部分借助于模块接口被传递
控制耦合模块间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合与软件以外的环境有关
公共耦合多个模块引用同一个全局数据区
内容耦合一个模块访问另一个模块的内部数据
一个模块不通过正常入口转到另一模块的内部
两个模块有一部分程序代码重叠
一个模块有多个入口

总结

本文给大家介绍了软件设计原则中两个核心概念——内聚、耦合,并对两个概念进行了阐述。同时分别补充了内聚与耦合各自的 7 种类型,便于我们判别其程度,在开发中更好地设计性能优良的软件系统,尽量的减少由于内聚、耦合度差带来后期维护和升级的困扰。

在这里插入图片描述


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库管理工具:如何使用 Navicat Premium 转储(导出)和运行(导入)*.sql 文件?

文章目录前言一、转储(导出)数据库 SQL 文件1.1、选择“转储 SQL 文件”1.2、选择导出文件存放位置1.3、查看转储 SQL 文件界面1.4、查看 SQL 输出文件1.5、查看输出文件详情信息二、运行(导入)数据库 SQL 文件2.1、新建数据库2.2…

JSP 编译原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 编译生成的 Servlet 源文件?

文章目录前言一、JSP 文件编译流程原理二、创建并运行待测试 JSP 页面三、查找 JSP 编译文件输出位置3.1、打开动态项目运行配置3.2、查看 JSP 编译文件输出位置3.3、查看 JSP 编译输出文件四、JSP 编译输出 Servlet 的论证五、访问 JSP 文件的流程总结前言 相信大家都了解&…

MVC 模式/Servlet/JSP 编译原理剖析:Servlet 组件到底属于 MVC 模式的哪一层?

文章目录前言一、回忆什么是 MVC 模式?1.1、Model、View、Controller 组件介绍1.2、明确 View 与 Controller 组件区别二、什么是 Servlet?2.1、Servlet 的组件定义2.2、Servlet 组件处于 Controller 层?三、老师说 Servlet 是 View 层的&…

操作系统原理:进程 PV 操作如何计算?全网最全三种前驱图计算类型总结

文章目录前言一、PV 操作定义1.1、P 操作定义1.2、V 操作定义二、串联进程(单线前驱图)2.1、什么是单线前驱图?2.2、如何计算单线前驱图的 PV?2.2.1、计算前驱节点 PV2.2.2、计算中间节点 PV2.2.3、计算尾节点 PV三、并联进程&…

Spring 容器:三种方式解决 Resource leak: ‘applicationContext‘ is never closed 问题

文章目录前言一、Spring 容器警告产生的场景二、Spring 容器未关闭后果分析2.1、肉眼可见的警告2.2、导致的内存泄漏2.2.1、什么是内存泄漏?2.2.2、如何判断内存泄漏?2.2.3、Java 中的 GC(垃圾回收)2.2.4、Java 中会导致内存泄漏的…

SRA 案例:关于华为开发者联盟基础服务文档内容的改进建议(华为开发者联盟文档深度体验官)

文章目录前言一、文档中心的外链跳转问题1.1、问题描述1.2、造成的问题1.3、改进建议二、图片失真和无法放大查看问题2.1、问题描述2.2、造成的问题2.3、改进建议三、个别 SDK 词汇缺少必要的说明3.1、问题描述3.2、造成的问题3.3、改进建议四、邮箱信息的优化4.1、问题描述4.2…

腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?

文章目录前言一、腾讯位置服务的优势1.1、提供丰富的地图产品1.2、提供行业解决方案1.3、提供其他生态维度的支持1.4、海量的数据基础1.5、丰富的开发文档二、初识腾讯位置服务2.1、用户的注册与登录(附专属邀请码)2.2、开发者信息的完善三、创建服务平台…

毕业生当头一棒?忆本科四年,高校毕业生与就业单位基本要求差多少?工作还是考研?

文章目录前言一、大学本科前两年的生活1.1、庸庸碌碌、中规中矩1.2、收获了爱情二、大三的改变2.1、学会自律2.2、学会自我总结2.3、眼光要具有前瞻性三、毕业答辩3.1、个人设计答辩3.2、团队设计答辩四、南京之行4.1、铭记历史,感恩先辈4.2、加强自我认知与提升五、…

Gitee 答疑:为什么从 Gitee 平台 Pull 代码到 STS/Eclipse 后文件乱码?逐步排查

文章目录前言一、产生乱码场景1.1、错误描述1.2、解决思路二、解决方式2.1、检查 Git 平台上的源码2.2、Git 的运行原理2.3、修改 IDE 的文本编码格式2.4、重新打开目的文件问题解决2.5、仍存在问题看这里(重新拉区合并)总结前言 我们从 Gitee 平台 Pull…

flash 异常修复:QQ 的 flash 图标显示异常?QQ 秀、表情加载异常?一招解决

文章目录前言一、产生错误场景1.1、flash 图标显示异常1.2、解决思路二、安装合适版本的 Flash Player2.1、选择合适版本的 Flash Player2.2、安装 Flash Player三、重启 QQ 客户端四、flash 动画加载异常4.1、动画加载异常原因分析4.2、下载安装 flash 修复工具4.3、使用 Flas…

电脑广告多?Windows 自带恶意软件删除工具还不会使用?有必要安装杀毒软件吗?

文章目录前言一、启动恶意软件删除工具二、扫描类型的选择三、启动软件扫描四、恶意软件删除工具的说明五、对于恶意软件处理的建议总结前言 可能有些小伙伴发现,哎?为什么我的电脑弹窗广告这么多?难不成小视频看多了?电脑中毒了&…

《软件项目管理(第二版)》第 8 章——项目团队与干系人 重点部分总结

文章目录 前言一、简答题二、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 8 章——项目…

《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结

文章目录 前言一、单选题二、填空题三、简答题四、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二…

《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结

文章目录 前言一、单选题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 6…

《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结

文章目录 前言一、填空题二、简答题三、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 5…

《软件项目管理(第二版)》第 1 章——概述 重点部分总结

文章目录 前言一、填空题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 1…

《软件项目管理(第二版)》第 2 章——项目准备和启动 重点部分总结

文章目录 前言一、单选题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 2…

《软件项目管理(第二版)》第 3 章——项目计划 重点部分总结

文章目录 前言一、单选题二、填空题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 3…

《软件项目管理(第二版)》第 4 章——项目估算 重点部分总结

文章目录 前言一、单选题二、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 4 章——项目…

《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结

文章目录 前言一、单选题二、填空题三、判断题四、简答题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整…