高内聚,低耦合

2018-07-02  本文已影响44人  箫声_筱昇

概念

耦合性: 也称块间联系。指的软件系统结构中各模块间相互凉席紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性,调用的方式及传递消息。

内聚性: 又称为快内联系。值模块的功能强度的度量,即一个模块内不各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间,程序段之间)联系的越紧密,则它的内举行就越高。

所谓的高内聚是指一个软件模块是由相关性很强的代码组成,只负责意一项任务,也就是常说的单一责任原则。

耦合: 一个软件结构内不同模块之间互连程度的度量。

对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间。尽可能的独立存在。也就是说每个模块,进可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块之间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。


软件架构设计的目的就是保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。在这方面有各种各样的解法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入等等各种各样的设计原则。

耦合

耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:

(1)内容耦合
一个模块直接访问另一个模块的内容,则成为这两个模块为内容耦合。

若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合。

  • 一个模块直接访问另一个模块的内部数据
  • 一个模块不通过正常入口而直接转入到另一个模块的内部。
  • 两个模块有一部分代码重叠(该部分代码具有一定的独立功能).
  • 一个模块有多个入口.

内容耦合可能在汇编语言中出现.大部分高级语言都被设计成不允许出现内容耦合.这种耦合的耦合性最强,模块独立性最弱.

(2)公共耦合

一组模块都访问同一个全局数据结构,则称之为公共耦合.公共数据环境可以是全局数据结构,共享的通信区,内存的公共覆盖区等.如果模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合:如果模块即向公共数据环境取出数据,这属于较紧密的公共耦合.

公共耦合会引起一下问题:

  • 1,无法控制各个模块对公共数据的存取,严重影响了软件模块的可靠性和适应性.
  • 2 ,是软件的可维护性变差.若一个叫模块修改了公共数据,则会影响相关模块.
  • 3, 降低了软件的可理解性.不容易清楚知道哪些根据被哪些模块共享所共享,拍错困难.
    一般地,仅当模块间的共享数据很多且通过参数传递不方便时,才使用公共耦合

(3) 外部耦合

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

(4)控制耦合

模块之间传递的不是数据信息,而是控制信息例如标志,开关量等,一个模块控制了另一个模块的功能.

(5)标记耦合:

调用模块的被调用模块之间只传递简单地数据参数.相当于高级语言中的值传递.

(6)数据耦合:

调用模块和被调用模块之间只传递简单地数据项参数.相当于高级语言中的值传递.

(7)非直接耦合

两个模块之间的联系.完全通过主模块的控制和调用来实现的.耦合度最弱,模块独立性最强.

总结
耦合是影响软件复杂程度和设计质量的一个重要因素,为提高模块的独立性,应建立模块间尽可能松散的系统,在设计上我们应采用以下原则:若模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或有控制的使用公共耦合,并限制耦合的范围,尽量避免内容耦合.

内聚

内聚有如下的种类,它们之间的内聚度由弱到强排列如下:

总结
**在模块划分时,要遵循"一个模块,一个功能"的原则,尽可能使模块达到功能内聚.

上一篇 下一篇

猜你喜欢

热点阅读