模块独立性与高内聚低耦合
模块独立程度的度量标准
1)耦合 不同模块之间的互联程度的度量
2)内聚 模块内部彼此结合的紧密程度的度量
模块耦合度越高模块独立性越低
模块内聚度越高模块独立性越高
高内聚,低偶合
耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
低偶合:类与类之间的关系而定,高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题。一个类的运行影响到其他的类。 一个模块内各个元素彼此结合的紧密程度。即块内联系大。
内聚:是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系; 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
高内聚:类内部的方法而言。把程序的功能尽量分散,别在一个类里只写一个或很好的方法,因为那样会给你的调试等带来很多问题。出了错你都不知道在什么地方。一个软件结构内不同模块之间互连程度的度量,即块间联系小。
按耦合度从低到高依次有7种耦合方式:
非直接耦合(独立运行)
数据耦合(用参数表传递简单数据)
标记耦合(传递数据结构或者一部分)
控制耦合(传递的信息包括控制模块的信息)
外部耦合(模块与软件之外的环境有关)
公共耦合(多个模块引用同一全局的数据区)
内容耦合(访问内部数据,代码重叠或者多个入口)
按内聚度从低到高依次有7种内聚种类:
偶然内聚(模块完成的多个任务,任务之间的关系松散)
逻辑内聚(模块完成逻辑相关的一组任务)
时间内聚(模块的所有任务必须在同一时间间隔内执行)
过程内聚(模块的处理元素相关而且按照特定的次序执行)
通信内聚(模块的所有元素集中在一个数据结构区域上)
顺序内聚(模块的处理元素相关,必须顺序执行)
功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)
模块独立性与高内聚低耦合相关推荐
- 8.18 模块设计原则:高内聚低耦合
8.18 模块设计原则:高内聚低耦合 模块内聚 定义(软考) 块内联系:模块内各元素的关联.交互程度 从功能角度:自己的功能自己实现,不麻烦其它模块 如何实现高内聚 功能内聚:模块的功能尽可能单一 模 ...
- 浅谈面向对象开发原则:高内聚,低耦合
软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...
- 软件设计之——“高内聚低耦合”
耦合度 一.什么是耦合度 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口 ...
- 高内聚低耦合是什么含义,怎么实现?
一.含义 高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低. 目的:使程序模块的可重用性.移植性大大增强. 通常程序结构中 ...
- Java编程思想之高内聚低耦合
文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...
- java 高内聚低耦合_高内聚低耦合法则实例解析
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...
- 知识篇: 面向对象开发原则.高内聚.低耦合+Python安装详细教程+print输出带颜色的方法...
面系那个对象开发原则.高内聚.低耦合 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计, ...
- 三层架构什么是高内聚低耦合?
javabean&三层架构 各层功能 三层架构的优缺点 什么是高内聚低耦合? 内聚是什么意思? 低内聚 高内聚:系统的架构的完整尽可能少的依赖外部资源. 低耦合:系统内部各个模块间的依赖关系尽 ...
- 高内聚低耦合通俗解释
先看下百度百科的解释: 高内聚低耦合,是 软件工程 中的概念,是判断软件设计好坏的标准,主要用于程序的 面向对象 的设计,主要看类的内聚性是否高, 耦合度 是否低. 目的是使程序模块的可重用性.移植性 ...
最新文章
- 如何用 ndctl/ipmctl 管理工具 配置不同访问模式的pmem设备
- Amazon 63岁员工因算法评分太低被自动开除!
- react更改路由入参_react怎么路由传参?
- Vue 路由知识三(过渡动画及路由钩子函数)
- 轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法
- eclipse信息输出区没有logcat的解决方法
- linux 安装nodejs8,CentOS 安装NodeJS V8.0.0的方法
- [mark] first shellcode
- html标签的补充—— b,strong标签
- 155款安卓开源项目源码整理+20个Android必备第三方框架
- 第十三届“认证杯”数学中国数学建模比赛赛后体会
- 浅析EL表达式注入漏洞
- 熊出没机器人光头强_熊出没中光头强太迂腐,这4种物品都能让他身价过亿,却弃而不用...
- php screw.so,php screw加密
- CCF-CSP-2015年9月-题解
- 欧拉函数、费马定理、欧拉定理
- 正弦稳态电路的阻抗和功率
- C# 彻底删除文件或目录,不可恢复,文件清除工具
- BAT再战二手车,哪种模式会胜出?
- 5个最佳React动画库