耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

模块间的耦合度强烈影响着系统的可理解性、可测试性、可靠性和可维护性。

  • 耦合程度最低:两个模块每个都能独立工作,而不需要系统对其他模块有更多了解。
  • 数据耦合(低耦合):两个模块之间通过参数交换信息
  • 控制耦合(中度耦合):传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)。可以适当分解后用数据耦合替代
  • 特征耦合:被调用的模块可使用的数据多于它确实需要的数据
  • 公共环境耦合:两个或多个模块通过公共环境相互作用

公共环境耦合只有两个模块时有以下两种情况
    1.一个模块放数据,一个模块取数据。这是数据耦合的一个形式,是比较松散的耦合
    2.两个模块都往公共环境里放取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间
两个模块共享数据很多,通过传参数不方便,就利用公共环境耦合

  • 内容耦合(最高程度的耦合):下列情况有一个,就发生了内容耦合
  • 一个模块访问另一个模块的内部数据
  • 一个模块不能通过正常入口而转到另一个模块内部
  • 两个模块有一部分程序代码重叠(只可能出现在汇编程序中)
  • 一个模块有多个入口(这意味着一个模块有几种功能)

总结,耦合是影响软件复杂程度的重要因素。应该采取下述设计原则
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合

什么是内聚https://blog.csdn.net/weixin_57604284/article/details/121299587?spm=1001.2014.3001.5501

耦合是什么 耦合有哪些种类相关推荐

  1. 外部轴耦合_Rototest轴耦合式底盘测功机

    Rototest轴耦合式底盘测功机(轮毂式)可模拟整车实际行驶的道路负载,同步采集驱动轮扭矩.转速等参数,分析整车动力性能.同时也可配备其他设备进行经济性.排放性.能量管理和续驶里程等试验. 系统组成 ...

  2. 从高耦合到低耦合到底有多远?

    一切都是拥抱变化,反过来说,如果没有变化或者需求很稳定,那么一切就是过度设计.所以,一切都要看情况,回到了马克思主义的辩证学.呵呵. 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉 ...

  3. 直流耦合and交流耦合

    从示波器的应用来说: 交流耦合就是通过隔直电容耦合,去掉了直流分量 直流耦合就是直通,交流直流一起过,并不是去掉了交流分量. 比如:在3V的直流电平上叠加一个1Vpp的弦波,如果用直流耦合,看到的是以 ...

  4. 频率计的交流耦合和直流耦合的区别_示波器DC/AC耦合设置及影响

    点击上方"电磁兼容检测",马上关注 示波器DC/AC耦合设置及影响 摘要:介绍了示波器的DC/AC耦合设置及其影响. 耦合指把电信号从一条电路连接到另一条电路使用的方法.在这种情况 ...

  5. 【035期】面试官问:什么是耦合?解耦合的方法有哪几种?

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  6. 编程中遇见的“耦合”“耦合度”“低耦合”是什么意思

    怎么说呢,一个人要开发大型软件是很没效率的,所以就要有很多人共同开发,懂吧 那么很多人共同开发,你不能所有人都开发一个模块,一个功能,一个文件对吧,是不是要有个分工呢?比如说做一个程序,有人开发数据库 ...

  7. 通信内聚c语言例子,功能内聚、顺序内聚、数据耦合、控制耦合例子

    功能内聚.顺序内聚.数据耦合.控制耦合例子(C语言描述) 1.举出功能内聚.顺序内聚.数据耦合.控制耦合各一例(用C语言).(1)功能内聚 /* *功能内聚性例子 *根据出生年份得出年龄 */#inc ...

  8. java 耦合性_软件工程中的耦合性和解耦合性是什么意思?

    我也来通俗地讲一讲,说的不好请勿喷. 简单概括:耦合就是程序中的一部分跟其他部分之间的关系.解耦合就是把必要的耦合理顺,同时尽量减少不必要的耦合(这一句其实就是高内聚低耦合的通俗解释). 如何看待耦合 ...

  9. 微环谐振器的临界耦合,欠耦合,过耦合区分:

    请注意,在Φ=0这种情况下,开共振传输降为零.在这种情况下,内部损耗等于耦合损耗 r=τ,谐振器被称为临界耦合.r>τ 谐振器被认为是欠耦合的,而对于谐振器r<τ被认为是过耦合的. 下面仅 ...

  10. 理解SOA的松散耦合与紧密耦合

    SOA的一项关键特性就是使用松散耦合连接.传统上,应用程序与应用程序之间或者应用程序与服务之间的连接是紧耦合的,如用CORBA(公共对象请求代理体系结构)那样.此差异是很重要的. < XML S ...

最新文章

  1. 数据验证html,JavaScript 表单数据验证
  2. iOS开发 关于启动页和停留时间的设置
  3. javascript内置顶层函数
  4. 504 Gateway Time-out错误的解决方法
  5. 数字信号处理学习笔记(三)|时域离散系统的网络结构
  6. ThreadLocal基本使用和内存泄漏分析
  7. 腾讯V265编码器:给用户以完备的265体验
  8. Java中的复合设计模式
  9. Microsoft SharePoint Server 2010 的新增功能
  10. oracle创建表(并且实现ID自增)
  11. pytorch---tensor.view()
  12. MySQL优化三之MySQL配置
  13. 物联网感知-光纤光栅传感器技术
  14. 创业十年的感悟,创业者首先要让自己活下去
  15. java环境安装1359错误_iserver java api接口频发错误
  16. python如何与access配合使用_使用Python对Access读写操作方法详解
  17. 矩阵分析与应用(二)——矩阵微分
  18. Win10开始菜单打不开怎么办?
  19. word图文混排复制到CuteEditor图片不显示
  20. centos下安装anaconda、scikit-learn、opencv、pytorch 和torchvision(文件在Windows下载好linux版本,使用xshll传到linux)

热门文章

  1. github 443问题
  2. matlab中subs赋值范围,[转载]Matlab的accumarray(subs, val) 解释
  3. 基于C#的AE二次开发之GP工具的使用心得
  4. 教你做Android逆向
  5. html css动漫素材,66种特效的CSS3动画库animate.css
  6. 如何用WikiExtractor提取维基百科词汇
  7. POI 设置某列为文本格式 (亲测可用!!)
  8. 第二篇:Cydia添加源和安装软件
  9. Linux 内核工作队列之work_struct 学习总结
  10. 泰坦尼克号电影 完整字幕 中英文对比 完整版