Java教程

程序内聚性分析

本文主要是介绍程序内聚性分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

内聚性分析。是一软件度量,是指机能相关的程序组合成一模块的程度。

以下的情形会降低程序的内聚性:

  • 许多机能封装在一类型内,可以借由方法供外界使用,但机能彼此类似之处不多。

  • 在方法中进行许多不同的机能,使用的是相关性低或不相关的数据。

低内聚性的缺点如下:

  • 增加理解模块的困难度。

  • 增加维护系统的困难度,因为一个逻辑修改会影响许多模块,而一个模块的修改会使得一些相关模块也要修改。

  • 增加模块复用困难度,因为大部分的应用程序无法复用一个由许多不一定相关的机能组成的模块。

内聚性是一种非量化的量测,可利用评量规准来确认待确认源代码的内聚性的分类。内聚性的分类如下,由低到高排列:

偶然内聚性(Coincidental cohesion,最低)
偶然内聚性是指模块中的机能只是刚好放在一起,模块中各机能之间唯一的关系是其位在同一个模块中(例如:“工具”模块)。

逻辑内聚性(Logical cohesion)
逻辑内聚性是只要机能只要在逻辑上分为同一类,不论各机能的本质是否有很大差异,就将这些机能放在同一模块中(例如将所有的鼠标和键盘都放在输入处理副程序中)。模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

时间性内聚性(Temporal cohesion)
时间性内聚性是指将相近时间点运行的程序,放在同一个模块中(例如在捕捉到一个异常后调用一函数,在函数中关闭已开启的文件、产生错误日志、并告知用户)。
程序内聚性(Procedural cohesion)
程序内聚性是指依一组会依照固定顺序运行的程序放在同一个模块中(例如一个函数检查文件的权限,之后开启文件)。

联系内聚性/信息内聚/通信内聚(Communicational cohesion)
联系内聚性是指模块中的机能因为处理相同的数据或者指各处理使用相同的输入数据或者产生相同的输出数据,因此放在同一个模块中(例如一个模块中的许多机能都访问同一个记录)。

依序内聚性/顺序内聚(Sequential cohesion)
依序内聚性是指模块中的各机能彼此的输入及输出数据相关,一模块的输出数据是另一个模块的输入,类似工厂的生产线(例如一个模块先读取文件中的数据,之后再处理数据)。
功能内聚性(Functional cohesion,最高)功能内聚性是指模块中的各机能是因为它们都对模块中单一明确定义的任务有贡献(例如XML字符串的词法分析)。
偶然类聚性和逻辑类聚性不好。
联系类聚和依序类聚是好的,功能类聚是最好的。

这篇关于程序内聚性分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!