软件工程中的耦合类型
耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。
一般模块之间可能的连接方式有七种,构成耦合性的七种类型。它们之间的关系为(耦合性性由强到弱):
内容耦合(Content Coupling)
如果发生下列情形,两个模块之间就发生了内容耦合。- 一个模块直接访问另一个模块的内部数据;
- 一个模块不通过正常入口转到另一模块内部;
- 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
- 一个模块有多个入口。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。控制耦合(Control Coupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。标记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。它是某一数据结构的子结构,而不是简单变量。数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。
-
高内聚低耦合
- 中文名
- 高内聚低耦合
- 范 围
- 计算机科学软件结构
目录
- 1 定义
- 2 概念
- 3 知识
定义
编辑
概念
编辑
知识
编辑
(4) 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。
(5) 通信内聚:指模块内所有处理元素都在同一个数据结构上操作或所有处理功能都通过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据数据或产生相同的数据结构。
(6) 顺序内聚:一个模块中各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常前一个处理元素的输出时后一个处理元素的输入。
软件工程中的耦合类型相关推荐
- java 耦合性_软件工程中的耦合性和解耦合性是什么意思?
我也来通俗地讲一讲,说的不好请勿喷. 简单概括:耦合就是程序中的一部分跟其他部分之间的关系.解耦合就是把必要的耦合理顺,同时尽量减少不必要的耦合(这一句其实就是高内聚低耦合的通俗解释). 如何看待耦合 ...
- 软件工程中的所有内聚类型【吐血整理,附带排名!】
模块间的耦合和模块的内聚是度量模块独立性的两个准则.内聚是模块功能强度的度量,即模块内部各个元素彼此结合的紧密程度.一个模块内部各元素之间的紧密程度越高,则其内聚性越高,模块独立性越好. 一般来讲,聚 ...
- 浅析软件工程中的一些常见设计原则
老子说:有道无术,术尚可求也.有术无道,止于术.如果说设计模式是"术",那么设计原则就是"道".今天,我们一起来聊聊软件工程中一些常用的设计原则. DRY 原则 ...
- 软件工程中的设计原理与设计模式
软件工程课程 https://gitee.com/mengning997/se中介绍了设计原理与设计模式,本博客聚焦于设计模式,参考此课程调研整理了设计模式并分析了适用场景. 设计原理 design ...
- c 语言 if 多变量相等_计算机界 TOP 3 难题:“相等”是软件工程中许多重大问题的根源...
有一个笑话说,计算机科学界有两大难题:一是缓存失效问题,二是命名问题.但我认为还有第三个更难的问题:相等问题.你没看错,等号"="看似简单,但等号的使用和误用,是软件工程中许多重大 ...
- 计算机界 TOP 3 难题:“相等”是软件工程中许多重大问题的根源!
有一个笑话说,计算机科学界有两大难题:一是缓存失效问题,二是命名问题.但我认为还有第三个更难的问题:相等问题.你没看错,等号"="看似简单,但等号的使用和误用,是软件工程中许多重大 ...
- 复杂、繁杂、庞杂:图解七种代码耦合类型
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析.实际应用.架构思维.职场分享.产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习 1 复杂.繁杂.庞杂 ...
- 软件工程中众包应用的综述
A Survey of the Use of Crowdsourcing in Software Engineering 作者 摘要 1 介绍 2 背景 2.1 众包 2.2 众包软件工程 2.2.1 ...
- 基于在软件工程中对贝叶斯网络的循证决策
基于在软件工程中对贝叶斯网络的循证决策 摘要:在软件工程中的推荐系统应该设计成集成依据并成为从业人员的经验.贝叶斯网络为以证据为基础的决策提供了自然统计框架,通过结合现有证据的综合概要与相关的不确定性 ...
最新文章
- 【OpenCV】cv::VideoCapture 多线程测试
- 使用Flow检查React,Redux和React-Redux的全面指南
- 矩阵一维卷积c++_深度神经网络卷积层计算加速与优化
- IDEA+scala+spark程序开发流程
- c语言中赋予从2开始的偶数,2013年计算机二级C语言上机试题三十二及答案
- 目录同步 linux,Linux系统目录实时同步
- 那些年困扰我们的Linux 的蠕虫、病毒和木马
- Eclipse的JavaWeb项目导入到IntelliJ IDEA 并且配置Tomcat
- Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template
- 34(数组). 在排序数组中查找元素的第一个和最后一个位置
- C# ZipArchive 文件末端错误 的解决方案
- mq消息队列到底是什么
- 宇枫资本投资理财的几大定律
- 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学专业排名第30(2020年USNEWS美国排名)...
- 高科技还是“智商税”?你怎么选
- Python 中的多进程(进程之间的通信)
- QQ欢乐斗地主心得体会 (三):高倍场攻略
- 利用Lazy简化单例模式的编写
- Android TextWatcher 避免死循环
- 【软件测试】接口测试工具Charles之map remote setting