【软件工程】耦合

耦合性指软件结构中模块相互紧密连接的紧密程度。

耦合性由高到低分别为:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。

1.内容耦合:

一个模块直接使用或修改另一个模块的内部数据或逻辑。

例如:一个函数直接修改另一个函数内部的变量或代码。

2.公共耦合:

若干模块访问一个公共的数据环境(全局数据结构、共享的通信区、内存的公共覆盖区等),耦合的复杂程度随耦合模块的数量的增加而显著增加。

例如:多个功能共享同一个配置文件。

3.外部耦合:

一组模块都访问同一公共变量(这里特指基本数据类型,而不是那种复杂的数据结构),而不是通过参数表达传递该全局变量的信息。

例如:多个模块都直接访问同一个外部数据库。

4.控制耦合:

一个模块传递信息给另一个模块,用来控制后者的逻辑流程(如决定分支选择)。

例如 :一个函数接收一个布尔参数,该参数决定函数是计算最大值还是最小值。

5.标记耦合:

当两个模块之间传递的是数据结构,比如高级语言的数组名、记录名、文件名等,这些名字就好像是标记一样,但实际上传递的是这个数据结构的地址。
需要模块之间共享这些标记或标识符,并且依赖于这些标记或标识符的具体实现。因此,标记耦合的模块之间耦合度较高,需要共享并理解这些标记的含义和作用。

例如:一个函数接收一个员工对象,但只用到了员工的姓名和部门信息,而不是整个员工对象的所有数据。

6.数据耦合:

数据耦合是指两个模块之间通过参数传递数据来进行通信。这种耦合方式只需要模块之间共享数据,但并不依赖于数据的具体实现。强调数据的值,而不是数据的地址或结构。
因此,数据耦合的模块之间耦合度较低,因为它们只需要理解数据的含义和作用,而不需要关心数据的具体实现。这种耦合方式使得模块更加独立,易于重用和修改。

例如:一个模块计算税后收入,它接收一个表示税前收入的数字,然后返回税后收入的计算结果。

标记耦合和数据耦合的主要区别在于模块之间的通信方式不同,有些类似于引用传递和值传递。

7.非直接耦合:

两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。这种耦合程度最弱,模块的独立性最高。

例如:两个独立的计算器应用,一个用于计算税收,另一个用于计算贷款利息,它们在功能上完全独立。

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

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

相关文章

关于C++友元函数的优缺点和应用场景!

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 友元函数的相关内容! 关于…

笔记本怎么开启TPM2.0_笔记本开启TPM2.0教程(不同笔记本开启tpm2.0方法)

在win11最低要求是提示,电脑必须满足 TPM 2.0,并开需要开启TPM 才能正常安装windows11系统,有很多笔记本的用户问我,笔记本怎么开启tpm功能呢?下面小编就给大家详细介绍一下笔记本开启tpm功能的方法。 如何确认你笔记本…

Fastjson反序列化漏洞部署复现1.2.24版本反序列RCE笔记

环境部署 docker容器地址:https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.24-rce 启动docker环境 docker容器每次一启动就报错 根据docker log [容器id] 查看报错日志发现有如下报错 library initialization failed - unable to allocate file desc…

PostgreSQL pg-xact(clog)目录文件缺失处理

一、 背景 前些天晚上突然收到业务反馈,查询DB中的一个表报错 Could not open file "pg-xact/005E": No such file or directory. 两眼一黑难道是文件损坏了...登录查看DB日志,还好没有其他报错,业务也反馈只有这一个表在从库查询报…

【Python】项目结构

【Python】项目结构 前言前置知识Python 的基本项目结构int main() 与 def main() 的区别举例:基于 KNN 的 OpenCV 数字识别的项目结构 前言 本文总结了 Python 项目结构的知识,规范项目结构能使得项目开发过程高效流畅,提升代码可读性、团队…

arcgis pro 学习笔记

二维三维集合在一起,与arcgis不同 一、首次使用,几个基本设置 1.选项——常规里面设置自动保存时间 2.新建工程文件,会自动加载地图,可以在选项里面设置为无,以提高启动效率。 3.设置缓存位置,可勾选每次…

OpenCV视觉分析之目标跟踪(11)计算两个图像之间的最佳变换矩阵函数findTransformECC的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据 ECC 标准 78找到两幅图像之间的几何变换(warp)。 该函数根据 ECC 标准 ([78]) 估计最优变换(warpMatri…

Redis 典型应用 - 缓存(cache)

一、什么是缓存 缓存(cache)是计算机中的⼀个经典的概念.在很多场景中都会涉及到. 核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅,⽅便随时读取. 这⾥所说的"触⼿可及"是个相对的概念. 对于硬件的访问速度来说,通常情况下: CPU寄存器>内存>…

DevCheck Pro手机硬件检测工具v5.33

前言 DevCheck Pro是一款手机硬件和操作系统信息检测查看工具,该软件的功能非常强大,为用户提供了系统、硬件、应用程序、相机、网络、电池等一系列信息查看功能 安装环境 [名称]:DevCheckPro [版本]:5.33 [大小]&a…

教程:FFmpeg结合GPU实现720p至4K视频转换

将一个 720p 的视频放大编码到 4K,这样的视频处理在很多业务场景中都会用到。很多视频社交、短视频、视频点播等应用,都会需要通过服务器来处理大量的视频编辑需求。 本文我们会探讨一下做这样的视频处理,最低的 GPU 指标应该是多少。利用开源…

鸿蒙进阶篇-网格布局 Grid/GridItem(二)

hello大家好,这里是鸿蒙开天组,今天让我们来继续学习鸿蒙进阶篇-网格布局 Grid/GridItem,上一篇博文我们已经学习了固定行列、合并行列和设置滚动,这一篇我们将继续学习Grid的用法,实现翻页滚动、自定义滚动条样式&…

React教程(详细版)

React教程(详细版) 1,简介 1.1 概念 react是一个渲染html界面的一个js库,类似于vue,但是更加灵活,写法也比较像原生js,之前我们写出一个完成的是分为html,js,css&…

自然语言处理在客户服务中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 引言 自然语言处理概述 定义…

2节串联锂电池充电管理芯片,有5V升压,9-12V降压,快充升降压

从上面第一句话我们知道了2节串联锂电池的供电电压范围是:6V-8.4V,锂电池充电管理是随着电池电压提高而增加充电电压,直到充满电压8.4V。如2节串联锂电池电压是6V时,充电管理芯片会控制充电电压如7V, 2节串联锂电池的电…

服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境: 一台EVA某型号控制器EVA扩展柜FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。 服务器存储数据恢复过程: 1、将所有磁盘做好标记后从扩展柜中取出。硬…

加入GitHub Spark需要申请

目录 加入GitHub Spark需要申请 GitHub Spark 一、产品定位与特点 二、核心组件与功能 三、支持的AI模型 四、应用场景与示例 五、未来展望 六、申请体验 加入GitHub Spark需要申请 GitHub Spark 是微软旗下GitHub在2024年10月30日的GitHub Universe大会上推出的一款革…

Qt中 QWidget 和 QMainWindow 区别

QWidget 用来构建简单窗口 QMainWindow 用来构建更复杂的窗口,QMainWindow 继承自QWidget,在QWidget 的基础上提供了菜单栏、工具栏、状态栏等功能 菜单栏(QMenuBar)工具栏(QToolBar)状态栏(Q…

【三维重建】Semantic Gaussians:开放词汇的3DGS场景理解

文章目录 摘要一、引言二、主要方法1.3D Gaussian Splatting2.其他方法2.1 Gaussian Grouping(ECCV 2024)2.2 GARField 3. 2D Versatile 投影4. 3D Semantic Network4. 推理 四、实验1. 实验设置2.定量结果 论文:https://arxiv.org/pdf/2403.…

centos7的maven配置

首先进入conf配置文件夹下的setting.xml 要改两个地方 第一&#xff1a;设置镜像源 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>c…

思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉哦“ (**)

Linux vi/vim | 菜鸟教程 https://zhuanlan.zhihu.com/p/602675406 Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客 思考 1. 记忆公式&#xff1a; 按键操作的 7 字真言 1&#xff1a; "鱼爱返 说 温泉哦" v i Esc : wq ! ----------- 一般的简单…