内聚的概念是Constantine、Yourdon、Stevens等人提出的。按他们的观点,把内聚按紧密程度从低到高排列次序为
偶然内聚、
逻辑内聚、时间内聚、
过程内聚、通信内聚、
顺序内聚、
功能内聚。但是紧密程度的增长是非线性的。偶然内聚和逻辑内聚的模块联系松散,后面几种内聚相差不多,功能内聚一个功能、独立性强、内部结构紧密,是最理想的内聚。
几个逻辑上相关的功能被放在同一模块中,则称为
逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这
类模块的修改也比较困难。
模块完成多个需要按一定的步骤一次完成的功能。(过程相关---
控制耦合)。例如:在用
程序流程图设计模块时,若将程序流程图中的一部分划出各自组成模块,便形成
过程内聚。
模块完成多个功能,各个功能都在同一
数据结构上操作,这个模块的所有功能都是基于同一个数据结构(
符号表),因此,它是一个信息内聚的模块。
如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为
顺序内聚。
模块的所有成分对于完成单一的功能都是必须的,则称为
功能内聚。