什么是内聚 内聚是什么 内聚的种类有哪些

2023-05-16

内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然拓展。简单地说,理想内聚的模块只做一件事情。

设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多。

内聚和耦合是密切相关的,模块内的高内聚往往意味着模块内的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上

低内聚:

  • 偶然内聚:一个模块完成一个任务,这些任务彼此间即使有关系,关系也是很松散的(例如:有时在写完一个程序后,发现一组语句在两处或多出出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块)。
  • 逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类(例如一个模块产生各种类型的全部输出)。
  • 时间内聚:一个模块内包含的任务必须在同一段时间内执行(例如,模块完成各种初始化工作)。

偶然内聚的模块中,各种元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,而在另一种应用场合又不允许这种修改,从而陷入困境。事实上,偶然内聚的模块出现修改错误的概率比其他类型的模块高得多。

逻辑内聚的模块中,不同的功能混在一起,合用部分程序代码,即使局部功能的修改有时也会影响全局。因此,这类模块的修改也比较困难。

时间内聚在一定程度上反映了程序的某些实质,所以时间内聚比逻辑内聚好些。

中内聚:

  • 过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样往往得到的是过程内聚的模块。
  • 通信内聚:模块中所有的元素都使用同一个输入数据和(或)产生同一个输出数据。

高内聚:

  • 顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个元素的输出数据作为下一个元素的输入数据)
  • 功能内聚(最高程度的内聚):根据数据流图划分模块时,通常得到顺序内聚的模块,这种模块彼此间的连接往往比较简单。如果模块内所有处理元素属于一个整体,完成单一的功能,则称为功能内聚。

主流观点认为,如果给上述7种内聚的优劣评分,会有以下结果

功能内聚10分时间内聚3分
顺序内聚9分逻辑内聚1分
通信内聚7分偶然内聚0分
过程内聚5分

事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性。

什么是耦合https://blog.csdn.net/weixin_57604284/article/details/121299582?spm=1001.2014.3001.5501icon-default.png?t=LA92https://blog.csdn.net/weixin_57604284/article/details/121299582?spm=1001.2014.3001.5501

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

什么是内聚 内聚是什么 内聚的种类有哪些 的相关文章

  • Freertos-小车开发笔记 4 --遥控器开发

    目录 前言 xff1a 一 ADC DMA采集遥感的数据 二 串口3发送数据 三 wifi模块连接阿里云 前言 xff1a 遥控器开发采用的标准库编写 oled用于显示遥感的x y 值 一 ADC DMA采集遥感的数据 由于涉及到多个adc
  • Jmeter性能测试(12)--关联之正则表达式提取器

    如果有这样的情况 xff1a 一个完整的操作流程 xff0c 需要先完成某个操作 xff0c 获得某个值或数据信息 xff0c 然后才能进行下一步的操作 xff08 也就是常说的关联 将上一个请求的响应结果作为下一个请求的参数 xff09
  • qt-5串口与通讯

    文章目录 文章目录 一 串口通讯 二 实现串口通讯 1 在头文件中引入 QtSerialPort 类的两个头文件 xff08 必须引入 xff09 2 在工程文件中添加以下代码 3 在头文件中定义全局的串口对象 4 相关配置 5 通过一个按
  • qt-5数据库使用

    文章目录 目录 前言 一 所需要的头文件 二 数据库操作 1 addDatabase的函数原型如下 2 连接数据库 3 创建数据库表 4 插入数据到表中 5 更新表中的数据 总结 前言 例如 xff1a qt 5 创建数据库 xff0c 创
  • 利用MapReduce算法实现统计分析(单词统计,或者关键词统计)实验报告

    本文相关idea的代码出自 xff1a https blog csdn net weixin 38468167 article details 108658531 实验内容 xff1a 开发MapReduce算法 xff0c 实现统计分析
  • linux chomd 有何作用

    96 chmod 96 是 Linux 用来更改文件或目录权限的命令 它允许你控制文件和目录的访问权限 xff0c 决定文件 目录能否被用户读取 写入 执行的权限 具体说 xff0c chmod 可以更改 owner group 和 oth
  • 缓存同步-Canal

    目录 安装Canal 监听Canal 项目中对于canal的应用 应用场景 项目测试 场景 xff1a 缓存不是设置了有效期吗 xff0c 说明在有效期范围内数据是一直在的 xff0c 那么当数据库中的数据发送改变 xff0c 那么缓存还是
  • 对Redis布隆过滤器的实现

    目录 实现思路 首先最重要的自定义hash 然后就是将key放入bitSet 然后就是判断布隆过滤器bitSet数组中是否含有对应的key 代码 实现思路 39条消息 Redis布隆过滤器 Fairy要carry的博客 CSDN博客 首先最
  • fork()函数详解

    目录 1 基本了解 xff1a 2 fork函数的了解 xff1a 3 僵死进程 xff1a 4 fork和多线程 xff1a 1 多线程中某个线程调用 fork xff0c 子进程会有和父进程相同数量的线程吗 xff1f 2 父进程被加锁
  • 一阶线性自抗扰控制的整定

    摘要 线性自抗扰控制 linear active disturbance rejection control LADRC 是解决系统外部不可测扰动和内部未知不确定性的一种新型控制方法 其精髓是将系统的不确定性转化为一个可观测的状态 利用扩张
  • 单目视觉SLAM综述

    摘要 单目视觉SLAM因单目相机体积小 功耗低 信息获取丰富受到了广泛使用 为了深入分析单目视觉SLAM的优势 首先 简述单目视觉SLAM的基本原理 从特征点检测 相机姿态估计 选取关键帧 创建地图 地图及相机姿态优化 闭环检测等方面总结S
  • idea 修改 JDK 版本

    idea 修改 JDK 版本 第一步 xff1a 修改环境变量 xff08 修改成你需要的 JDK 版本 xff09 第二步 xff1a IDEA中的修改 导入Jdk进IDEA 第三步 xff1a 修改项目的sdk 第四步 xff1a 修改
  • Jmeter性能测试(13)--常见问题及解决方法

    jmeter作为一个开源的纯Java性能测试工具 xff0c 工作中极大的方便了我们进行接口 性能测试 xff0c 但使用过程中也遇到了很多的问题 xff0c 下面就记录一下自己遇到的问题 xff0c 后续会不断更新 1 获取日志 在使用j
  • C++的基础语法知识

    目录 一 认识C 43 43 1 如C语言 C 43 43 C Python等语言 xff0c 为什么会有这么多语言存在 xff1f 2 C 43 43 解决了什么问题 xff1f 3 什么是面向对象 xff1f 4 C 43 43 的特性
  • 基于遗传算法车辆路径问题(VRP)

    一 车辆路径问题简介与求解要求 交通运输是国民经济的动脉 xff0c 各种运输方式在日常运输营运管理工作中都要面对这样一个共同的问题 xff1a 如何为载运工具 汽车 xff0c 列车 xff0c 轮船和飞机 xff0c 统称为车辆 确定行
  • docker 安装(centos7虚拟机)

    Docker xff0c 翻译过来就是码头工人 Docker是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中 xff0c 然后发布到任何流行的Linux机器上 xff0c 也可以实现虚拟化 容器
  • java 死锁产生的四个必要条件

    1 互斥使用 xff0c 即当资源被一个线程使用 占有 时 xff0c 别的线程不能使用 2 不可抢占 xff0c 资源请求者不能强制从资源占有者手中夺取资源 xff0c 资源只能由资源占有者主动释放 3 请求和保持 xff0c 即当资源请
  • JS-数组和函数冒泡排序递归函数

    数组和函数 数组 计算数组中所有元素的和 span class token comment 定义数组 span span class token keyword var span nums span class token operator
  • Redis的Java客户端

    1 快速入门 Jedis使用的基本步骤 xff1a 1 引入依赖 2 创建Jedis对象 xff0c 建立连接 3 使用Jedis xff0c 方法名与Redis命令一致 4 释放资源 lt jedis依赖 gt lt dependency
  • Winform

    自适应窗口布局 OnLayout 窗口在尺寸变化时 会调用OnLayout方法 所以 在form1 cs文件里重写OnLayout方法即可实现自适应 在OnLayout方法中 我们获取一下窗口的宽度和高度 根据窗口的宽度和高度重新设定控件的

随机推荐