模块独立性指不依赖其他模块就能独立完成的特性,衡量模块独立性的定性标准有内聚和耦合。
耦合: 也叫耦合度,是对模块间关联程度的度量。 耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。一般分为下面几种耦合类型:
1.数据耦合:两个模块间通过参数仅交换数据。
2.控制耦合:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)。
3.特征耦合:当把整个数据结构作为参数传递,而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。
4.公共耦合:当多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全局变量、共享数据、任何存储介质上的文件等。
5.内容耦合:一个模块直接访问另一模块的内部数据,则称这两个模块为内容耦合,同时一个模块不通过正常入口而转到另一个模块的内部。
内聚:衡量模块内各元素结合的紧密程度。
内聚性从低到高分为7种三个等级,(从低到高)
低等级:偶然内聚、逻辑内聚、时间内聚
中等级:过程内聚、通信内聚
高等级:顺序内聚、功能内聚
功能内聚(Functional Cohesion)
如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。
功能内聚是最高程度的内聚。但在软件结构中,并不是每个模块都能设计成一个功能内聚模块。
顺序内聚(Sequential Cohesion)
如果一个模块内处理元素和同一个功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。
通信内聚(Communicational Cohesion)
如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称为通信内聚。
过程内聚(Procedural Cohesion)
如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称为过程内聚。
过程内聚与顺序内聚的区别是: 顺序内聚中是数据流从一个处理单元流到另一个处理单元,而过程内聚是控制流从一个动作流向另一个动作。
时间内聚(Temporal Cohesion)
如果一个模块包含的任务必须在同一段时间内执行,称为时间内聚。也称为瞬时内聚。
逻辑内聚(Logical Cohesion)
如果模块完成的任务在逻辑上属于相同或相似的一类,称为逻辑内聚。
偶然内聚(Coincidental Cohesion)
如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。
在面向对象程序设计中,我们要尽力追求高内聚,低耦合,这样会更有利于我们的软件开发。