耦合与内聚分类

耦合部分

耦合能够分为如下几种,它们之间的耦合度由高到低排列以下:数据结构

(1) 内容耦合:一个模块直接访问另外一模块的内容,则称这两个模块为内容耦合。
若在程序中出现下列状况之一,则说明两个模块之间发生了内容耦合:spa

1. 一个模块直接访问另外一个模块的内部数据。
2. 一个模块不经过正常入口而直接转入到另外一个模块的内部。
3. 两个模块有一部分代码重叠(该部分代码具备必定的独立功能)。
4. 一个模块有多个入口。.net

内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不容许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。设计

(2)公共耦合:一组模块都访问同一个全局数据结构,则称之为公共耦合。公共数据环境能够是全局数据结构、共享的通讯区、内存的公共覆盖区等。若是模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合;若是模块既向公共数据环境输入数据又从公共数据环境取出数据,这属于较紧密的公共耦合。
公共耦合会引发如下问题:blog

1. 没法控制各个模块对公共数据的存取,严重影响了软件模块的可靠性和适应性。
2. 使软件的可维护性变差。若一个模块修改了公共数据,则会影响相关模块。
3. 下降了软件的可理解性。不容易清楚知道哪些数据被哪些模块所共享,排错困难。内存

通常地,仅当模块间共享的数据不少且经过参数传递很不方便时,才使用公共耦合。io

(3) 外部耦合:一组模块都访问同一全局简单变量,并且不经过参数表传递该全局变量的信息,则称之为外部耦合。变量

(4) 控制耦合:模块之间传递的不是数据信息,而是传递控制信息例如标志、开关量等,一个模块控制了另外一个模块的功能。软件

(5) 标记耦合:调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称做特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。程序

(6) 数据耦合:调用模块和被调用模块之间只传递简单的数据项参数。至关于高级语言中的值传递。

(7) 非直接耦合:两个模块之间没有直接关系,它们之间的联系彻底是经过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。
总结:耦合是影响软件复杂程度和设计质量的一个重要因素,为提升模块的独立性,应创建模块间尽量松散的系统,在设计上咱们应采用如下原则:若模块间必须存在耦合,应尽可能使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范围,尽可能避免内容耦合。

内聚部分

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

(1) 偶然内聚:一个模块内的各处理元素之间没有任何联系,只是偶然地被凑到一块儿。这种模块也称为巧合内聚,内聚程度最低。

(2) 逻辑内聚:这种模块把几种相关的功能组合在一块儿, 每次被调用时,由传送给模块参数来肯定该模块应完成哪种功能

(3) 时间内聚:把须要同时执行的动做组合在一块儿造成的模块称为时间内聚模块。

(4) 过程内聚:构件或者操做的组合方式是,容许在调用前面的构件或操做以后,立刻调用后面的构件或操做,即便二者之间没有数据进行传递。简单的说就是若是一个模块内的处理元素是相关的,并且必须以特定次序执行则称为过程内聚。

(5) 通讯内聚:指模块内全部处理元素都在同一个数据结构上操做或全部处理功能都经过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据数据或产生相同的数据结构。

(6) 顺序内聚:一个模块中各个处理元素和同一个功能密切相关,并且这些处理必须顺序执行,一般前一个处理元素的输出时后一个处理元素的输入。
例如某模块完成工业产值求值的功能,前一个功能元素求总产值,后一个功能元素求平均产值,显然该模块内两部分紧密关联。
顺序内聚的内聚度比较高,但缺点是不如功能内聚易于维护。

(7) 功能内聚:模块内全部元素的各个组成部分所有都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的全部成分,这些成分紧密联系、缺一不可。

功能内聚是最强的内聚,其优势是它的功能明确。判断一个模块是否功能内聚,通常从模块名称就能看出。若是模块名称只有一个动词和一个特定的目标(单数名词),通常来讲就是功能内聚,如:“计算水费”、“计算产值”等模块。功能内聚通常出如今软件结构图的较低层次上。
功能内聚模块的一个重要特色是:他是一个“暗盒”,对于该模块的调用者来讲,只须要知道这个模块能作什么,而不须要知道这个模块是如何作的。

————————————————版权声明:本文为CSDN博主「Hyo_yew」的原创文章。原文连接:https://blog.csdn.net/Hyo555/article/details/80293960

相关文章
相关标签/搜索