耦合性(Coupling,dependency,或称耦合力耦合度)是一种软件度量,是指一程序中,模块及模块之间信息或参数依赖的程度。

内聚性是一个和耦合性相对的概念,一般而言低耦合性代表高内聚性,反之亦然。耦合性和内聚性都是由提出结构化设计概念的赖瑞·康斯坦丁所提出。低耦合性是结构良好程序的特性,低耦合性程序的可读性及可维护性会比较好。

耦合性可以是低耦合性(或称为松散耦合),也可以是高耦合性(或称为紧密耦合)。以下列出一些耦合性的分类,从高到低依序排列(常考的已经加粗):

  • 内容耦合(content coupling,耦合度最高)也称为病态耦合(pathological coupling)当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。

  • 公共耦合/共享耦合(common coupling)也称为全局耦合(global coupling.)指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。

  • 外部耦合(external coupling)发生在二个模块共享一个外加的数据格式、通信协议或是设备界面,基本上和模块和外部工具及设备的沟通有关。

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

  • 标记耦合/特征耦合(stamp coupling)也称为数据结构耦合,是指几个模块共享一个复杂的数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;

  • 数据耦合(data coupling)是指模块借由传入值共享数据,每一个数据都是最基本的数据,而且只分享这些数据(例如传递一个整数给计算平方根的函数)。

  • 消息耦合(message coupling,是无耦合之外,耦合度最低的耦合)可以借由以下二个方式达成:状态的去中心化(例如在对象中),组件间利用传入值或消息传递 (计算器科学)来通信。

  • 无直接耦合:模块完全不和其他模块交换信息。

耦合性和内聚性二个名词常一起出现,用来表示一个理想模块需要有的特点,也就是低耦合性及高内聚性。耦合性着重于不同模块之间的相依性,而内聚性着重于一模块中不同功能之间的关系性。低内聚性表示一个模块中的各机能之间没什么关系,当模块扩展时常常会出现问题。

以下列出一些内聚性的分类,从高到低依序排列(常考的已经加粗):

  • 功能内聚:模块完成单一的功能,各部分在此目标下协同工作,是完成这一功能不可缺少的组成部分。

  • 顺序内聚:一个模块的处理元素是相关的且必须顺序执行。

  • 通信内聚:一个模块的处理元素集中在一个数据结构的区域上。

  • 过程内聚:模块内的处理元素是相关的,而且必须按特定的次序执行。

  • 时间内聚:一个模块内各任务的执行与时间有关,所有任务必须在同一时间段内进行。

  • 逻辑内聚:一个模块完成逻辑上相关的一组任务。

  • 偶然内聚:一个模块完成一组任务, 这些任务之间没有联系或联系很松散。

程序的耦合性和内聚性相关推荐

  1. 程序的耦合性与内聚性的概念 以及 “高内聚,低耦合”

    一.耦合性 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传 ...

  2. 什么是耦合性和内聚性?

    前言 如果你涉及软件开发,可能会经常听到"高内聚,低耦合"这种概念型词语.我在第一次接触这种词语时,也抱有很大的疑问,但我发现百度上大部分都是高大上的词汇解释. 仔细通读这篇文章, ...

  3. 干货!C++程序的耦合性设计

    1.什么是耦合? 耦合其实就是程序之间的相关性. 程序之间绝对没有相关性是不可能的,否则也不可能在一个程序中启动,如下图: 这是一个Linux中socket TCP编程的程序流程图,在图中的TCP服务 ...

  4. 什么是程序的耦合性?

    程序的耦合性指的就是程序之间的依赖关系,包括类之间的依赖关系.方法之间的依赖关系,而解耦就是降低程序之间的依赖关系.我们在实际开发中应该做到编译期不依赖,运行时才依赖 类之间解耦的思路: 使用反射来创 ...

  5. 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解!

    前言 如果你涉及软件开发,可能会经常听到"高内聚,低耦合"这种概念型词语.我在第一次接触这种词语时,也抱有很大的疑问,但我发现百度上大部分都是高大上的词汇解释. 仔细通读这篇文章, ...

  6. 软件设计之耦合性与内聚性的区别

    耦合性 耦合性也叫块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量. 模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的 ...

  7. 【架构】软件代码的耦合性和内聚性,以几个简单小例子说明

    1. 起因 这篇文章应该算作前两篇文章的后续思考. 在前两篇文章中,考虑到了分层的方法,参考了别人的代码架构. [架构]工程代码结构(附带NXP.ST官方demo) [架构]嵌入式软件架构设计 模块化 ...

  8. 模块独立(耦合性与内聚性)

    模块独立性指模块不依赖其他模块独立完成功能的程度.模块独立程度的两个定性标准度量是耦合和内聚. 耦合性衡量不同模块彼此之间相互依赖(连接)的紧密程度,耦合要低,即每个模块与其他模块的关系要简单:内聚性 ...

  9. java中接口降低耦合性_如何降低一个程序的耦合性

    耦合性是程序结构中各个模块之间相互关联的度量.它取决于各个模块之间接口的复杂程度.调用模块的方式以及哪些信息通过接口. 一般模块之间可能的连接方式有七种,构成耦合性的七种类型.它们之间的关系为(由弱到 ...

最新文章

  1. 【转载】Git 常用命令大全
  2. AAuto如何设置combobox
  3. 上传Jar到本地Maven仓库
  4. cocos2d-x环境配置和常见问题
  5. tenginx配置负载均衡
  6. MapReduce基础开发之十一DistributedCache使用
  7. Caffe实战二(手写体识别例程:CPU、GPU、cuDNN速度对比)
  8. 神经网络架构搜索(NAS)综述 | 附AutoML资料推荐
  9. 马斯克宣布:半年后发布定制AI芯片,特斯拉车主免费升级Hardware 3
  10. 扫地机自动回充揭秘之小米/iRobot/云鲸/360
  11. 浅析局域网与广域网中数据传输
  12. extern ,extern C 与 __cplusplus
  13. 计算机信息技术行业代码,行业代码 是什么呢
  14. 容错性低是什么意思_容错率高是什么意思(容错率高还是低比较好)
  15. InsetGAN :基于多个stylegan2-ada生成器拼接的全身人像生成(2203.InsetGAN for Full-Body Image Generation)
  16. linux安装命令自动运行y,在Linux上安装Gnome Tweak以在Gnome Shell上自动启动程序
  17. PE制作-001.UEFI和Legacy双启动U盘文件结构
  18. 用计算机亩换算成平方,亩换算平方(平方米换算亩计算器)
  19. 2022国庆头像制作iAPP安卓源码+附APP成品
  20. 深度学习——神经网络的学习

热门文章

  1. 十进制转十六进制C语言实现
  2. 巨杉数据库SequoiaDB在Java开发中的增删改查CURD
  3. 《软件创新——冲破高技术营造的牢笼》好书推荐
  4. The Chinese Postman Problem HIT - 2739(有向图中国邮路问题)
  5. 【Spring】Bean生命周期源码分析 总结
  6. 项羽为什么会输给刘邦
  7. Hadoop生态系统基本介绍
  8. 安装gromacs报错记录
  9. readdir的用法
  10. Discuz论坛中新增文件类型图标的方法