一种面向对象软件系统类的内聚度度量方法

文档序号:6537932阅读:438来源:国知局
一种面向对象软件系统类的内聚度度量方法
【专利摘要】本发明公开一种基于复杂网络的面向对象软件系统类的内聚度度量方法。该方法结合复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大。同时对不连通的子图,按各个子图节点数在总子图节点数比例的乘积计算整个网络的内聚度。通过上述方法分别分析面向对象软件系统的类中的属性与属性之间网络的内聚度;方法与方法之间网络的内聚度;方法与属性之间网络的内聚度,最后根据软件系统的情况设定上述三种关系的权重计算该类的内聚度。相比现有技术,本发明具有更好的度量效果和实际的应用价值。
【专利说明】一种面向对象软件系统类的内聚度度量方法
【技术领域】
[0001]本发明涉及一种软件度量方法,具体是一种利用复杂网络的小世界模型和结构熵进行类的内聚度度量方法,属于软件工程技术和复杂网络交叉领域。
【背景技术】
[0002]软件工程的目标是开发新技术和工具提高软件质量,使其更加稳定并且易于维护。为了评估和提高在开发过程中的软件质量,程序开发人员和管理人员使用一些指标,这些指标估计不同软件的一些属性,比如内聚度、耦合度和复杂度。内聚度是指模块内部各成分之间的联结强度,是一种主要的软件质量指标,内聚度越高,越容易理解、修改和维护。然而内聚度本身是主观的、非形式化的概念,人们很难客观地评估一个模块的内聚度。
[0003]在面向对象程序设计语言中,类支持数据抽象、封装和继承等面向对象特征的基本概念。类是面向对象的基本单位程序,它定义了表示状态的属性集和表示行为的方法集。因此,在面向对象程序中,内聚度主要是指一个类或一个对象内部属性和方法之间的联结强度。
[0004]1998 年,Br iand [L.C.Br iand, J.Daly, J.Wuest, A unified frameworkfor cohesion measurement in object-oriented systems,Empirical SoftwareEngineering, An International Journal3(l) (1998)65 - 117]定义了类内聚度度量的四种数学特征,给内聚度度量提供理论支持。(I)Nonnegativity and Normailization,以内聚度的度量值属于特点的区域[0,ΜΑΧ]。这种理论能够很容易的比较度量不同类的内聚度;(2) Null value and maximum value,如果类中的方法和属性之间没有任何关系,贝丨J为Null value ;如果类中的方法和属性之间所有可能的联结都用了,则为Maximum value ;
[3]Monotonicity,在已有的类中增加方法与属性之间的联结,不会降低该类的内聚度;
[4]Cohesivemodules,合并两个不相关的模块后并不会增加合并后类的内聚度。如果度量准则没有符合上述任何一种,则类的内聚度度量是有缺陷的。
[0005]目前基于上述理论标准,国内外很多学者进行了类的内聚度研究,并提出了很多度量方法,比如:LC0M1, LC0M2, LC0M3, LC0M4, LC0M5, Coh, TCC, LCC, DC, DC, CC, SC0M, LSCC, CAMC, NHD和SNHD等等。这些方法虽然有些能很好的应用,但是没有从复杂性科学上加以研究,因此以上的度量方面理论或多或少不够全面。

【发明内容】

[0006]发明目的:本发明所要解决的技术问题在于克服现有技术所存在的度量方法的理论欠缺、不完整,提供一种基于复杂网络的面向对象软件系统类的内聚度度量方法,该方法充分以图论为基础的,把具有复杂系统的类中方法和属性简化成点以及连接点的线段的集合,研究其内聚度具有较好的度量效果。
[0007]技术方案:一种面向对象软件系统类的内聚度度量方法,包括以下步骤:
[0008]步骤A、对类中的属性与属性之间网络进行分析计算其内聚度;[0009]步骤B、对类中的方法与方法之间网络进行分析计算其内聚度;
[0010]步骤C、对类中的方法与属性之间网络进行分析计算其内聚度;
[0011]步骤D、根据步骤A步骤B和步骤C得到的值设定各个权重计算类的内聚度。
[0012]有益效果:本发明利用复杂网络的小世界模型和结构熵理论,分析面向对象软件系统的类中的属性与属性之间网络的内聚度;方法与方法之间网络的内聚度;方法与属性之间网络的内聚度,最后根据软件系统的情况设定上述三种关系的权重计算该类的内聚度。比现有的分析方法更加全面,具有一定的应用价值。
【专利附图】

【附图说明】
[0013]图1为本发明实施例的内聚度度量方法流程图;
[0014]图2为本发明实施例的简单JAVA类代码;
[0015]图3为本发明实施例的方法与属性之间网络关系图;
[0016]图4为本发明实施例的属性与属性之间网络关系图。
【具体实施方式】
[0017]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。 [0018]一、面向对象系统的类依赖图
[0019]在真实的软件系统中,对于面向对象系统的类C,其中A= (A1, A2, , AJ为类C的属性集,M = (M1, M2,, MJ为类C的方法集,则类C的属性集与方法集之间存在着如下3种依赖关系:属性与属性之间的依赖关系;方法与方法之间的依赖关系;方法与属性之间的依赖关系。并且各种依赖关系都存在着传递性。基于上述3种依赖关系,可以构造类C的依赖图。定义一个类C的依赖图(⑶G)是有向图,⑶G=〈N,E>,其中,N是节点集,E是边集。N = Na U Nm, Na是类C的属性节点集,每个节点表示一个属性;Nm是类C的方法节点集,每个节点表示一个方法。
[0020]构件依赖图(⑶G)由三个子图组成:属性间依赖子图(AAG)、方法间依赖子图(MMG)、方法与属性间依赖子图(MG)。
[0021 ] (I)属性间依赖子图(AAG )
[0022]AAG =< NA,Ea >,其中Na是类C的属性节点集,Ea是边集,表示类C的属性之间的依赖关系,如果Ai, Aj e Na,且Ai互相依赖么」,即这两个属性都与某方法有关系,那么<Ai,Aj
〉G EAo
[0023](2 )方法间依赖子图(MMG )
[0024]MMG =< NM,Em >,其中Nm是类C的方法节点集,Em是边集,表示类C的方法之间的依赖关系,如果Mi, Mj e ^,且Mi相互依赖Mj,即两个方法有调用关系或者二个方法都与某属性有关系,那么< Mi, Mj > e Em。
[0025](3)方法与属性间依赖子图(MAG)
[0026]MAG =< N,Ema >,其中N是类C的属性和方法节点集,Ema是边集,表示类C的属性与方法之间的依赖关系,如果Ai e Na, Mj e Nm,且Ai依赖于M」,那么< Ai, Mj > e EM。[0027]类C的依赖图CDG可以看成是类C中属性与属性、方法与方法和属性与方法之间依赖关系的图形化描述,它直观地展现了类C中的各种依赖关系。
[0028]二、类内聚度度量方法(如图1所示)
[0029]假设下面三种不同网络都是连通的,如下面方法所介绍。如果不是连通的,对不连通的子图,按子图节点数在整个子图节点数比例的乘积计算其整个网络的内聚度。如果不考虑小世界的特性,仅仅考虑熵的影响。当且仅当P (A1) = P (A2)=…=Ι/m时,-P (Ai)InP (Ai)取得最大值为lnm,即网络中的节点度大致相等,内聚度越大。但是此网络不一定聚集成团,因此在趋于节点度相差不大的情况下,若能接近小世界网络,即大的集群系数和小的平均距离,则更符合内聚性效果更好。
[0030]( I)属性间的内聚度度量
[0031]类的属性间的内聚度主要是指类中属性之间关系的密切程度。为了度量这种关系,对类中的每个属性Ai (i = 1,2,...,m),引入一个集合AID来记录属性Ai所依赖的其它属性的集合:AID(Ai) = {A」IAjPAj有依赖关系,且Ai关A」}。AID(Ai) = (Aj)Ai e A, if< Ai, Aj > e GAA}
[0032]令
【权利要求】
1.一种面向对象软件系统类的内聚度度量方法,其特征在于,包括以下步骤: 步骤A、对类中的属性与属性之间网络,利用复杂网络理论进行分析计算其内聚度; 步骤B、对类中的方法与方法之间网络,利用复杂网络理论进行分析计算其内聚度; 步骤C、对类中的方法与属性之间网络,利用复杂网络理论进行分析计算其内聚度; 步骤D、根据步骤A步骤B和步骤C得到的值设定各个权重计算类的内聚度。
2.如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤A中利用复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大;网络中的平均最短路径长度L定义为任何两个节点之间距离的平均值,即
3.如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤B采用与步骤A同样的方法计算类中方法与方法之间网络的内聚度。
4.如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤C采用与步骤A同样的方法计算类中方法与属性之间网络的内聚度。
5.如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,类的属性间的内聚度主要是指类中属性之间关系的密切程度;为了度量这种关系,对类中的每个属性AiQ = 1,2,...,m),引入一个集合AID来记录属性Ai所依赖的其它属性的集合=AID(Ai)=(Aj I Ai 和 Aj 有依赖关系,且 Ai 关 AjI ;AID (Ai) = {A」| Ai e A,if < Ai, Aj > e GAA}

m
令 Ρ(4) = μ/ζχ4)|,,Σ|/?/β(Λ)|


k=.l 式中,IAID(Ai) I表示集合AID (Ai)中元素的个数; 则类C的属性间结构熵为:
6.如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤D中具体使用步骤A、步骤B和步骤C计算的三个网络的内聚度,分别设定权重;从类的内聚度的性质可以知道,类C的某一方面的内聚度都不能代表类的内聚度;类(:的内聚度是由类的属性间的内聚度Cohesion (A_A)、方法间的内聚度Cohesion (M_M)和方法与属性的内聚度Cohesion(M_A)共同决定,因此,可以定义类C的内聚度Cohesion(C)为:
Cohesion (C) = a Cohesion(A_A) + β Cohesion(M_M) + y Cohesion(M_A) 式中,a, β和Y分别代表了类的属性间的内聚度Cohesion(A_A)、方法间的内聚度Cohesion(M_M)和方法与属性的内聚度Cohesion(M_A)在类C的内聚度中的权重,且α +β + y = I。
【文档编号】G06F9/44GK103793230SQ201410054093
【公开日】2014年5月14日 申请日期:2014年2月18日 优先权日:2014年2月18日
【发明者】顾爱华, 周晓峰 申请人:河海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1