CN103793230B - 一种面向对象软件系统类的内聚度度量方法 - Google Patents
一种面向对象软件系统类的内聚度度量方法 Download PDFInfo
- Publication number
- CN103793230B CN103793230B CN201410054093.6A CN201410054093A CN103793230B CN 103793230 B CN103793230 B CN 103793230B CN 201410054093 A CN201410054093 A CN 201410054093A CN 103793230 B CN103793230 B CN 103793230B
- Authority
- CN
- China
- Prior art keywords
- cohesion
- attribute
- class
- cohesion degree
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于复杂网络的面向对象软件系统类的内聚度度量方法。该方法结合复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大。同时对不连通的子图,按各个子图节点数在总子图节点数比例的乘积计算整个网络的内聚度。通过上述方法分别分析面向对象软件系统的类中的属性与属性之间网络的内聚度;方法与方法之间网络的内聚度;方法与属性之间网络的内聚度,最后根据软件系统的情况设定上述三种关系的权重计算该类的内聚度。相比现有技术,本发明具有更好的度量效果和实际的应用价值。
Description
技术领域
本发明涉及一种软件度量方法,具体是一种利用复杂网络的小世界模型和结构熵进行类的内聚度度量方法,属于软件工程技术和复杂网络交叉领域。
背景技术
软件工程的目标是开发新技术和工具提高软件质量,使其更加稳定并且易于维护。为了评估和提高在开发过程中的软件质量,程序开发人员和管理人员使用一些指标,这些指标估计不同软件的一些属性,比如内聚度、耦合度和复杂度。内聚度是指模块内部各成分之间的联结强度,是一种主要的软件质量指标,内聚度越高,越容易理解、修改和维护。然而内聚度本身是主观的、非形式化的概念,人们很难客观地评估一个模块的内聚度。
在面向对象程序设计语言中,类支持数据抽象、封装和继承等面向对象特征的基本概念。类是面向对象的基本单位程序,它定义了表示状态的属性集和表示行为的方法集。因此,在面向对象程序中,内聚度主要是指一个类或一个对象内部属性和方法之间的联结强度。
1998年,Briand[L.C.Briand,J.Daly,J.Wuest,A unified framework forcohesion measurement in object-oriented systems,Empirical SoftwareEngineering,An International Journal3(1)(1998)65–117]定义了类内聚度度量的四种数学特征,给内聚度度量提供理论支持。(1)Nonnegativity and Normailization,以内聚度的度量值属于特点的区域[0,MAX]。这种理论能够很容易的比较度量不同类的内聚度;(2)Null value and maximum value,如果类中的方法和属性之间没有任何关系,则为Nullvalue;如果类中的方法和属性之间所有可能的联结都用了,则为Maximum value;(3)Monotonicity,在已有的类中增加方法与属性之间的联结,不会降低该类的内聚度;(4)Cohesive modules,合并两个不相关的模块后并不会增加合并后类的内聚度。如果度量准则没有符合上述任何一种,则类的内聚度度量是有缺陷的。
目前基于上述理论标准,国内外很多学者进行了类的内聚度研究,并提出了很多度量方法,比如:LCOM1,LCOM2,LCOM3,LCOM4,LCOM5,Coh,TCC,LCC,DC,DC,CC,SCOM,LSCC,CAMC,NHD和SNHD等等。这些方法虽然有些能很好的应用,但是没有从复杂性科学上加以研究,因此以上的度量方面理论或多或少不够全面。
发明内容
发明目的:本发明所要解决的技术问题在于克服现有技术所存在的度量方法的理论欠缺、不完整,提供一种基于复杂网络的面向对象软件系统类的内聚度度量方法,该方法充分以图论为基础的,把具有复杂系统的类中方法和属性简化成点以及连接点的线段的集合,研究其内聚度具有较好的度量效果。
技术方案:一种面向对象软件系统类的内聚度度量方法,包括以下步骤:
步骤A、对类中的属性与属性之间网络进行分析计算其内聚度;
步骤B、对类中的方法与方法之间网络进行分析计算其内聚度;
步骤C、对类中的方法与属性之间网络进行分析计算其内聚度;
步骤D、根据步骤A步骤B和步骤C得到的值设定各个权重计算类的内聚度。
有益效果:本发明利用复杂网络的小世界模型和结构熵理论,分析面向对象软件系统的类中的属性与属性之间网络的内聚度;方法与方法之间网络的内聚度;方法与属性之间网络的内聚度,最后根据软件系统的情况设定上述三种关系的权重计算该类的内聚度。比现有的分析方法更加全面,具有一定的应用价值。
附图说明
图1为本发明实施例的内聚度度量方法流程图;
图2为本发明实施例的简单JAVA类代码;
图3为本发明实施例的方法与属性之间网络关系图;
图4为本发明实施例的属性与属性之间网络关系图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一、面向对象系统的类依赖图
在真实的软件系统中,对于面向对象系统的类C,其中A={A1,A2,...,Am}为类C的属性集,M={M1,M2,...,Mn}为类C的方法集,则类C的属性集与方法集之间存在着如下3种依赖关系:属性与属性之间的依赖关系;方法与方法之间的依赖关系;方法与属性之间的依赖关系。并且各种依赖关系都存在着传递性。基于上述3种依赖关系,可以构造类C的依赖图。定义一个类C的依赖图(CDG)是有向图,CDG=<N,E>,其中,N是节点集,E是边集。N=NA∪NM,NA是类C的属性节点集,每个节点表示一个属性;NM是类C的方法节点集,每个节点表示一个方法。
构件依赖图(CDG)由三个子图组成:属性间依赖子图(AAG)、方法间依赖子图(MMG)、方法与属性间依赖子图(MAG)。
(1)属性间依赖子图(AAG)
AAG=<NA,EA>,其中NA是类C的属性节点集,EA是边集,表示类C的属性之间的依赖关系,如果Ai,Aj∈NA,且Ai互相依赖Aj,即这两个属性都与某方法有关系,那么<Ai,Aj>∈EA。
(2)方法间依赖子图(MMG)
MMG=<NM,EM>,其中NM是类C的方法节点集,EM是边集,表示类C的方法之间的依赖关系,如果Mi,Mj∈NM,且Mi相互依赖Mj,即两个方法有调用关系或者二个方法都与某属性有关系,那么<Mi,Mj>∈EM。
(3)方法与属性间依赖子图(MAG)
MAG=<N,EMA>,其中N是类C的属性和方法节点集,EMA是边集,表示类C的属性与方法之间的依赖关系,如果Ai∈NA,Mj∈NM,且Ai依赖于Mj,那么<Ai,Mj>∈EMA。
类C的依赖图CDG可以看成是类C中属性与属性、方法与方法和属性与方法之间依赖关系的图形化描述,它直观地展现了类C中的各种依赖关系。
二、类内聚度度量方法(如图1所示)
假设下面三种不同网络都是连通的,如下面方法所介绍。如果不是连通的,对不连通的子图,按子图节点数在整个子图节点数比例的乘积计算其整个网络的内聚度。如果不考虑小世界的特性,仅仅考虑熵的影响。当且仅当ρ(A1)=ρ(A2)=…=1/m时,-ρ(Ai)lnρ(Ai)取得最大值为lnm,即网络中的节点度大致相等,内聚度越大。但是此网络不一定聚集成团,因此在趋于节点度相差不大的情况下,若能接近小世界网络,即大的集群系数和小的平均距离,则更符合内聚性效果更好。
(1)属性间的内聚度度量
类的属性间的内聚度主要是指类中属性之间关系的密切程度。为了度量这种关系,对类中的每个属性Ai(i=1,2,...,m),引入一个集合AID来记录属性Ai所依赖的其它属性的集合:AID(Ai)={Aj|Ai和Aj有依赖关系,且Ai≠Aj}。AID(Ai)={Aj|Ai∈A,if<Ai,Aj>∈GAA}
令
式中,|AID(Ai)|表示集合AID(Ai)中元素的个数。
则类C的属性间结构熵为:
子图AAG中,一个节点的集群系数也可以记为:
CAAi=2EAAi/(|AID(Ai)|×|(AID(Ai)-1)|)
其中EAAi表示子图AAG中节点Ai的邻点之间的连边数。
子图AAG中,平均距离定义为网络中所有节点对之间测地线长的平均值
其中边数dij就称为AAG中的Ai,Aj之间的距离
类C的属性间内聚度可定义为:
(2)方法间的内聚度度量
类的方法间的内聚度主要是指类中方法之间关系的密切程度,为度量这种关系,对类中的每个方法Mi(i=1,2,...,n),引入一个集合MID来记录方法Mi所依赖的其它方法的集合:MID(Mi)={Mj|Mi和Mj有依赖关系,且Mi≠Mj}。
令
式中,|MID(Mi)|表示集合MID(Mi)中元素的个数。
则类C的方法间结构熵为:
子图MMG中,一个方法节点的集群系数也可以记为:
CMMi=2EMMi/(|MID(Mi)|×|(MID(Mi)-1)|)
其中EMMi表示子图MMG中节点Mi的邻点之间的连边数。
子图MMG中,平均距离定义为网络中所有节点对之间测地线长的平均值,
其中边数dij就称为MMG中的Mi,Mj之间的距离
类C的方法间内聚度可定义为:
(3)属性与方法间的内聚度度量
类的属性与方法间的内聚度主要是指类中的方法对属性的依赖程度。为了度量这种关系,对类C的每个方法Mi(i=1,2,...,n),引入一个集合MAID来记录方法Mi所依赖的属性的集合:MAID(Mi)={Aj|Mi和Aj有依赖关系}。
令
式中,|MAID(MAi)|表示集合MAID(MAi)中元素的个数。
则类C的属性与方法间结构熵为:
子图MAG中,一个方法节点的集群系数也可以记为:
CMAi=2EMAi/(|MAID(MAi)|×|(MAID(MAi)-1)|)
其中EMAi表示子图MAG中节点Mi的邻点之间的连边数。
子图MAG中,平均距离定义为网络中所有节点对之间测地线长的平均值,
其中边数dij就称为MAG中的Mi,Mj之间的距离
类C的属性与方法间内聚度可定义为:
Cohesion(M-A)=Cohesion(M_A)+Cohesion(A_M)
(4)类的内聚度综合度量
从类的内聚度的性质可以知道,类C的某一方面的内聚度都不能代表类的内聚度。类C的内聚度是由类的属性间的内聚度Cohesion(A_A)、方法间的内聚度Cohesion(M_M)和方法与属性的内聚度Cohesion(M_A)共同决定,因此,可以定义类C的内聚度Cohesion(C)为:
Cohesion(C)=αCohesion(A_A)+βCohesion(M_M)+γCohesion(M_A)
式中,α,β和γ分别代表了类的属性间的内聚度Cohesion(A_A)、方法间的内聚度Cohesion(M_M)和方法与属性的内聚度Cohesion(M_A)在类C的内聚度中的权重,且α+β+γ=1。
实例分析
这里用一个实例进行说明,定义类B中有三个私有整型变量b1,b2,b3和二个形参a1,a2。有三个方法,即一个构造方法B(int,int),一个私有方法method_B1()及一个公共方法method_B2()。如图2,这是用Java语言编写的示例代码,而由该程序生成的属性与方法关系网络如图3所示,属性与属性之间网络关系如图4所示。
利用上述方法与属性之间网络分析方法计算的结果如表1和表2所示。其中平均最短距离为49/56。
表1方法与属性之间网络关系表(相对于方法的参数值)
表2方法与属性之间网络关系表(相对于属性的参数值)
如表1和表2所示的值,计算方法与属性之间网络的内聚度为:
Cohesion(M-A)=Cohesion(M_A)+Cohesion(A_M)=0.8675
同样的利用上述属性与属性之间网络分析方法计算的结果如表3所示。其中平均最短距离为13/20。
表3属性与属性之间网络关系
由于方法与方法之间的网络为二个子图,并且没有集群系数,因此没内聚可言。假定三种权重为0.5,0.5,0,则该类的内聚度为:
Cohesion(C)=αCohesion(A_A)+βCohesion(M_M)+γCohesion(M_A)
=0.5×0.8675+0.5×0.5062
=0.68685
本发明利用复杂网络的平均距离、集群系数和结构熵指标,较全面地分析类的内聚度,具有很好的度量效果。
Claims (4)
1.一种面向对象软件系统类的内聚度度量方法,其特征在于,包括以下步骤:
步骤A、对类中的属性与属性之间网络,利用复杂网络理论进行分析计算其内聚度;
步骤B、对类中的方法与方法之间网络,利用复杂网络理论进行分析计算其内聚度;
步骤C、对类中的方法与属性之间网络,利用复杂网络理论进行分析计算其内聚度;
步骤D、根据步骤A步骤B和步骤C得到的值设定各个权重计算类的内聚度;
步骤A中利用复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大;网络中的平均最短路径长度L定义为任何两个节点之间距离的平均值,即N为网络中节点的数目;假设网络中的一个节点i有ki条边将它和其他节点相连,这ki个节点之间实际存在的边数Ei和总的可能的边数ki(ki-1)/2之比就定义为节点i的集群系数Ci,即Ci=2Ei/ki(ki-1);记网络联结强度则网络结构熵定义为:其中同时对属性与属性之间的网络中不连通的子图,按子图节点数目在总子图节点数比例的乘积计算整个网络的内聚度;
类的属性间的内聚度是指类中属性之间关系的密切程度;为了度量这种关系,对类中的每个属性Ai,i=1,2,...,m,引入一个集合AID来记录属性Ai所依赖的其它属性的集合:AID(Ai)={Aj|Ai和Aj有依赖关系,且Ai≠Aj};AID(Ai)={Aj|Ai∈A,if<Ai,Aj>∈AAG},AAG表示属性间依赖子图;
令
式中,|AID(Ai)|表示集合AID(Ai)中元素的个数;
则类C的属性间结构熵为:
子图AAG中,一个节点的集群系数也可以记为:
CAAi=2EAAi/(|AID(Ai)|×|(AID(Ai)-1)|)
其中EAAi表示子图AAG中节点Ai的邻点之间的连边数;
子图AAG中,平均距离定义为网络中所有节点对之间测地线长的平均值
其中边数dij就称为AAG中的Ai,Aj之间的距离
类C的属性间内聚度可定义为:
2.如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤B采用与步骤A同样的方法计算类中方法与方法之间网络的内聚度。
3.如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤C采用与步骤A同样的方法计算类中方法与属性之间网络的内聚度。
4.如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤D中具体使用步骤A、步骤B和步骤C计算的三个网络的内聚度,分别设定权重;从类的内聚度的性质可以知道,类C的某一方面的内聚度都不能代表类的内聚度;类C的内聚度是由类的属性间的内聚度Cohesion(A_A)、方法间的内聚度Cohesion(M_M)和方法与属性的内聚度Cohesion(M_A)共同决定,因此,可以定义类C的内聚度Cohesion(C)为:
Cohesion(C)=αCohesion(A_A)+βCohesion(M_M)+γCohesion(M_A)
式中,α,β和γ分别代表了类的属性间的内聚度Cohesion(A_A)、方法间的内聚度Cohesion(M_M)和方法与属性的内聚度Cohesion(M_A)在类C的内聚度中的权重,且α+β+γ=1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410054093.6A CN103793230B (zh) | 2014-02-18 | 2014-02-18 | 一种面向对象软件系统类的内聚度度量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410054093.6A CN103793230B (zh) | 2014-02-18 | 2014-02-18 | 一种面向对象软件系统类的内聚度度量方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793230A CN103793230A (zh) | 2014-05-14 |
CN103793230B true CN103793230B (zh) | 2017-04-26 |
Family
ID=50668947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410054093.6A Expired - Fee Related CN103793230B (zh) | 2014-02-18 | 2014-02-18 | 一种面向对象软件系统类的内聚度度量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793230B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105487913B (zh) * | 2015-12-18 | 2018-07-31 | 浙江工商大学 | 一种基于加权a指数的软件包重要性度量方法 |
CN105389192B (zh) * | 2015-12-18 | 2018-07-31 | 浙江工商大学 | 一种基于加权q2指数的软件类重要性度量方法 |
CN106201455B (zh) * | 2016-06-23 | 2019-05-17 | 中国人民解放军国防科学技术大学 | 一种系统内聚度计算方法 |
CN106406870B (zh) * | 2016-09-06 | 2019-06-04 | 北京航空航天大学 | 一种基于软件复杂网络的四维软件演化度量分析方法 |
CN106484401B (zh) * | 2016-09-23 | 2019-07-23 | 东北大学 | 一种面向对象软件的自动化重构方法 |
CN109828925B (zh) * | 2018-06-25 | 2021-02-09 | 北京航空航天大学 | 一种基于软件网络结构特征的软件可靠性度量方法 |
CN113222388A (zh) * | 2021-04-30 | 2021-08-06 | 中核武汉核电运行技术股份有限公司 | 一种微服务评价方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520727A (zh) * | 2008-02-29 | 2009-09-02 | 国际商业机器公司 | 用于软件系统设计中的关键知识保护的方法和设备 |
-
2014
- 2014-02-18 CN CN201410054093.6A patent/CN103793230B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520727A (zh) * | 2008-02-29 | 2009-09-02 | 国际商业机器公司 | 用于软件系统设计中的关键知识保护的方法和设备 |
Non-Patent Citations (1)
Title |
---|
基于面向对象程序切片技术的耦合和内聚度量;华宁;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20111215(第S1期);第四章第4.3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103793230A (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793230B (zh) | 一种面向对象软件系统类的内聚度度量方法 | |
Bordier et al. | Graph analysis and modularity of brain functional connectivity networks: searching for the optimal threshold | |
Ghosh et al. | A framework for quantitative analysis of cascades on networks | |
Aslak et al. | Constrained information flows in temporal networks reveal intermittent communities | |
CN104424235B (zh) | 实现用户信息聚类的方法和装置 | |
Sinha et al. | A network-based structural complexity metric for engineered complex systems | |
CN103905440B (zh) | 一种基于日志和snmp信息融合的网络安全态势感知分析方法 | |
Liu et al. | Distributed sensing for high-quality structural health monitoring using WSNs | |
CN108304380A (zh) | 一种融合学术影响力的学者人名消除歧义的方法 | |
Garcia et al. | EPMOSt: An energy-efficient passive monitoring system for wireless sensor networks | |
Li et al. | Mutual or unrequited love: Identifying stable clusters in social networks with uni-and bi-directional links | |
Berlingerio et al. | Finding redundant and complementary communities in multidimensional networks | |
CN105760649A (zh) | 一种面向大数据的可信度量方法 | |
CN106131022A (zh) | 一种网络协同攻击风暴源检测方法及装置 | |
CN105512454A (zh) | 基于功能核磁共振的抑郁症患者自杀风险客观评估模型 | |
Li et al. | Impact of presymptomatic transmission on epidemic spreading in contact networks: A dynamic message-passing analysis | |
Chen et al. | Framework based on communicability to measure the similarity of nodes in complex networks | |
CN112669977B (zh) | 一种干预的seird-ca传染病时空扩散模拟与预测方法 | |
WO2016004744A1 (zh) | 基于复杂对应系统的用户行为一致性度测量方法 | |
CN109919099A (zh) | 一种基于表情识别的用户体验评价方法及系统 | |
Chertkov et al. | Graphical models of pandemic | |
Khan et al. | An empirical validation of object oriented design quality metrics | |
Spoto | Formal psychological assessment theoretical and mathematical foundations | |
Zhou et al. | A method of characterizing network topology based on the breadth-first search tree | |
Volz | Dynamics of infectious disease in clustered networks with arbitrary degree distributions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170426 Termination date: 20200218 |
|
CF01 | Termination of patent right due to non-payment of annual fee |