软件工程中的耦合和内聚

ops/2024/11/14 21:51:43/

耦合

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

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

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

非直接耦合

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

数据耦合

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

标记耦合

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

控制耦合

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

特征耦合

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

公共耦合

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

内容耦合

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

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

内聚

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

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

偶然内聚

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

逻辑内聚

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

时间内聚

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

过程内聚

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

通信内聚

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

顺序内聚

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

功能内聚

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


http://www.ppmy.cn/ops/17394.html

相关文章

web server apache tomcat11-11-Jasper 2 JSP Engine

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

HarmonyOS 实战开发-使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候,首先分析一下大概的实现结构以及开发思路,方便我们少走弯路,也可以使组件更加容易拓展,维护性更强。然后我会把功能逐个拆开来讲,这样大家才能学习到更详细的内容。下面简单阐述…

美国服务器vs香港服务器,哪个网站部署打开更快一些?

网站打开速度受多种因素影响,包括服务器地理位置、网络质量、带宽等。用户距离服务器越近,访问速度越快。对于中国大陆用户而言,香港的服务器可能会提供更快的网站访问体验,因为香港距离大陆较近,且网络连接通常较好。…

科普:嵌入式代码软件在环(SiL)测试的可靠性

关键词:嵌入式系统、软件在环(SiL)、测试、生命周期 01.简介 当前,嵌入式系统开发的大趋势为通过软件实现大量的硬件功能,这导致软件的复杂程度显著上升——代码开发成本和风险也成倍增加。复用已有系统中的软件组件…

C#自定义窗体更换皮肤的方法:创建特殊窗体

目录 1.窗体更换皮肤 2.实例 (1)图片资源管理器Resources.Designer.cs设计 (2)Form1.Designer.cs设计 (3)Form1.cs设计 (4) 生成效果 (5)一个遗憾 1.窗…

MyBatis-动态sql常见使用

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决 拼接SQL语句字符串时的痛点问题。 1. if if标签可通过test属性的表达式进行判断:若表达式的结果为true,则标签中的内容会执行;反之标…

acwing算法提高之图论--有向图的强连通分量

目录 1 介绍2 训练 1 介绍 本博客介绍有向图的强连通分量的题目。 连通分量:是针对有向图的一个概念。对于分量中任意两个结点a、b,必然可以从a走到b,且从b走到a。 强连通分量:是针对有向图的一个概念。极大强连通分量&#xff…

Git下载安装

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…