一种面向对象软件系统类间耦合性度量方法
【专利摘要】本发明公开一种基于复杂网络的面向对象软件系统类间耦合性的度量方法。在面向对象的软件系统中,耦合性是软件中各个类之间相互关联程度的一种度量。为了能够较好地对软件系统中类之间的耦合性进行度量,首先对面向对象的软件系统进行形式化表示,利用波及度对软件系统中的类之间的耦合关系进行分析类在系统中的影响力;然后将劳伦茨曲线与基尼系数的概念并推广至复杂网络中,分析软件网络的异质性;最后提出一种基于复杂网络的软件系统耦合度的度量方法并以抽象实例进行分析。
【专利说明】一种面向对象软件系统类间耦合性度量方法
【技术领域】
[0001]本发明涉及一种软件度量方法,具体是将波及度、劳伦茨曲线与基尼系数的概念并推广至复杂网络中,提出一种基于复杂网络的软件系统耦合度的度量方法并以抽象实例进行分析。属于软件工程技术和复杂网络交叉领域。
【背景技术】
[0002]软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。耦合度是指模块之间联系的紧密程度。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。
[0003]耦合性是软件中各个类之间相互关联程度的一种度量。耦合的强弱取决于类与类之间的复杂性、进入或调用模块的位置、方式以及通过接口传送数据的多少等,在设计软件时应追求尽可能松散耦合的系统。因为对这类系统中任一类的设计、测试、维护相对独立,由于类与类之间联系较少,错误在类与类间传播的可行性也随之变小。随着面向对象技术在系统开发中的广泛应用,面向对象程序的内聚度和耦合度度量方法已成为一个重要的研究课题。
[0004]目前,在软件内聚度和耦合度方面已做了大量的研究工作,并提出了一些度量准则和方法。这些方法虽然有些能很好的应用,但是没有从复杂性科学上加以研究,因此以上的度量方面理论或多或少不够全面。
【发明内容】
[0005]发明目的:本发明所要解决的技术问题在于克服现有技术所存在的度量方法的理论欠缺、不完整,提供一种基于复杂网络的面向对象软件系统类间耦合性度量方法,该方法充分以图论为基础的,把具有复杂系统的类中方法和属性简化成点以及连接点的线段的集合,将波及度、劳伦茨曲线与基尼系数的概念并推广至复杂网络中,提出一种基于复杂网络的软件系统耦合度的度量方法并以抽象实例进行分析。
[0006]技术方案:一种面向对象软件系统类间耦合性度量方法,包括以下步骤:
[0007]步骤A、对基于面向对象的软件系统进行形式化表示,利用波及度对软件系统中的类之间的耦合关系进行分析类在系统中的影响力;
[0008]步骤B、引用劳伦茨曲线与基尼系数的概念,并将其并推广至复杂网络中,分析软件网络的异质性;
[0009]步骤C、根据步骤A和步骤B,提出一种基于复杂网络的软件系统耦合度的度量方法并以抽象实例进行分析。
[0010]步骤A中首先以图论为基础对软性系统类间的网络关系以抽象的形式化表示,然后利用复杂网络的波及度概念分析类间的耦合关系。软件系统网络中的类之间的连接度在一定程度上反映了类在网络中的重要性,一直以来都被作为判断网络结构复杂度的重要指标。但是,类的连接度并不能完全反映该类对其他非直接关联类的影响力以及对整个网络的贡献作用,因此网络对各个类的依赖程度也是评价系统耦合度的一项重要指标。
[0011]步骤B中首先介绍劳伦茨曲线与基尼系数的概念,然后并推广至复杂网络中,分析软件网络的异质性。对于每个节点度值均相等的规则网络来说,异质性最弱。与之相反,每个节点度值越不均匀,异质性越强,网络中大部分节点之间连边数可能很少,而较少部分节点之间的连边数可能很大,此时网络耦合性必定比规则网络耦合性小。
[0012]有益效果:本发明以图论为基础研究类在系统中的影响力并且分析网络的异质性,将波及度、劳伦茨曲线与基尼系数的概念并推广至复杂网络中,提出一种基于复杂网络的软件系统耦合度的度量方法并以抽象实例进行分析。比现有的分析方法更加全面,具有一定的应用价值。
【专利附图】
【附图说明】
[0013]图1为基于复杂网络的面向对象软件系统类间耦合性度量方法流程图;
[0014]图2为洛伦茨曲线;
[0015]图3为复杂网络中的洛伦兹曲线;
[0016]图4为复杂网络中的与类Ci属性相关的洛伦兹曲线。
【具体实施方式】
[0017]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0018]下面根据图1对本发明进行详细阐述。
[0019]一、面向对象软件系统网络耦合性分析
[0020]软件系统网络中的类之间的连接度在一定程度上反映了类在网络中的重要性,一直以来都被作为判断网络结构复杂度的重要指标。但是,类的连接度并不能完全反映该类对其他非直接关联类的影响力以及对整个网络的贡献作用,因此网络对各个类的依赖程度也是评价系统耦合度的一项重要指标。本节主要结合软件系统中类间连边程度和类在系统中的影响力两方面研究分析软件系统的耦合度。
[0021]1.1软件系统中类间连边程度分析
[0022]1.1.1类间的耦合关系
[0023]一个软件系统S = (C1, C2,…,Cn),其中Ci (i = I, 2,…,N)表示面向对象系统的类。对每一个类Ci = (Ai, Mi),其中
【权利要求】
1.一种面向对象软件系统类间耦合性度量方法,其特征在于,包括以下步骤: 步骤A、对基于面向对象的软件系统进行形式化表示,利用波及度对软件系统中的类之间的耦合关系进行分析类在系统中的影响力; 步骤B、引用劳伦茨曲线与基尼系数的概念,并将其并推广至复杂网络中,分析软件网络的异质性; 步骤C、根据步骤A和步骤B,计算软件系统的耦合性。
2.如权利要求1所述面向对象软件系统类间耦合性度量方法,其特征在于,一个软件系统S = (C1, C2,…,Cn),其中Ci (i = I, 2,…,N)表示面向对象系统的类;对每一个类Ci =(AilMi),其中4 =为类Ci的属性,M1 =为类Ci的方法集;则类与类之间的属性集与方法集存在着如下2种耦合关系: (O不同类之间方法与属性的耦合关系 如果类Ci中有方法^/;调用类q中属性A—、,则方法<7;与属性之间的耦合关系表示为 Ajkj -MiIi,其中 kj = I, 2,…nij, Ii = I, 2,…叫; (2)不同类之间方法与方法的耦合关系 如果类Ci中有方法似^调用类中方法—/卩,则方法与方法之间的耦合关系表示为?其中込=I,2,…叫,Ij = I, 2,…η」.; 一个软件系统网络S = (C1, C2,…,Cn),类Ci和类&为一个软件系统中任意两个类:Ci = (Ai, Mi),其中 4 =?4ι,42*.*、4?,.}为类 Ci 的属性集,并且 ki = 1,2,...,ινΜ, = {Μ,15Μ?2,*..,Μ/β(}为类 Ci 的方法集,并且 Ii = 1,2,…,IIi ;Cj = (Aj, Mj),其中4' =为类 Ci 的属性集,并且 kj = l,2,...,mJ;
3.如权利要求2所述面向对象软件系统类间耦合性度量方法,其特征在于, 设节点X,y e V(S), T(y)表示网络S中从节点y开始可以到达的所有节点的集合,即通过类间的耦合关系到达的集合;如果从I到X有一条任意长度的无向图,那么称类X是从类y可达的;在图论中,集合T(V)被定义为给定节点V的可达集,T(v)可以通过计算有向图的传递闭包或者进行深度优先搜索来求得;节点V的波及度定义为集合T(V)中元素的个数,记为 rs(v) = |τ(ν) I ; 对软件系统网络s = (C1, C2,…,Cn),类Ci和类为一个软件系统中任意两个类,分别在网络中对类Ci和类Cj建立与自身的可达集合: T(Ci) = ICi, C」CjPCe是可达的,Ci e S, Ce e S,(;关C」},类Ci的波及度定义为集合T(Ci)中类的个数,记为rs(i) = T(Ci); T (Cj) = {C」,Ce I Ci和Ce是可达的,Ci e S,Ce e S,Ce关Cj,类Cj的波及度定义为集合T(Cj)中类的个数,记为rs(j) = T(Cj) U
4.如权利要求3所述面向对象软件系统类间耦合性度量方法,其特征在于, 软件系统网络S= (C1, C2,…,Cn)中,一共有N个类,网络中边数最大为Ν(Ν-1)/2条,则软件系统中耦合程度为:
5.如权利要求4所述面向对象软件系统类间耦合性度量方法,其特征在于, 对类C的每个属性為JAi =IA…,Iflf),集合OMA1d来记录属性/I,&与其他类中方法所耦合的集合:
【文档编号】G06F17/30GK103761336SQ201410054230
【公开日】2014年4月30日 申请日期:2014年2月18日 优先权日:2014年2月18日
【发明者】顾爱华, 周晓峰 申请人:河海大学