推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于软件网络加权k-核分析的关键类识别方法

更新时间:2019-12-25 10:06:28 大小:1003K 上传用户:守着阳光1985查看TA发布的资源 标签:软件网络加权 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

识别关键类可以帮助人们尽快理解不熟悉的软件系统.尽管目前已有一些关键类识别方面的工作,但是大部分方法构建的依赖图是无权的,未考虑类之间交互的种类及次数.有鉴于此,提出了一种基于软件网络加权k-核分析的关键类识别方法.首先,用加权类耦合网络抽象类(接口)、类(接口)间的交互及其次数;然后,引入加权k-核分解方法计算类的加权核数;最后,以加权核数作为类重要性的量度指标,降序排列所有类,并通过过滤得到候选关键类.真实软件上的数据实验验证了本文方法的有效性.


部分文件列表

文件名 大小
基于软件网络加权k-核分析的关键类识别方法.pdf 1003K

部分页面预览

(完整内容请下载后查看)
5
Vol. 46 No. 5  
May 2018  
第
期
电
子
学
报
2018  
5
ACTA ELECTRONICA SINICA  
年
月
k-  
基于软件网络加权 核分析的  
关键类识别方法  
1
1
2
3
1
, , , ,  
潘伟丰 宋贝贝 胡 博 李 兵 姜 波  
( 1.  
,
浙江工商大学计算机与信息工程学院 浙江杭州  
310018; 2.  
,
金蝶国际软件集团金蝶研究院 广东深圳  
518057;  
3.  
,
武汉大学国际软件学院 湖北武汉  
430072)  
:
. ,  
识别关键类可以帮助人们尽快理解不熟悉的软件系统 尽管目前已有一些关键类识别方面的工作 但  
摘
要
, . ,  
是大部分方法构建的依赖图是无权的 未考虑类之间交互的种类及次数 有鉴于此 提出了一种基于软件网络加权  
k-  
. , ( ) 、 ( ) ; , k-  
核分析的关键类识别方法 首先 用加权类耦合网络抽象类 接口 类 接口 间的交互及其次数 然后 引入加权 核  
; , , ,  
分解方法计算类的加权核数 最后 以加权核数作为类重要性的量度指标 降序排列所有类 并通过过滤得到候选关键  
.
类 真实软件上的数据实验验证了本文方法的有效性  
.
:
;
k-  
;
;
关键词  
中图分类号  
URL: http: / /www. ejournal. org. cn  
关键类 加权 核分解 软件网络 程序理解  
:
TP311. 5  
:
A
: 0372-2112 ( 2018) 05-1071-07  
DOI: 10. 3969 /j. issn. 0372-2112. 2018. 05. 007  
文献标识码  
文章编号  
电子学报  
Identifying Key Classes Based on Weighted  
k-Core Analysis of Software Networks  
1
1
2
3
1
PAN Wei-feng ,SONG Bei-bei ,HU Bo ,LI Bing ,JIANG Bo  
( 1. School of Computer Science and Information Engineering,Zhejiang Gongshang University,Hangzhou,Zhejiang 310018,China;  
2. Kingdee Research,Kingdee International Software Group Co. Ltd,Shenzhen,Guangdong 518057,China;  
3. International School of Software,Wuhan,Hubei 430072,China)  
Abstract: Identifying key classes can help software engineers understand software systems that they previously were  
not familiar with. Though there are some methods on the identification of key classes,a majority of them use un-weighted  
dependency graphs,neglecting the coupling types and frequencies. In this paper,we propose a method to identify the key  
classes based on weighted k-core analysis of software networks. First,it uses a weighted class coupling network to represent  
classes ( interfaces) and their couplings and coupling frequencies. Then,we introduce the weighted k-core decomposition  
method to compute the weighted coreness for each class ( interface) . Finally,we use the weighted coreness to quantify the  
importance of classes ( interfaces) and sort them in a descending order with respect to their weighted corenesses. And the  
top-ranked classes ( interfaces) will serve as the key class candidates. Empirical results show the effectiveness of our ap-  
proach.  
Key words: key class; weighted k-core decomposition; software network; program comprehension  
、
变得异常复杂而分配给维护的人力 物力等资源又比  
1
引言  
, .  
较稀缺的时候 理解软件更是难上加难 类是面向对象  
[6]  
,
软件维护是软件生存期中一项频繁进行的活动  
,
软件的基本组成单元 是理解和维护的主要对象  
.
关
[1]  
,
自其第一个版本发布之后便开始  
占了软件总预算  
,
键类作为实现系统核心功能的类 更是软件理解的重  
[2]  
[3,4]  
90%  
.
,
要维护软件 首先必须理解软件  
.
然
的
以上  
[5,6]  
.
点
选择从关键类开始分析和理解软件已成为理解  
[5]  
,
而理解软件并不是一件容易的事情  
特别是当软件  
[5 ~ 10]  
.
,
因此 提供有效的技  
复杂软件的有效方式之一  
: 2016-11-16;  
: 2017-04-13;  
:
责任编辑 蓝红杰  
收稿日期  
修回日期  
:
基金项目 国家自然科学基金  
( No. 61572371) ;  
( No. LY15F020004) ;  
( No. 2014C23008)  
浙江省科技厅公益技术研究项目  
浙江省自然科学基金  
1072  
2018  
年
电
子
学
报
, , ,  
术 识别软件中的关键类 对于分析和理解软件 进而控  
; ;  
结构信息 用加权网络形式化的表示软件的结构信息 引  
.
k-  
入加权 核分解方法计算网络中类节点的加权核数用以  
制和降低维护费用具有重要意义  
, ,  
目前 软件关键类识别方面已有一些工作 但是仍  
, ,  
量度类的重要性 并按照加权核数降序排列类节点 过滤  
[7]  
. Inoue  
( component  
等 人 使 用 构 件 图  
然比 较 欠 缺  
graph)  
.
得到候选关键类 以下各小节将详述各主要部分  
.
,
抽象构件及构件间的使用关系 并使用  
PageRank  
2. 1  
软件结构信息提取  
Java  
我们主要以开源的  
,
算法的一个修改版本计算节点及边的权重 实现构件  
.
软件作为研究对象 软件  
[8]  
,
. Zaidman  
Demeyer  
排序 最终用于构件检索  
行一组测试用例收集软件的执行轨迹 进而构建类依  
HITS( hyperlink-  
和
通过运  
ICAN  
,
方法的第一步 指从软件的源代  
结构信息提取是  
( . java  
,
) ( 、 、  
文件 中提取各类软件元素 类 接口 属性  
、
码
,
赖图并计算动态耦合度量值 最后利用  
、 ) ( 、  
方法 局部变量等 和元素间的交互 类间继承 类对接  
induced topic search)  
.
算法识别关键类 该方法在识别关  
、 ) .  
口的实现 方法调用等 及其次数 结构信息的提取由  
, .  
键类上准确度较高 但是其时间和空间开销比较大 在  
SNAP( software net-  
我们自主研发的软件网络分析平台  
[5]  
[11]  
,Zaidman  
此基础上  
度量的关键类识别方法 通过构建静态类依赖图并使  
HITS  
等人 进一步提出了一种基于静态  
work analysis platform)  
(
实现 由文献 中的  
[11] SSQAT  
,
) . SNAP  
,
可以提取软件的结构信息 还可以实  
更名而来  
现一系列的网络分析及可视化  
2. 2  
,
算法识别关键类 在一定程度上缓解了空间开  
用
.
[9]  
, .  
销 但时间开销仍然比较大 周毓明等人 用类依赖图  
加权软件网络模型  
,
抽象类及类间依赖关系 分别使用  
PageRank 、HITS  
算法  
[4]  
,
主
软件结构是影响软件质量的重要因素之一  
[10]  
. ,  
和介数中心性识别关键类 在此基础上 周毓明等人  
[11]  
,
要包括软件元素及元素间的交互  
表现为一种内部  
h a  
进一步使用 指数及其衍生指数 指数量度类的重要  
.
互连的复杂网络拓扑的形态 我们将构建类粒度的加  
[6]  
, .  
性 取得了较好的效果 姜淑娟等人 用状态转换模型  
.
权软件网络形式化的抽象软件的拓扑结构信息  
,
抽象软件 并通过求解转换模型的唯一输入输出序列  
1
( weighted class coupling  
定义  
加权类耦合网络  
,
构造状态转换树 最后通过计算状态转换树节点的复  
network,WCCN) :  
.
杂度来量度类的重要性  
WCCN = ( N,E,P) ,  
( 1)  
,
我们发现 上述工作提出的方法都包含两个关键  
,N , (  
其中 是网络的节点集 抽象软件中的类或接口 在  
: .  
步骤 依赖图的构建和类重要性的量度 大部分方法构  
,
不特别说明时 下文的类也包含了接口  
) . E  
是网络的边  
,
建的依赖图是无权的 未考虑类之间交互的种类及次  
, . P ,  
集 表示类节点间的交互关系 是一个对称矩阵 存储  
. [10]  
数 尽管周毓明等人在文献 中考虑了类间交互的  
, : i j  
类间是否存在交互及交互的次数 即 若类 和类 之间  
, 、  
种类及次数 但他们仅考虑了类间由于继承 方法参数  
、
, n , WCCN  
存在交互 且交互了 次 则 中相应的节点间存  
,
成员属性和方法返回值类型产生的交互 忽略了类间  
( j,i) ( ( i,j) ( j,i)  
边 与  
) ,  
是同一条边 边权  
在一条无向边  
,
由于方法调用和局部变量产生的交互 也未考虑接口  
P( i,j) = P( j,i) = n;  
i j ,  
若类 和类 间不存在交互 则  
. ,  
及类与接口间由于实现产生的交互 同时 他们的方法  
P( i,j) = P( j,i) = 0. Java  
, i j 7  
软件中 类 和类 在以下 种  
, ,  
在计算交互次数时 采用了简化处理 所得次数不太精  
[12]  
.
情况下会发生交互  
. , ,  
确 但是 从他们的结果可见 采用了加权依赖图得到的  
( 1)  
: i extends  
继承关系 如果类 通过关键字 继承另  
[5,8]  
Zaidman  
.
提出的静态方法  
结果要优于  
有鉴于此 本文提出了一种基于软件网络加权  
ICAN( Identifying key Classes  
等人  
j,  
外一个类 反之亦然  
.
,
k-  
核
( 2)  
: i  
实现关系 如果类 通过关键字  
implements  
实
分析的关键类识别方法  
j.  
现了一个接口  
( 3)  
based on weighted k-core Analysis of software Networks) .  
: i  
形参关系 如果类 中的某一方法使用了类  
j
ICAN  
( ) 、 ( )  
用加权软件网络模型抽象类 接口 类 接口 间  
,
的引用作为形式参数 反之亦然  
.
; , k-  
的交互及其次数 同时 引入加权 核分解方法挖掘软  
( 4)  
: i  
成员属性关系 如果类 具有一个类型为类  
j
;
件网络的层次结构进而得到类节点的加权核数 最终  
,
,
的成员属性 反之亦然  
.
, ,  
以加权核数为排序标准 降序排列所有类节点 并通过  
( 5)  
: i  
方法调用关系 如果类 中的某一方法调用了  
. ,  
过滤得到排名靠前的候选关键类 数据实验部分 我们  
j ,  
类 对象的一个方法 反之亦然  
.
ICAN Ant - 1. 6. 1 JMeter -  
方法运用于开源软件 和  
将
( 6)  
: i  
局部变量关系 如果类 中的某一方法内定义  
2. 0. 1  
, ,  
的关键类识别中 并与相关方法进行比较 验证  
j ,  
了一个以类 为类型的局部变量 反之亦然  
.
.
了本文方法的有效性  
( 7)  
: i  
方法返回值关系 如果类 中的某一方法的返  
2
ICAN  
方法  
j ,  
回值是类 的对象 反之亦然  
.
ICAN  
3 :  
方法主要包含 个部分 解析源代码获得软件  
,
两个类之间可能同时存在不止一种的交互 同一  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载