模块之间的耦合与内聚的七种类型

2023-11-06

前言

​ 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。在软件设计阶段,划分模块的原则是一个模块的作用范围应该在其控制范围之内。

按功能划分的四种模块类型

​ 通常,可以按照在软件系统中的功能将模块分为四种类型。

传入模块:取得数据或输入数据,经过某些处理,再将其传送给其他模块.

传出模块:输出数据,在输出 之前可能进行某些处理,数据可能被输出到系统的外部,或者会输出到其他模块进行进一步处理。

变换模块:从上级调用模块得到数据,进行特定的处理,转换成其他形式,在将加工结果返回给调用模块。

协调模块:一般不对数据进行加工,主要是通过调用、协调和管理其他模块来完成特定的功能。

七种耦合

耦合是模块之间的相对独立性的度量,模块之间的连接越紧密, 联系越多,耦合性就越高,而其模块独立性就越弱。一般来说,模块之间的耦合有7种类型,根据耦合性从低到高为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。

1.非直接耦合

两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这种耦合的模块独立性最强。

2.数据耦合

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

3.标记耦合

如果一组模块通过数据结构本身传递,则称这种耦合为标记耦合,这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址。

4.控制耦合

如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

5.外部耦合

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

6.公共耦合

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

7.内容耦合

发生下列情形,那么两个模块之间就发生了内容耦合:

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

七种内聚

1.偶然(巧合)内聚

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

2.逻辑内聚

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

3.时间内聚

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

4.通信内聚

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

5.顺序内聚

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

6.过程内聚

如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称为过程内聚。

过程内聚与顺序内聚的区别是:

顺序内聚中是数据流从一个处理单元流到另一个处理单元。

过程内聚是控制流从一个动作流向另一个动作。

7.功能内聚

功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块之间的耦合与内聚的七种类型 的相关文章

  • (大集合)可供选择的软件开源协议的罗列

    Public License List 罗列各种开源代码的公共协议以供选择 具体每一个协议的含义可以另外找教程文章或看官网原文 这里解决 都有什么 的问题 List of licenses that can be chosen 注 在 Gi
  • 探索精彩世界,畅享短视频直播平台

    在这个充满创意和多样化的数字时代 我们为您带来了一款引人入胜的短视频直播平台 让您尽情畅享全新的娱乐体验 我们的平台凭借丰富多样的功能和吸引人的特色 为用户呈现了一个无限可能的娱乐世界 无论您是寻找灵感 追逐潮流还是寻求纯粹的娱乐 我们的平
  • 写论文和做项目中遇到的问题及其解决办法

    相比Microsoft Office Word 我更推荐用WPS Office Word编写论文 感觉后者用起来更轻松 1 利用Word自带的的标题样式快速给文档设置一到三级标题 2 Word文档中具有编辑器自带标题样式的文字前面都有小黑方
  • Java简易图书管理系统开发全过程 (2)

    今天我们继续来开发这个项目 Java简易图书管理系统开发全过程 2 代码层级规划 正式开干 代码层级规划 根据代码的功能 我们需要提前把代码的包等结构确定下来 由于这个项目是小型的 所以可以分为以下几部分 前端窗体 后端逻辑 全局变量存放类
  • VMware导入虚拟系统

    导入虚拟系统的前提是安装好VMware软件 首先下载虚拟系统文件 随后点击左上角的文件按钮 点击打开 选择 ovf文件 点击打开 3 修改系统存放的地址 因为虚拟系统比较大 不建议存放在C盘 4 随后等待软件加载系统 5 加载完毕之后 在软
  • 数组的转置和轴对称(python)

    文章目录 TOC 文章目录 1 什么叫轴 2 什么叫转置 3 转置 3 1简单转置 像二位数组 只有两个轴 再怎么转置也只是两个轴进行位置交换 所以 直接使用T就可以了 例如 3 2transpose 方法进行转置 3 3swapaxes
  • 用自然语言进行编程的时代真的要来了

    用自然语言进行编程的时代真的要来了 GitHub CEO托马斯 多姆克在官方博客上宣布 代码辅助工具Copilot进行重大升级 接入GPT 4 更名Copilot X 因此 原来只能帮你补全代码的它 现在通过打字聊聊天甚至语音就能 直接写代
  • 模块之间的耦合与内聚的七种类型

    文章目录 前言 按功能划分的四种模块类型 七种耦合 1 非直接耦合 2 数据耦合 3 标记耦合 4 控制耦合 5 外部耦合 6 公共耦合 7 内容耦合 七种内聚 1 偶然 巧合 内聚 2 逻辑内聚 3 时间内聚 4 通信内聚 5 顺序内聚
  • 详解Unicode字符集以及字符编码实现(一)

    在日常生活中 我们经常会碰到打开一个文件 但是文件内容乱码的问题 比如我想看 西游记 这部小说 下载链接 https m ijjjxs com txt dl 35 12585 html 点击TXT电子书下载 很快就会下载完成 但是使用电脑自
  • 开源订单管理系统

    系统概述 随着企业信息化管理的不断深化 数字化技术对企业发展影响加深 为优化企业服务 最大程度提升客户体验及企业管理 开源字节与客户进行深入沟通需求 定制研发了开源订单管理系统 客户订单管理是现代企业商务业务的重要组成部分 可以帮助企业解决
  • 使用云服务器CentOS7.6搭建个人网站

    为扩展个人知识面以及满足我对网站建设的好奇心 以及在课程的推动下 我开始搭建属于自己的个人网站 一 实验材料 硬件 云服务器 可用虚拟机代替 软件 VMware VScode Pycharm Xshell Xftp 二实验过程 1 使用Xs
  • Java设计与实现“秒杀”活动之抢粽子【完整版】

    五月榴花妖艳烘 绿杨带雨垂垂重 五月新丝缠角粽 金盘送 生绡画扇盘双凤 正是浴兰时节动 正值端午佳节 实习公司也是例行放假三天以及给每一位员工发放了节日小礼品 过完端午又将迎来618活动专场 秒杀抢单活动也是此起彼伏 从而产生刺激性消费 由
  • 从技术小白到编程大神的技术书籍推荐

    本人算不上大神 也非计算机专业出身 本着一股热爱技术的精神 研究过各种计算机技术 对于知识的索取方式 比较习惯看书 当然 随着认识的加深 以及新技术的层出不穷 也常接触各种技术文档 早些时候阅读过很多不错的计算机书籍 对于计算机底层的深入认
  • 图片等比例缩放,javademo

    图片等比缩小 放大需要将图片适配到现有的目标中 思想就是 下面代码 int w Integer parseInt width 原始宽 int h Integer parseInt height 原始高 int w1 450 固定宽 int
  • Java实现人脸登录、注册等功能【完整版】

    推荐 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 前言 这段时间由于学校实行静态化管理 寝室门和校门都是用了人脸识别的装置 每次经过都会激发我的好奇心 也想自己搞一个人脸识别玩玩 随着开
  • 线性代数(python)

    线性代数模块 概念 线性代数是数学运算中的一个重要工具 它在图形信号处理 音频信号处理中起非常重要的作用 numpy linalg模块中有一组标准的矩阵分解运算以及诸如逆和行列式之类的东西 例如 矩阵相乘 如果我们通过 对两个数组相乘的话
  • 如何将Kali Linux中的Firefox浏览器语言设置为中文

    我们在使用kali这个工具的时候 打开Firefox浏览器 对于英文不是很好的人很不友好 那么怎么设置成中文呢 其实很简单 不用通过行也可以实现 1 首先需要打开我们的Firefox浏览器 点击这里 2 选择设置 3 找到语言设置 找到中文
  • C# 学生成绩管理系统

    学生成绩管理系统 前言 一 我是一个菜鸟 二 已经有快一年没有发文章 一直在忙着毕业和找工作的事 如今生活逐渐趋于稳定 那么 勤劳的博主又开始更新了 哈哈 本次更新的是非常经典的学生成绩管理系统 这作为一个计算机专业的你来说 可能在大一 大
  • 【电赛-软件】CCS安装教程

    CCS安装教程 下载 下载地址 下载地址 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img WhFWuuUy 1679146802762 ccspicture ccs download png 选择第二个CCSTU
  • 软件开发流程分析

    软件开发流程分析 相关概念 1 原型设计 2 产品设计 3 交互设计 4 代码实现 详细步骤 相关概念 前端 自研API 调用第三放API 后端 自研API 第三方API 数据库 Mysql 数据采集 数据迁移 服务器 JAVA Nginx

随机推荐

  • 还不知道off-heap堆外内存?安排~

    目录 on heap堆内内存是什么 JVM堆内存是如何划分的 JVM堆内存满了后会怎么样 基于堆外内存解决系统GC卡顿问题 今天给大家聊一个很有意思的知识 就是off heap堆外内存 平时出去面试 或者研究一些技术的时候 经常可能会遇到o
  • 一个简单的实习生管理系统

    写了一个简单的实习生管理系统 用于自己复习java后端 由于是复习java为目的 故而这个系统没有用框架 control层基本手写servlet完成 基本的增删改查 级联删除功能均有实现 适合java刚入门的同学阅读 大神们请别见笑 如有错
  • 教你用OpenCV 和 Python实现圆物检测

    点击上方 码农的后花园 选择 星标 公众号 精选文章 第一时间送达 基于python使用OpenCV实现在一张图片中检测出圆形 并且根据圆检测结果信息 绘制 标记出圆的边界和圆心 1 HoughCircles 霍夫圆检测函数 在Opencv
  • 告诉你个秘密(ISCCCTF)(Crypto--bugku)

    观察一下 有A E B 没有其他字母 猜测是十六进制转字符 还是字符串 有大写 小写 数字 猜测还有加密 然后各种解密都尝试一下 emem 是base64 四个一组 三个一组 哈哈 键盘密码 对的 就是键盘加密 被包围的字母就是flag 提
  • 最常用激活函数公式(更新中)

    最常用激活函数公式 如需转载 请务必标明出处及作者信息 洋石灰儿 https blog csdn net Yshihui article details 80540070 1 what and why 直观的作用就是进行非线性操作 将输入信
  • Linux服务器clang-13安装(环境变量配置)

    1 从llvm的github网址选择合适的release合适的运行平台进行下载 下载官方预编译的二进制压缩包 2 将下载好的压缩包进行本地上传 使用scp命令进行上传 scp r P 端口号 本地文件路径 服务器ID等 服务器上目标地址 3
  • 九大内置对象

    1 request对象 request 对象是 javax servlet httpServletRequest类型的对象 该对象代表了客户端的请求信息 主要用于接受通过HTTP协议传送到服务器的数据 包括头信息 系统信息 请求方式以及请求
  • Fastadmin,配置SMTP邮件,踩坑笔记

    phpmailer php做发送邮件 有个叫phpmailer的插件 而fastadmin正是用的这一插件 首先是准备工作 你要把你的qq邮箱设置一下开启SMTP邮件 qq邮箱的设置位置在 账户 账户 这一选项下 这里如果你手机绑定了qq安
  • web服务器性能 测试,主流web服务器性能测试

    前言 因为boss要一个并发能上W得平台 而且还是要PHP得 恩 好吧 我是不喜欢php的 但是没办法 谁叫PHP是世界上最好得语言呢 于是心血来潮 来了一组 web服务器性能测试 测试有 php7 fpm docker nginx jav
  • 【华为OD机试真题 Java】小组卡片最大数字(100%通过+全网最详细注释)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • win10开始菜单打不开,使用startmenu.diagcab进行修复

    win10开始菜单打不开 使用startmenu diagcab进行修复 下载后打开运行startmenu diagcab 打开后 点击高级选项 勾选自动修复应用措施 接着点击下一步 运行修复后点击查看详细信息 查看打不开的原因 进行下一步
  • hk pic.net forum.php,HC-SR04 problem with pic18f24k22.

    2021 03 26 00 11 57 proestpa Hello I have a problem with HCSR04 ultrasonic distance sensor I wrote a code that works per
  • 记一次蓝屏的解决,错误代码IRQL_NOT_LESS_OR_EQUAL

    这两天不知为何 电脑总是正在运行时自动重启 今天忍无可忍 百度了一下解决方法 有方法说 我的电脑右键 属性 高级 启动和故障恢复 中的设置 系统失败 中取消勾选 自动重新启动 能解决问题 所以就先照做了 如下图 不设置还好 没想到一设置 重
  • 2021蒙城高考成绩查询,2021亳州高考成绩查询入口

    今年的高考已经和大家告一段落 想必考生和家长们现在比较关注的就是高考成绩查询了 下面出国留学网小编给大家分享 2021亳州高考成绩查询入口 仅供参考 希望帮助各位考生便捷查询高考成绩 祝大家考个好成绩 2021安徽高考成绩查询时间 2021
  • cmd命令安装python第三方库_Python如何安装第三方库

    Python如何安装第三方库 版权申明 非商业目的注明出处可自由转载 博文地址 https blog csdn net cdpxc article details 108808780 出自 cdpxc 注 笔者是在D盘直接安装了Anacon
  • VAE,变分

    1 Latent Variable Model 生成模型一般会生成多个种类的数据 比如说在手写数字生成中 我们总共有10个类别的数字要生成 这个时候latent variable model就是一个很好的选择 为什么呢 举例来说 我们很容易
  • 使用tika 判断文件类型

    判断文件类型一般可采用两种方式 后缀名判断 简单易操作 但无法准确判断类型 文件头信息判断 通常可以判断文件类型 但有些文件类型无法判断 如word和excel头信息的前几个字节是一样的 无法判断 Apache Tika 是什么 Apach
  • gru matlab实现,分别用CNN、GRU和LSTM实现时间序列预测(2019-04-06)

    卷积神经网络 CNN 长短期记忆网络 LSTM 以及门控单元网络 GRU 是最常见的一类算法 在kaggle比赛中经常被用来做预测和回归 今天 我们就抛砖引玉 做一个简单的教程 如何用这些网络预测时间序列 因为是做一个简单教程 所以本例子中
  • 【QT】判断本地语言

    QLocale ql switch ql language case QLocale Chinese 系统语言是中文 可以进行其他操作 break default break
  • 模块之间的耦合与内聚的七种类型

    文章目录 前言 按功能划分的四种模块类型 七种耦合 1 非直接耦合 2 数据耦合 3 标记耦合 4 控制耦合 5 外部耦合 6 公共耦合 7 内容耦合 七种内聚 1 偶然 巧合 内聚 2 逻辑内聚 3 时间内聚 4 通信内聚 5 顺序内聚