软件工程中的耦合和内聚

耦合

在软件工程中,耦合是一个重要的概念,用于描述模块或组件之间的相互依赖程度。

从非直接耦合到内容耦合的耦合性依次升高,所以非直接耦合是我们最想见到的结果,内容耦合是我们最不想见到的结果。

  • 非直接耦合
  • 数据耦合
  • 标记耦合
  • 控制耦合
  • 特征耦合
  • 公共耦合
  • 内容耦合

非直接耦合

两个模块之间没有直接关系, 它们之间的联系完全是通过主模块的控制和调用实现的,这种被称为非直接耦合

数据耦合

如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。

标记耦合

如果一组模块通过数据结构本身传递,则称这种耦合为标记耦合。(和数据耦合类似,但是它传递的是一个对象,或一个数据结构,而数据耦合传递的只是数值)

控制耦合

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

特征耦合

特征耦合是指两个都与同一个数据结构有关的模块发生的耦合。

公共耦合

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

内容耦合

如果发生下列情形,两个模块之间就发生了内容耦合。

  1. 一个模块直接访问另一个模块的内部数据;
  2. 一个模块不通过正常入口转到另一模块内部;
  3. 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
  4. 一个模块有多个入口。

内聚

功能内聚是我们需要的,偶然内聚是我们最不希望看到的。

  • 偶然内聚
  • 逻辑内聚
  • 时间内聚
  • 过程内聚
  • 通信内聚
  • 顺序内聚
  • 功能内聚

偶然内聚

指一个模块内的各处理元素之间没有任何联系。

逻辑内聚

指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

时间内聚

把需要同时执行的动作组合在一起形成的模块。

过程内聚

指一个模块完成多个任务,这些任务必须按指定的次序执行。

通信内聚

指模块内的所有处理元素都在同一数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。

顺序内聚

指一个模块中的各个处理元素都密切相关于同一各功能且必须顺序执行,前一个功能元素的输出就是下一个功能的输入。

功能内聚

指模块内的所有元素共同作用完成一个功能,缺一不可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源数据集分享———猫脸码客

猫脸码客作为一个专注于开源数据集分享的公众号,致力于为广大用户提供丰富、优质的数据资源。我们精心筛选和整理各类开源数据集,涵盖机器学习、深度学习、自然语言处理等多个领域,以满足不同用户的需求。 (https://img-blog.csdnimg.cn/d98…

【Python数据库】Redis

文章目录 [toc]数据插入数据查询数据更新数据删除查询存在的所有key 个人主页:丷从心 系列专栏:Python数据库 学习指南:Python学习指南 数据插入 from redis import Redisdef insert_data():redis_cli Redis(hostlocalhost, port6379, db…

【Java--数据结构】链表经典OJ题详解(上)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 谈谈头插、头删、尾插、头插的时间复杂度 反转一个单链表 链表的中间结点 返回倒数第k个结点 合并两个链表 谈谈头插、头删、尾插、头插的时间复杂度 头插和头删的时…

MySQL尾部空格处理与哪些设置有关? 字符集PAD SPACE与NO PAD属性的区别、MySQL字段尾部有空格为什么也能查询出来?

文章目录 一、问题背景二、字符集PAD_ATTRIBUTE属性(补齐属性)2.2、PAD SPACE与NO PAD的具体意义 三、CHAR类型尾部空格的处理四、其他问题4.1、在PAD SPACE属性时如何实现精准查询 五、总结 以下内容基于MySQL8.0进行讲解 一、问题背景 一次查询中发现…

CTF之变量1

拿到题目发现是一个php代码,意思是用get方式获取args参数。 至于下面那个正则表达式怎么绕过暂且不知,但是题目最上面告诉我们lag In the variable ! (意思是flag就在变量中)。 那我们就传入全局变量globals(&#xf…

2024深圳杯(东北三省)数学建模C题完整论文讲解(含完整python代码及所有残骸音爆位置求解结果)

大家好呀,从发布赛题一直到现在,总算完成了2024深圳杯(东北三省数学建模联赛)A题多个火箭残骸的准确定位完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊…

Java苍穹外卖01-开发环境搭建(Git、nginx)-Swagger-员工管理

一、开发环境搭建 1.项目架构 2.Git版本管理 在IDEA中可以一键搭建并commit,当Git远程仓库搭建后就可以push 3.前后端联调 Builder注解: 加了注解后就可以通过这样的方式创建对象 接收传入的是dto对象,传出去的对象为vo对象 4.nginx反向…

Java操作 elasticsearch 8.1,如何实现索引的重建?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代,网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种,它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议,首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…

2000-2022年各区县农产品产量数据

2000-2022年县域农产品产量数据 1、时间:2000-2022年 2、指标:统计年度、县域名称、所属地级市、所属省份、地区编码ID、县域代码、产品种类或名称、单位、产量、 3、来源:统计局、县域统计年鉴、各区县政府官网 4、范围:具体…

网络编程——TCP的特性之自动重传/流量控制/拥塞控制,一篇说清楚

文章目录 1. ARQ自动重传协议1.1 停止等待ARQ1.2 连续ARQ1.3 总结 2. TCP的流量控制3. TCP的拥塞控制3.1 慢开始算法3.2 拥塞避免算法3.3 快重传算法3.4 快恢复算法 1. ARQ自动重传协议 自动重传请求(Automatic Repeat-reQuest),通过使用确认…

创新与乐趣的融合 —— 探索我们独家录音变音芯片在学舌玩具领域的应用

一:概述 学舌玩具,又称作复读玩具或模仿玩具,是一类设计用来录制人声并重复播放的互动式玩具。这类玩具以其能够模仿人类语音的特性而受到小朋友和宠物主人的喜爱。这些玩具通常具有以下特点和功能: 1. 录音和播放功能&#xff…

【C++航海王:追寻罗杰的编程之路】C++11(二)

目录 C11(上) 1 -> STL中的一些变化 2 -> 右值引用和移动语义 2.1 -> 左值引用和右值引用 2.2 -> 左值引用与右值引用比较 2.3 -> 右值引用使用场景与意义 2.4 -> 右值引用引用左值及其更深入的使用场景分析 2.5 -> 完美转发 C11(上) 1 -> STL…

4 -25

1 100个英语单词两篇六级阅读 2 cf补题; 3 仿b站项目看源码 debug分析业务。 上了一天课,晚上去健身。 物理备课,周六去上课腻。 五一回来毛泽东思想期末考试,概率论期中考试。

轻松搭建MySQL 8.0:Ubuntu上的完美指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 轻松搭建MySQL 8.0:Ubuntu上的完美指南 前言脚本编写脚本实现部署过程参数成功页面 彩蛋坏蛋解决方法 前言 在数字化时代,数据就像是我们的宝藏,而MySQL数据库就是…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Text Edit的使用及说明 文章编号&#xff…

【题解】牛客挑战赛 71 - A 和的期望

原题链接 https://ac.nowcoder.com/acm/problem/264714 思路分析 快速幂求逆元 费马小定理: a MOD − 1 ≡ 1 ( m o d M O D ) a^{\text{MOD}-1} \equiv 1 \pmod{MOD} aMOD−1≡1(modMOD),可以转换为 a ⋅ a MOD − 2 ≡ 1 ( m o d M O D ) ① a \cd…

4.24总结

对部分代码进行了修改,将一些代码封装成方法,实现了头像功能,通过FileInputStream将本地的图片写入,再通过FileOutputStream拷贝到服务端的文件夹中,并将服务端的文件路径存入数据库中

Linear Blend Skinning (LBS)线性混合蒙皮

LBS是CG的基础概念之一。 Linear Blend Skinning: linearly blend the results of the vertex transformed rigidly with each bone. LBS:线性地混合顶点根据每个骨骼的刚性变形结果。 这个场景应用在哪里呢? 假如我们重建好一个人体,现在用…

水位监测识别摄像机

水位监测识别摄像机是一种利用人工智能技术进行水位监测的智能设备,其作用是监测水体的水位变化并识别潜在的水灾危险,以提供准确数据和及时预警,帮助保护人民生命财产安全。这种摄像机通过高清摄像头实时捕捉水体的图像,然后利用…