• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 12
    • 下载费用:30 金币  

    外围重庆时时彩龙虎和: 一种面向对象软件系统类的内聚度度量方法.pdf

    关 键 词:
    一种 面向 对象 软件 系统 内聚度 度量 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201410054093.6

    申请日:

    2014.02.18

    公开号:

    CN103793230A

    公开日:

    2014.05.14

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20140218|||公开
    IPC分类号: G06F9/44; G06F17/30 主分类号: G06F9/44
    申请人: 河海大学
    发明人: 顾爱华; 周晓峰
    地址: 210098 江苏省南京市鼓楼区西康路1号
    优先权:
    专利代理机构: 南京苏高专利商标事务所(普通合伙) 32204 代理人: 李玉平
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410054093.6

    授权公告号:

    ||||||

    法律状态公告日:

    2017.04.26|||2014.06.11|||2014.05.14

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明公开一种基于复杂网络的面向对象软件系统类的内聚度度量方法。该方法结合复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大。同时对不连通的子图,按各个子图节点数在总子图节点数比例的乘积计算整个网络的内聚度。通过上述方法分别分析面向对象软件系统的类中的属性与属性之间网络的内聚度;方法与方法之间网络的内聚度;方法与属性之间网络的内聚度,最后根据软件系统的情况设定上述三种关系的权重计算该类的内聚度。相比现有技术,本发明具有更好的度量效果和实际的应用价值。

    权利要求书

    权利要求书
    1.  一种面向对象软件系统类的内聚度度量方法,其特征在于,包括以下步骤:
    步骤A、对类中的属性与属性之间网络,利用复杂网络理论进行分析计算其内聚度;
    步骤B、对类中的方法与方法之间网络,利用复杂网络理论进行分析计算其内聚度;
    步骤C、对类中的方法与属性之间网络,利用复杂网络理论进行分析计算其内聚度;
    步骤D、根据步骤A步骤B和步骤C得到的值设定各个权重计算类的内聚度。

    2.  如权利要求1所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤A中利用复杂网络的小世界模型和结构熵理论,即集群系数越大、平均距离越小,并且度分布越均匀,则内聚度越大;网络中的平均最短路径长度L定义为任何两个节点之间距离的平均值,即假设网络中的一个节点i有ki条边将它和其他节点相连,这ki个节点之间实际存在的边数Ei和总的可能的边数ki(ki-1)/2之比就定义为节点i的集群系数Ci,即
    Ci=2Ei/ki(ki-1);记网络联结强度则网络结构熵定义为:
    其中同时对属性与属性之间的网络中不连通的子图,按子图节点数目在总子图节点数比例的乘积计算整个网络的内聚度。

    3.  如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤B采用与步骤A同样的方法计算类中方法与方法之间网络的内聚度。

    4.  如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,步骤C采用与步骤A同样的方法计算类中方法与属性之间网络的内聚度。

    5.  如权利要求2所述面向对象软件系统类的内聚度度量方法,其特征在于,类的属性间的内聚度主要是指类中属性之间关系的密切程度;为了度量这种关系,对类中的每个属性Ai(i=1,2,...,m),引入一个集合AID来记录属性Ai所依赖 的其它属性的集合:AID(Ai)={Aj|Ai和Aj有依赖关系,且Ai≠Aj};AID(Ai)={Aj|Ai∈A,if<Ai,Aj>∈GAA}
    ρ(Ai)=|AID(Ai)|/Σk=1m|AID(Ak)|]]>
    式中,|AID(Ai)|表示集合AID(Ai)中元素的个数;
    则类C的属性间结构熵为:
    HAA=-Σmi=1ρ(Ai)lnρ(Ai)]]>
    子图AAG中,一个节点的集群系数也可以记为:
    CAAi=2EAAi/(|AID(Ai)|×|(AID(Ai)-1)|)
    其中EAAi表示子图AAG中节点Ai的邻点之间的连边数;
    子图AAG中,平均距离定义为网络中所有节点对之间测地线长的平均值
    LAA=Σi≠jdij/m(m-1)]]>
    其中边数dij就称为AAG中的Ai,Aj之间的距离
    类C的属性间内聚度可定义为:
    Cohesion(A_A)=-(1/LAA)×Σi=1m(CAAi×(ρ(Ai)lnρ(Ai)/lnm))=-(2m(m-1)/Σi≠jdij)×Σi=1m((EAAi/|AID(Ai)|×|(AID(Ai)-1)|)×(ρ(Ai)lnρ(Ai)/lnm)).]]>

    6.  如权利要求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。

    说明书

    说明书一种面向对象软件系统类的内聚度度量方法
    技术领域
    本发明涉及一种软件度量方法,具体是一种利用复杂网络的小世界模型和结构熵进行类的内聚度度量方法,属于软件工程技术和复杂网络交叉领域。
    背景技术
    软件工程的目标是开发新技术和工具提高软件质量,使其更加稳定并且易于维护。为了评估和提高在开发过程中的软件质量,程序开发人员和管理人员使用一些指标,这些指标估计不同软件的一些属性,比如内聚度、耦合度和复杂度。内聚度是指??槟诓扛鞒煞种涞牧崆慷?,是一种主要的软件质量指标,内聚度越高,越容易理解、修改和维护。然而内聚度本身是主观的、非形式化的概念,人们很难客观地评估一个??榈哪诰鄱?。
    在面向对象程序设计语言中,类支持数据抽象、封装和继承等面向对象特征的基本概念。类是面向对象的基本单位程序,它定义了表示状态的属性集和表示行为的方法集。因此,在面向对象程序中,内聚度主要是指一个类或一个对象内部属性和方法之间的联结强度。
    1998年,Briand[L.C.Briand,J.Daly,J.Wuest,A unified framework for cohesion measurement in object-oriented systems,Empirical Software Engineering,An International Journal3(1)(1998)65–117]定义了类内聚度度量的四种数学特征,给内聚度度量提供理论支持。(1)Nonnegativity and Normailization,以内聚度的度量值属于特点的区域[0,MAX]。这种理论能够很容易的比较度量不同类的内聚度;(2)Null value and maximum value,如果类中的方法和属性之间没有任何关系,则为Null value;如果类中的方法和属性之间所有可能的联结都用了,则为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种依赖关系:属性与属性之间的依赖关系;方法与方法之间的依赖关系;方法与属性之间的依赖关系。并且各种依赖关系都存在着传递性?;谏鲜?种依赖关系,可以构造类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}
    ρ(Ai)=|AID(Ai)|/Σk=1m|AID(Ak)|]]>
    式中,|AID(Ai)|表示集合AID(Ai)中元素的个数。
    则类C的属性间结构熵为:
    HAA=-Σi=1mρ(Ai)lnρ(Ai)]]>
    子图AAG中,一个节点的集群系数也可以记为:
    CAAi=2EAAi/(|AID(Ai)|×|(AID(Ai)-1)|)
    其中EAAi表示子图AAG中节点Ai的邻点之间的连边数。
    子图AAG中,平均距离定义为网络中所有节点对之间测地线长的平均值LAA=Σi&NotEqual;jdij/m(m-1)]]>
    其中边数dij就称为AAG中的Ai,Aj之间的距离
    类C的属性间内聚度可定义为:
    Cohesion(A_A)=-(1/LAA)×Σi=1m(CAAi×(ρ(Ai)lnρ(Ai)lnm))=-(2m(m-1)/Σi&NotEqual;jdij)×Σi=1m((EAAi/|AID(Ai)|×|(AID(Ai)-1)|)×(ρ(Ai)lnρ(Ai)/lnm))]]>
    (2)方法间的内聚度度量
    类的方法间的内聚度主要是指类中方法之间关系的密切程度,为度量这种关系,对类中的每个方法Mi(i=1,2,...,n),引入一个集合MID来记录方法Mi所依赖的其它方法的集合:MID(Mi)={Mj|Mi和Mj有依赖关系,且Mi≠Mj}。
    ρ(Mi)=|MID(Mi)|/Σk=1n|MID(Mk)|]]>
    式中,|MID(Mi)|表示集合MID(Mi)中元素的个数。
    则类C的方法间结构熵为:
    HMM=-Σni=1ρ(Mi)lnρ(Mi)]]>
    子图MMG中,一个方法节点的集群系数也可以记为:
    CMMi=2EMMi/(|MID(Mi)|×|(MID(Mi)-1)|)
    其中EMMi表示子图MMG中节点Mi的邻点之间的连边数。
    子图MMG中,平均距离定义为网络中所有节点对之间测地线长的平均值,
    LMM=Σi&NotEqual;jdij/n(n-1)]]>
    其中边数dij就称为MMG中的Mi,Mj之间的距离
    类C的方法间内聚度可定义为:
    Cohesion(M_M)=-(1/LMM)×Σi=1n(CMMi×(ρ(Mi)lnρ(Mi)/lnn))=-(2n(n-1)/Σi&NotEqual;jdij)×Σi=1n(EMMi/(|MID(Mi)|×|(MID(Mi)-1)|))×(ρ(Mi)lnρ(Mi)/lnn))]]>
    (3)属性与方法间的内聚度度量
    类的属性与方法间的内聚度主要是指类中的方法对属性的依赖程度。为了度量这种关系,对类C的每个方法Mi(i=1,2,...,n),引入一个集合MAID来记录方法Mi所依赖的属性的集合:MAID(Mi)={Aj|Mi和Aj有依赖关系}。
    ρ(MAi)=|MAID(MAi)|/Σk=1n|MAID(MAk)|]]>
    式中,|MAID(MAi)|表示集合MAID(MAi)中元素的个数。
    则类C的属性与方法间结构熵为:
    HMA=-Σi=1nρ(MAi)lnρ(MAi)]]>
    子图MAG中,一个方法节点的集群系数也可以记为:
    CMAi=2EMAi/(|MAID(MAi)|×|(MAID(MAi)-1)|)
    其中EMAi表示子图MAG中节点Mi的邻点之间的连边数。
    子图MAG中,平均距离定义为网络中所有节点对之间测地线长的平均值,
    LMA=Σi&NotEqual;jdij((m+n)×(m+n-1))]]>
    其中边数dij就称为MAG中的Mi,Mj之间的距离
    类C的属性与方法间内聚度可定义为:
    Cohesion(M_A)=-(1/LMA)×Σi=1nCMAi×(ρ(MAi)lnρ(MAi)/lnn)=-(2(m+n)×(m+n-1)/Σi&NotEqual;jdij)×Σi=1n((EMAi/(|MAID(MAi)|×|(MAID(MAi)-1|))×(ρ(MAi)lnρ(MAi)/lnn))]]>
    Cohesion(A_M)=-(1/LAM)×Σi=1mCAMi(ρ(AMi)ln(ρ(AMi)lnρ(AMi)/lnm)=-(2(m+n)×(m+n-1)/Σi&NotEqual;jdij)×Σi=1m((EAMi/(|MAID(AMi)|×|(MAID(AMi-1)|))×ρ(AMi)lnρ(AMi)/lnm))]]>
    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)=-1LMAΣi=1nCMAi×ρ(MAi)lnρ(MAi)lnn=-(56/49)×((1/3)×(1/2)×ln(1/2)/ln3+(2/3)×(3/8)×ln(3/8)/ln3+0×(1/8)×ln(1/8)/ln3)=0.3753]]>
    CohesionA(A_M)=-1LMAΣi=1nCMAi×ρ(AMi)lnρ(AMi)lnn=-(56/49)×(2×0×(1/8)×ln(1/8)/ln5+2×1×(1/4)×ln(1/4)/ln5+0×(1/4)×ln(1/4)/ln5)=0.4922]]>
    Cohesion(M-A)=Cohesion(M_A)+Cohesion(A_M)=0.8675
    同样的利用上述属性与属性之间网络分析方法计算的结果如表3所示。其中平均最短距离为13/20。
    表3属性与属性之间网络关系

    Cohesion(A_A)=-(1/LAA)×Σi=1m(CAAi×(ρ(Ai)lnρ(Ai)/lnm))=-(2m(m-1)/Σi&NotEqual;jdij)×Σi=1m((EAAi/|AID(Ai)|×|(AID(Ai)-1)|)×(ρ(Ai)lnρ(Ai)/lnm))=-(20/13)×(0+0+2×1/3×1/4×ln(1/4)/ln5+1×1/6×ln(1/6)/ln5)=0.5062]]>
    由于方法与方法之间的网络为二个子图,并且没有集群系数,因此没内聚可言。假定三种权重为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
    本发明利用复杂网络的平均距离、集群系数和结构熵指标,较全面地分析类的内聚度,具有很好的度量效果。

    关于本文
    本文标题:一种面向对象软件系统类的内聚度度量方法.pdf
    链接地址://www.4mum.com.cn/p-6185419.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 现在什么微能赚钱 快乐10分投注技巧 兼职答题赚钱是什么 贵州快三玩法中奖规则 现在超市靠什么赚钱 北京pk赛车四码好方法 开心农场2中文版 大乐透走势图100期 彩盛logo 排三五码组六最六最大遗漏 竞彩自由过关投注选项 老地方棋牌怎么代理 歌手节目怎么赚钱 网上棋牌赌博能赢钱吗 微信怎么赚钱入银行卡 美国拳击比赛wwe