内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。
内聚的概念
内聚的概念是Constantine、Yourdon、Stevens等人提出的。按他们的观点,把内聚按紧密程度从低到高排列次序为偶然内聚、
逻辑内聚、时间内聚、
过程内聚、通信内聚、
顺序内聚、
功能内聚。但是紧密程度的增长是非线性的。偶然内聚和
逻辑内聚的模块联系松散,后面几种内聚相差不多,
功能内聚一个功能、独立性强、内部结构紧密,是最理想的内聚。
内聚强度类型
内聚按强度从低到高有以下几种类型:
(1)偶然内聚
如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。
(2)逻辑内聚
几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这
类模块的修改也比较困难。
(3)时间内聚
如果一个模块完成的功能必须在同一时间内执行(如
系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
(4)通信内聚
如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
(5)顺序内聚
如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
(6)功能内聚
模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
(7)信息内聚
模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(
符号表),因此,它是一个信息内聚的模块。