一种基于加权a指数的软件包重要性度量方法_3

文档序号:9727190阅读:来源:国知局
5.1)求步骤(3)所得PDN中所有节点的节点权。节点j的节点权Sj定义为PDN中与 该节点相连的所有边的权重和,即:
[0076]其中,Vj是节点j的邻居节点集合。因此,图13中节点p 1的节点权sPi = 3,p2的节点 权 81)2 = 3+1=443的节点权81)3=1。
[0077] (5.2)求步骤(3)所得TON中节点i的邻居节点集合Vi。因此,若令节点i为图13中的 节点p2,贝lj其邻居节点集合vP2= {pi,p3}。
[0078] (5.3)将^中的节点按其节点权降序排列(若存在节点权相等的情况,则相等的几 个值随机选择一种可能的排序),得到排序后的数组list,list[l]位置存放的是节点权最 大的那个节点,list[ | Vl | ]位置存放的是节点权最小的那个节点(| Vl |为^中节点个数)。因 此,若令节点i为图13中的节点p2,vP2 = {pi,p3}中的节点pi的节点权SP1 = 3,,p3的节点权 sP3 = l,因此可以得到list数组为{pi,p3},即list[l] = pl,list[2] = p3。
[0079]
'算节点i的加权cit指数cit(i)。因此,若令节点i为图
[0080] (6)基于步骤(4)和步骤(5)计算节点i的加权a指数
·因此,对于p2节点,
[0081 ] (7)基于步骤(4)、( 5)和(6)计算PDN中所有节点的加权a指数,作为节点相应包的
[0082]本文中所描述的具体实施例仅仅是对本发明精神作举例说明,实施例中a(pl)和a (P3)的值相等,这只是现实中可能的一种情况,但并不代表所有的情况都是如此。本发明所 属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似 的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
【主权项】
1. 一种基于加权a指数的软件包重要性度量方法,其特征在于,包括以下步骤: (1) 将Java语言编写的软件源代码在特征粒度抽象为特征依赖网FDN= (Nf,Df)。其中, Nf为源代码中特征节点的集合;Df= {(fi, fj)}(fi eNf,fj eNf)是无向边的集合,表示特征间 的依赖关系。 (2) 基于步骤(1)完成的FDN构建类依赖网CDN= (N。,D。,P)。其中,N。为源代码中类节点 的集合;〇。((^已〇。,(^已〇。)是一个无向边的集合,表示类之间的依赖关系;?是一个屮。|\ N。I的矩阵,代表类之间依赖关系的强度矩阵。 (3) 基于步骤⑵完成的CDN构建包依赖网PDN= (NP,DP,PP)。其中具为源代码中包节点 的集合J p(PieDhPjeDp)是一个无向边的集合,表示包之间的依赖关系;Pp是一个I Np I X Np I的矩阵,代表包之间依赖关系的强度矩阵。 (4) 基于步骤(3)完成的PDN计算节点i的加权h指数h (i)。 (5) 基于步骤(3)完成的PDN计算节点i的加权cit指数cit(i)。 (6) 基于步骤(4)和步骤(5)计算节点i的加权a指勠(7) 基于步骤(4 )、( 5)和(6)计算PDN中所有节点的加权a指数,作为节点相应包的重要 性值。2. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(1)中的特征包括了 Java源代码中的属性和方法。3. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(1)中特征间的依赖关系包括了方法间的调用关系和方法对属性的使用关系。4. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(2)中的类包含了 Java中的类、内部类、抽象类和接口。5. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(2)中类之间的依赖关系是根据类包含的特征间的依赖关系得到的,即类包含的 特征间具有依赖关系,则相应的类之间也存在依赖关系。6. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(3)中包之间的依赖关系是根据包所包含的类之间的依赖关系得到的,即包所包 含的类间具有依赖关系,则相应的包之间也存在依赖关系。7. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(2)中CDN的构建具体包括以下子步骤: (2.1) 提取Java语言编写的源代码中的所有类,构建一个只有节点没有边的CDN,即CDN =(Nc,Φ,P)。Φ代表边集为空,同时P是一个零矩阵。 (2.2) 取步骤(I)Df中的一条边出上)EDf,根据源代码得到心和心所定义的类,若心在 类k中定义,fj在类p中定义,若k矣p,则将(k,p)加入D。,同时步骤(2.1)中P相应位置的P(k, P)自加1;若k与p相等,则不做任何处理。 (2.3) 重复步骤(2.2 ),直到遍历完FDN中的所有边。8. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(3)中TON的构建具体包括以下子步骤: (3.1)提取Java语言编写的源代码中的所有包,构建一个只有节点没有边的PDN JPTON =(NP,Φ,Pp)。Φ代表边集为空,同时?[)是一个零矩阵。 (3.2) 取步骤(2)0。中的一条边((:1,(^)60。,根据源代码得到(31和(^所定义的包,若(3 1在 包k中定义,Cj在包ρ中定义,若k矣ρ,则将(k, ρ)加入Dp,同时步骤(3.1)中Pp相应位置的Pp (让,口)加上?(;[,」);若1^与?相等,则不做任何处理。 (3.3) 重复步骤(3.2),直到遍历完⑶N中的所有边。9. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(4)中节点i的加权h指数h (i)的计算具体包括以下子步骤: (4.1) 求步骤(3)所得TON中所有节点的节点权。节点j的节点权Sj定义为TON中与该节点 相连的所有边的权重和,即:其中,Vj是节点j的邻居节点集合。 (4.2) 求步骤(3)所得PDN中节点i的邻居节点集合Vl。 (4.3) 将^中的节点按其节点权降序排列(若存在节点权相等的情况,则相等的几个值 随机选择一种可能的排序),得到排序后的数组list,list[l]位置存放的是节点权最大的 那个节点。 (4.4) 从list[1]开始,依次遍历list列表中的每个节点list[q],找到第一个满足节点 权小于(n+1)的节点I ist [n+1 ],则节点i的加权h指数h(i)为η。10. 根据权利要求1所述一种基于加权a指数的软件包重要性度量方法,其特征在于,所 述的步骤(5)中节点i的加权c i t指数c i t (i)的计算具体包括以下子步骤: (5.1) 求步骤(3)所得TON中所有节点的节点权。节点j的节点权Sj定义为TON中与该节点 相连的所有边的权重和,即:其中,Vj是节点j的邻居节点集合。 (5.2) 求步骤(3)所得PDN中节点i的邻居节点集合Vi。 (5.3) 将^中的节点按其节点权降序排列(若存在节点权相等的情况,则相等的几个值 随机选择一种可能的排序),得到排序后的数组list,list[l]位置存放的是节点权最大的 那个节点,list[ I Vl I ]位置存放的是节点权最小的那个节点(I Vl I为^中节点个数)。 (5.4) 根据计算节点i的加权c i t指数c i t (i)。
【专利摘要】本发明公开了一种基于加权a指数的软件包重要性度量方法,包括以下步骤:将Java语言编写的软件源代码在特征粒度抽象为特征依赖网;基于特征依赖网构建类依赖网;基于类依赖网构建包依赖网;基于包依赖网计算节点的加权h指数;基于包依赖网计算节点的加权cit指数;基于节点的加权h指数和加权cit指数计算节点的加权a指数,并以节点的加权a指数作为包重要性的度量指标。本发明弥补了现有技术鲜有涉及包重要性度量的不足,对于理解软件,提高代码维护效率具有重要意义。
【IPC分类】G06F9/45
【公开号】CN105487913
【申请号】CN201510958716
【发明人】潘伟丰, 宋贝贝, 徐红伟, 姜波, 谢波, 王家乐
【申请人】浙江工商大学
【公开日】2016年4月13日
【申请日】2015年12月18日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1