逻辑内聚指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。指机能相关的程序组合成一模块的程度,或是各机能凝聚的状态或程度。是
结构化分析的重要概念之一。
量测
内聚性的方式很多,有些方法是由分析
源代码,得到非量化的结果,有些方法则是检查源代码的文本特征,以得到内聚性的量化分数。内聚性是属于顺序式的量测量,一般会以“
高内聚性”或“低内聚性”来表示。一般会希望程序的模块有高内聚性,因为高内聚性一般和许多理想的
软件特性有关,包括
鲁棒性、
可靠度、
可复用性及易懂性(understandability)等特性,而低内聚性一般也代表不易维护、不易测试、不易复用以及难以理解。
偶然内聚性(Coincidental cohesion,最低)偶然内聚性是指模块中的机能只是刚好放在一起,模块中各机能之间唯一的关系是其位在同一个模块中(例如:“工具”模块)。
逻辑内聚性(Logical cohesion)逻辑内聚性是只要机能只要在逻辑上分为同一类,不论各机能的本质是否有很大差异,就将这些机能放在同一模块中(例如将所有的鼠标和键盘都放在输入处理副程序中)。
时间性内聚性(Temporal cohesion)时间性
内聚性是指将相近时间点运行的程序,放在同一个模块中(例如在捕捉到一个异常后调用一函数,在函数中关闭已打开的文件、产生错误日志、并告知用户)。
联络内聚性(Communicational cohesion)联络内聚性是指模块中的机能因为处理相同的数据,因此放在同一个模块中(例如一个模块中的许多机能都访问同一个记录)。
依序
内聚性(Sequential cohesion)依序内聚性是指模块中的各机能彼此的输入及输出数据相关,一模块的输出数据是另一个模块的输入,类似工厂的生产线(例如一个模块先读取文件中的数据,之后再处理数据)。
功能内聚性(Functional cohesion,最高)功能内聚性是指模块中的各机能是因为它们都对模块中单一明确定义的任务有贡献(例如XML字符串的
词法分析)。