耦合性
按从强到弱的顺序可分为以下几种类型:
(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。
(2)公共耦合。两个以上的模块共同引用一个全局数据项就称为公共耦合。
(3)外部耦合。若一组模块都访问同一全局数据项,则称为外部耦合。
(4)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
(5)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
(6)数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。
(7)非直接耦合。模块间没有信息传递时,属于非直接耦合。
内聚性
内聚的概念是Constantine、Yourdon、Stevens等人提出的。按他们的观点,把内聚按紧密程度从低到高排列次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。但是紧密程度的增长是非线性的。偶然内聚和逻辑内聚的模块联系松散,后面几种内聚相差不多,功能内聚一个功能、独立性强、内部结构紧密,是最理想的内聚。
1)功能内聚(FunctionalCohesion)如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。功能内聚是最高程度的内聚。但在软件结构中,并不是每个模块都能设计成一个功能内聚模块。
2)顺序内聚(SequentialCohesion)如果一个模块内处理元素和同一个功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。
3)通信内聚(CommunicationalCohesion)如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称为通信内聚。
4)过程内聚(ProceduralCohesion)如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称为过程内聚。过程内聚与顺序内聚的区别是:顺序内聚中是数据流从一个处理单元流到另一个处理单元,而过程内聚是控制流从一个动作流向另一个动作。
5)时间内聚(TemporalCohesion)如果一个模块包含的任务必须在同一段时间内执行,称为时间内聚。也称为瞬时内聚。
6)逻辑内聚(LogicalCohesion)如果模块完成的任务在逻辑上属于相同或相似的一类,称为逻辑内聚。
7)偶然内聚(CoincidentalCohesion)如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。
如果觉得《耦合性内聚性》对你有帮助,请点赞、收藏,并留下你的观点哦!