一、内聚

1.定义

一个模块内部各元素聚集、关联的程度。

定义的范围在一个模块内部。一个高内聚模块,应该恰好只做一件事。高内聚就是模块内各元素高度聚集、高度关联。

2.特点

高内聚模块具备较好的可靠性、可重用性、可读性。

3.分类

功能内聚、顺序内聚、.......、偶然内聚(排序由高内聚至低内聚)。

功能内聚——一个模块内所有元素的存在都是为了完成同一个单一功能,模块已不可再分,这是最高程度的内聚,也是我们进行软件设计时想达到的效果。

......

偶然内聚——模块内各元素之间没有任何联系,只是偶然呗凑到一起,这是最低程度的内聚,进行软件设计时应该避免。

二、耦合

1.定义

多个模块之间关联程度的度量。

定义范围在多个模块之间。耦合的程度取决于模块间接口的复杂性、调用模块的方式等。模块间的联系越多,耦合性越强,独立性就越差。

2.特点

低耦合能减少模块间的相互作用,防止修改某一模块时引起的“牵一发动全身”效应。

3.分类

数据耦合、......、公共耦合(排序由低耦合至高耦合)。

数据耦合——调用模块于被调用模块之间只传递简单的数据项参数,类似函数传参,是最低的耦合。

......

公共耦合——多个模块访问同一个全局数据结构,最高的耦合。

软件设计中的高内聚、低耦合相关推荐

  1. 软件设计原则:高内聚低耦合

    这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低. 一个程序有50个函数,这个程序执行得非常好:然而一旦你修改其中一个函数,其他49个函数都需要 ...

  2. 8.18 模块设计原则:高内聚低耦合

    8.18 模块设计原则:高内聚低耦合 模块内聚 定义(软考) 块内联系:模块内各元素的关联.交互程度 从功能角度:自己的功能自己实现,不麻烦其它模块 如何实现高内聚 功能内聚:模块的功能尽可能单一 模 ...

  3. 软件设计之——“高内聚低耦合”

    耦合度 一.什么是耦合度 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口 ...

  4. 软件设计之——高内聚低耦合

    耦合度 一.什么是耦合度 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口 ...

  5. python模块化设计耦合度_模块化开发——高内聚低耦合

    前言:emmm最近都在赶进度,已经好久没输出了,接下来都使用MakeDown文档写文,推荐大家使用VsCode编译工具,加入Markdown Preview Enhanced插件,创建一个MD文件,复 ...

  6. 耦合关系从强到弱顺序_软件设计要求—“高内聚低耦合”

    耦合度 一.什么是耦合度 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口 ...

  7. 软件开发及过程管理——理解高内聚-低耦合

    目录 一. 低耦合(Low Coupling) 二. 哪些是耦合 三. 高内聚-低耦合的作用 3.1 根据可能的变化设计软件 3.2 合理的职责划分 3.3 使用接口而不是继承 四. 设计模式专栏 一 ...

  8. 高内聚低耦合设计原则

    高内聚低耦合 高内聚低耦合是模块设计的基本原则.模块设计就像四世同堂居家过日子,妯娌婆媳吃大锅饭.柴米油盐不分你我很容易伤和气:如果亲兄弟明算账,每顿饭都AA又太显得生分,不利于和谐,因此把握好一个度 ...

  9. 线程间定制化调用通信—— 1 高内聚低耦合的前提下,线程操作资源类 2 判断/干活/通知 3 多线程交互中,必须要防止多线程的虚假唤醒,也即(判断只用while,不能用if)

    生产者与消费者模式 一个生产者与一个消费者 题目:现在有两个线程,可以操作初始值为0的一个变量,实现一个线程对该变量加1,另一个线程对该变量减1,这两个线程的操作加一.减一交替,进行10轮,变量的初始 ...

最新文章

  1. java从字符串中提取数字
  2. linux内核arch目录,各个处理器的介绍
  3. 开源任务调度平台elastic-job-lite源码解析
  4. 彻底解决Git中文乱码问题
  5. 【Java】获取目录及其子目录文件的相关事宜
  6. jmeter登录配置
  7. 【ffmpeg】overlay带有透明通道的视频
  8. 在 Visual Studio Code 中使用 PoweShell - CodeShell
  9. .describe() python_Stataamp;Python | 分别实现多元线性回归
  10. [USACO08MAR]Land Acquisition
  11. python自动机器学习库auto_ml模块
  12. ajax验证作用,通过正则表达式使用ajax检验注册信息功能
  13. 基于51单片机的蓝牙循迹小车
  14. 计算机windows8黑屏怎么办,Win8电脑开机黑屏只有鼠标光标怎么解决
  15. mybatis(二)xml配置文件详细说明
  16. 分布式文件系统FastDFS详解
  17. Cesium学习四:使用entity绘制polygon
  18. Java开发就业形势和面试技巧
  19. nginx+https+自签名+各种云dns解析+浏览器安全可用include相对路径和绝对路径
  20. 解决WIN7设备和打印机里空白,0个对象,但是可以打印的办法

热门文章

  1. 如何使用Arduino连接蜂鸣器
  2. 2019-5-8,给新班级的新生们学习禅道系统的部署与应用,并且让每个学员自己动手完成
  3. SAP库存库龄逻辑分析
  4. 蓝牙耳机哪个好?2022最具性价比的蓝牙耳机推荐
  5. Vue复习知识点(理解MVVM模式、Vue实例配置的各选项、Vue的各种内置指令....)
  6. 2022-06-20 工作记录--CSS-sticky实现导航栏、侧边栏固定,右侧展示内容顺畅滑动效果
  7. 《EDIUS 6.5快刀手高效剪辑技法》——2.2 认识EDIUS的工作界面
  8. Netty如何实现 keepalive和idle监测
  9. 据说20%的业务能拿到外贸大订单因为懂这个方法
  10. 第十三篇、文本框、密码框和文本域。