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

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

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

低内聚:

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

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

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

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

中内聚:

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

高内聚:

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

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

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

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

什么是耦合https://blog.csdn.net/weixin_57604284/article/details/121299582?spm=1001.2014.3001.5501https://blog.csdn.net/weixin_57604284/article/details/121299582?spm=1001.2014.3001.5501

什么是内聚 内聚是什么 内聚的种类有哪些相关推荐

  1. c语言如何实现高内聚低耦合_如何实现高内聚低耦合?高内聚低耦合的现实例子...

    下面要给大家分享的是一个高内聚低耦合例子,那么编程应该如何实现高内聚低耦合呢?一起来看看下面的实例吧! 案例: 在一个学校里面,有着老师若干名,依次编号. 有学生若干名,依次编号. 现在的话,是要求要 ...

  2. 简单理解高内聚低耦合-高内聚低耦合通俗理解是什么?

    低耦合: 耦合就是元素与元素之间的连接,感知和依赖量度.这里说的元素即是功能,对象,系统,子系统.模块. 例如:现在有方法A和方法B 我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就 ...

  3. 马上看懂各种内聚类型(逻辑内聚、过程内聚、顺序内聚)

    各种内聚模式 内聚概念 内聚其实是一个模块内部各成分之间相关联程度的度量.用来表示说,你这个模块里面各个元素之间关系好不好,是不是每天勾肩搭背,还是冷眼相对或者是偶尔打个招呼. 内聚类型 这里用[元素 ...

  4. python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  5. 功能内聚C语言例子,为每种类型的模块内聚举一个具体的例子

    满意答案 qoh92ies4f 2013.07.25 采纳率:48%    等级:12 已帮助:15631人 内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展. 低内聚 ...

  6. 浅谈面向对象开发原则:高内聚,低耦合

    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...

  7. 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?

    文章目录 前言 一.何为内聚? 1.1.7 种内聚类型及其描述 二.何为耦合? 2.1.7 种耦合类型及其描述 总结 前言 高内聚.低耦合是我们在软件设计过程中必须遵循的一个重要原则,在整个软件工程中 ...

  8. 如何绘制逻辑图 — 6.要素的属性:内聚与解耦

    在上一篇文中介绍了描述要素归集名称的属性(系统与模块),这一篇要说明描述要素归属的原则属性. 松耦合和高内聚,是决定最终完成系统是否具有应变性.复用性的重要设计原则,作为在分析和设计一线的需求工程师也 ...

  9. 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  10. 耦合(六种)与 内聚(七种)—《软件工程与计算》笔记

    耦合(六种)与 内聚(七种) 1. 耦合(六种) 耦合描述的是 两个模块 之间关系的复杂程度.耦合性越低越好,耦合度越高,模块划分越差,越不利于软件变更和复用.根据耦合性的高低依次分为以下六种耦合: ...

最新文章

  1. leetcode之数组之和
  2. 泼冷水:反思机器学习5年大跃进(附论文)
  3. centos,yum安装时报错could not retrieve mirrorlist,resolve.conf配置,dns配置错误
  4. java职业技能了解精通_如何通过精通数字分析来提升职业生涯的发展,第8部分...
  5. 1756冗余_AB冗余模块1756-RM
  6. Solr 部分 局部字段修改 更新 删除
  7. 计算机存储数字,数字串在计算机内的表示与存储
  8. 2017.6.12 crash的数字表格 思考记录
  9. java 代码转换_java字符编码转换过程(转)
  10. lightgbm过去版本安装包_Node版本管理利器-NVM,你们用过吗?
  11. 微软张宏江出任金山CEO 求伯君正式退休
  12. Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控
  13. 提示编码有问题时,VS保存选项
  14. 关于xp英文版安装多国语言包的问题
  15. 双系统移动硬盘备份方案:macOS Catalina 10.15.5, Win10
  16. SIFI尺度不变特征变换算法
  17. kron matlab_使用kron来实现repmat, repelem的功能
  18. 灵山奇缘服务器维护中,灵山奇缘跨服系统详细介绍
  19. iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能)
  20. ARM平台处理器简介-ARMv7

热门文章

  1. 记录一次Win7接入NVME固态的过程
  2. 变革财智 越秀集团携手远光软件探路数字财资新征程
  3. [转]REBOL 语言简介
  4. 基于遗传算法的LQR主动悬架控制
  5. python网站自动答题_python自动登录网站答题-女性时尚流行美容健康娱乐mv-ida网...
  6. 汇丰银行面试--软件测试面试题
  7. 山外山科创板上市破发:首日下挫19% 公司市值38亿
  8. leetcode 546. Remove Boxes
  9. 【grpc】项目启动缺少grpc架包引用
  10. 意大利奢华品牌菲拉格慕香水联名下午茶;星巴克月饼全新上市 | 食品饮料新品...