ylbtech-术语-软件度量-内聚性:内聚性 |
内聚性(Cohesion)也称为
内聚力,是一
软件度量,是
指机能相关的程序组合成一模块的程度,或是
各机能凝聚的状态或程度。是
结构化分析的重要概念之一。量测内聚性的方式不少,有些方法是由
分析源代码,获得非量化的结果,有些方法则是检查源代码的文本特征,以获得内聚性的量化分数。内聚性是
属于顺序式的量测量,通常会以“高内聚性”或“低内聚性”来表示。
通常会但愿程序的模块有高内聚性,由于高内聚性通常和许多理想的软件特性有关,包括
鲁棒性、可靠度、可复用性及易懂性(understandability)等特性,而
低内聚性通常也表明
不易维护、不易测试、不易复用以及难以理解。
耦合性是一个和内聚性相对的概念。
通常而言高内聚性表明低耦合性,反之亦然。内聚性是由赖瑞·康斯坦丁所提出,是以实务上可减小维护及修改的“好”软件的特性为基础。
1.返回顶部 |
一、
二、
2.返回顶部 |
一、
高内聚性
在
计算机科学中,内聚性是指机能相关的程序组合成一模块的程度。应用在
面向对象程序设计中,若服务特定类型的
方法在许多方面都很相似,则此类型即有高内聚性。
在一个高内聚性的系统中,代码可读性及复用的可能性都会提升,
程序虽然复杂,但可被管理。
如下的情形会下降程序的内聚性:
-
许多机能封装在一类型内,能够借由方法供外界使用,但机能彼此相似之处很少。
-
在方法中进行许多不一样的机能,使用的是相关性低或不相关的数据。
低内聚性的缺点以下:
-
增长理解模块的困难度。
-
增长维护系统的困难度,由于一个逻辑修改会影响许多模块,而一个模块的修改会使得一些相关模块也要修改。
-
增长模块复用困难度,由于大部分的应用程序没法复用一个由许多不必定相关的机能组成的模块。
内聚性的类型
内聚性是一种非量化的量测,可利用评量规准来确认待确认源代码的内聚性的分类。内聚性的分类以下,由低到高排列:
-
偶然内聚性(Coincidental cohesion,最低)
-
偶然内聚性是指模块中的机能只是恰好放在一块儿,模块中各机能之间惟一的关系是其位置在同一个模块中(例如:“工具”模块)。
-
逻辑内聚性(Logical cohesion)
-
逻辑内聚性是只要机能在逻辑上分为同一类,不论各机能的本质是否有很大差别,就将这些机能放在同一模块中(例如将全部的鼠标和键盘都放在输入处理副程序中)。模块内执行几个逻辑上类似的功能,经过参数肯定该模块完成哪个功能。
-
时间内聚性(Temporal cohesion)
-
时间内聚性是指将相近时间点运行的程序,放在同一个模块中(例如在捕捉到一个异常后调用一函数,在函数中关闭已打开的文件、产生错误日志、并告知用户)。
-
程序内聚性(Procedural cohesion)
-
程序内聚性是指依一组会按照固定顺序运行的程序放在同一个模块中(例如一个函数检查文件的权限,以后打开文件)。
-
联系内聚性/信息内聚/通讯内聚(Communicational cohesion)
-
联系内聚性是指模块中的机能由于处理相同的数据或者指各处理使用相同的输入数据或者产生相同的输出数据,因此放在同一个模块中(例如 一个模块中的许多机能都访问同一个记录)。
-
依序内聚性/顺序内聚(Sequential cohesion)
-
依序内聚性是指模块中的各机能彼此的输入及输出数据相关, 一模块的输出数据是另外一个模块的输入,相似工厂的生产线(例如 一个模块先读取文件中的数据,以后再处理数据)。
-
功能内聚性(Functional cohesion,最高)
-
功能内聚性是 指模块中的各机能是由于它们都对模块中单一明肯定义的任务有贡献(例如XML字符串的 词法分析)。
由赖瑞·康斯坦丁、爱德华·尤登及史蒂夫·麦康奈尔等人的研究都提出偶然内聚性和逻辑内聚性是很差的,
联系内聚性和依序内聚性是好的,而功能内聚性是最理想的状态。
相关条目
-
耦合性 (计算机科学)
-
面向对象程序设计用语列表
-
GRASP (面向对象设计)
-
SOLID (面向对象设计)
二、
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
一、
二、
6.返回顶部 |
![]() |
做者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。 |