模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。
内聚是模块功能强度的度量,一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,模块独立性就越强。一般来说模块内聚度由低到高有偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚和功能内聚7种类型。
(1)偶然内聚(偶尔有联系)
模块内部各部分之间没联系,即使有也很松散。
(2)逻辑内聚(判断)
若一个模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能,则该模块的内聚类型为逻辑内聚。
(3)时间内聚(同一时间内,但非一个整体)
如一个模块内的几个功能必须在同一时间内执行(如一个初始化模块),但这些功能只是因为时间因素关联在一起,成为时间性内聚。
(4)过程内聚(讲次序)
若一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块为过程内聚模块。
(5)通信内聚(输入或输出数据相同)
如一个模块内的各部分功能使用相同的输入数据,或者产生相同的输出数据,称之为通信内聚模块。
(6)信息内聚(相同的数据结构,按要求执行)
如果模块进行许多操作,每个都有各自的入口点,每个操作的代码相对独立,而且所有操作都在相同的数据结构上完成,则该模块具有“信息性内聚”。这个模块将根据不同的要求,确定执行哪一个功能。比如说栈的初始化、添加、删除、获取操作。
(7)功能内聚(不讲次序,一个整体)
如果模块内所有成分形成一个整体,完成单个功能,则称功能内聚,功能内聚是最高程度的内聚形式.功能性内聚度是所有模块内聚中最好的,也是软件设计人员应该追求的目标。比如说人体的生命系统的运行。