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

基于相关主题模型的程序网络自动构建与分析

更新时间:2019-12-25 03:15:54 大小:791K 上传用户:zhiyao6查看TA发布的资源 标签:程序网络自动构建 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

程序理解的目的在于获得足够的软件系统信息,以适用于人理解的形式展现出来,辅助开发人员对软件的理解.本文通过使用相关主题模型,为软件系统类层次的代码文件建立程序网络,并可视化展示整个软件系统的相关结构和功能,辅助开发者理解整个程序代码.该技术综合考虑了软件代码中的结构性信息和内容性信息,所建立的程序网络可帮助开发者更好的理解程序的语法依赖关系和语义功能相关关系.实验验证了建立的程序网络具有较好的准确性以及可以为指定的类推荐相关类.


部分文件列表

文件名 大小
基于相关主题模型的程序网络自动构建与分析.pdf 791K

部分页面预览

(完整内容请下载后查看)
5
Vol. 45 No. 5  
May 2017  
第
期
电
子
学
报
2017  
5
ACTA ELECTRONICA SINICA  
年
月
基于相关主题模型的  
程序网络自动构建与分析  
1,2  
1
1,2  
1
, , ,  
孙小兵 刘湘月 李 斌 张伟佳  
( 1.  
,
扬州大学信息工程学院 江苏扬州  
225127; 2.  
,
南京大学计算机软件新技术国家重点实验室 江苏南京  
210023)  
:
, ,  
程序理解的目的在于获得足够的软件系统信息 以适用于人理解的形式展现出来 辅助开发人员对软  
摘
要
. , ,  
件的理解 本文通过使用相关主题模型 为软件系统类层次的代码文件建立程序网络 并可视化展示整个软件系统的  
, . ,  
相关结构和功能 辅助开发者理解整个程序代码 该技术综合考虑了软件代码中的结构性信息和内容性信息 所建立  
.
的程序网络可帮助开发者更好的理解程序的语法依赖关系和语义功能相关关系 实验验证了建立的程序网络具有较  
.
好的准确性以及可以为指定的类推荐相关类  
:
;
;
关键词  
中图分类号  
URL: http: / /www. ejournal. org. cn  
程序理解 相关主题模型 程序网络  
:
TP311  
:
A
: 0372-2112 ( 2017) 05-1052-05  
DOI: 10. 3969 /j. issn. 0372-2112. 2017. 05. 004  
文献标识码  
文章编号  
电子学报  
On Automatic Construction and Analysis of  
Program Network via Relational Topic Model  
1,2  
1
1,2  
1
SUN Xiao-bing ,LIU Xiang-yue ,LI Bin ,ZHANG Wei-jia  
( 1. School of Information Engineering,Yangzhou University,Yangzhou,Jiangsu 225127,China;  
2. State Key Laboratory for Novel Software Technology,Nanjing University,Nanjing,Jiangsu 210023,China)  
Abstract: Program comprehension aims to obtain enough information in the software system to promote the compre-  
hension of the target software. This paper proposes a novel technique,which uses relational topic model ( RTM ) to model  
code ( class-level) documents in the software system into a program network. Then,the program network is visualized to  
help developers understand the whole software. The advantage of RTM is that it takes into account both the structural and  
textual information in the software system,which enables developers to fully understand the syntax dependence and semantic  
functional relationship in the program. The empirical results show that the program network is more accurate to model the re-  
lation among different classes,moreover,it is able to recommend relevant classes for a given class to understand a local part  
in the program.  
Key words: program comprehension; relational topic model; program network  
[2,3]  
.
偏差  
1
引言  
,
软件系统经过长时间的运行和升级 使得遗留软  
,
软件维护是软件生存期中时间最长 消耗人力最  
,
件系统中包含了众多杂乱的信息 并且在此期间一个  
[1]  
.
多的一个阶段  
软件维护通常需要对持久演化的大  
,
软件项目可能经历了很多不同的程序员 各种各样的  
,
型遗留软件系统进行理解和再开发 这要求开发人员  
, .  
编程风格 代码难以避免的变得复杂和难以理解 因此  
,
.
能够充分的理解软件项目 而软件理解对于开发者来  
能有效辅助软件理解的主要是依赖于当前系统所对应  
, , ,  
说 需要耗费很多的时间和精力 特别是程序源码 从而  
.
的程序代码  
,
导致维护任务变得相当困难 代价高并且很可能出现  
,
程序代码的理解通常包括两方面的理解 一方面  
: 2015-12-25;  
: 2016-05-25;  
:
责任编辑 马兰英  
收稿日期  
修回日期  
:
基金项目 国家自然科学基金  
( No. 61402396,No. 61472344) ;  
( No. 13KJB520027) ;  
南京大学计算机软件新技术国家  
江苏省教育厅自然科学基金  
( No. KFKT2016B21) ;  
重点实验室开放基金  
江苏青蓝工程  
1053  
5
:
孙小兵 基于相关主题模型的程序网络自动构建与分析  
第
期
; .  
是程序语义的理解 另一方面是程序语法的理解 程序  
语义主要关注程序中有哪些功能以及这些功能间的相  
;
关性 程序语法主要关注程序中的各个功能是怎么实  
[4]  
. ,  
现的 本文使用相关主题模型 建立程序网络 该程序  
( ) ,  
网络建立了程序元素 类 间的语法和语义关系 并以  
,
可视化的角度展示出软件程序中类的结构 为开发者  
.
理解程序提供帮助 相关主题模型是一个关于文件属  
,
性和网络结构的模型 为分析与理解文档网络提供便  
,
利 该模型同时考虑到了文档的内容与文档间的联系  
.
,
因此 使用相关主题模型创建的网络中的边既考虑到  
,
行处理 这样得到预处理之后的数据  
.
( ) ,  
类之间结构性 语法 的联系 也将类之间功能上的联  
3. 2  
相关主题模型建模  
,
使用相关主题模型建模前 需提取出代表类内容  
( ) ,  
系 语义 展示出来 为理解与维护软件系统提供新的  
.
条件  
,
的语义信息和代表类关系的语法结构信息 其中语义  
2
,
信息的形式为词频矩阵 结构信息是代码元素之间的  
相关主题模型  
; ,  
依赖关系矩阵 最后 基于这些关系使用相关主题模型  
相关主题模型是一个关于文件属性和网络结构的  
.
生成生成联系概率矩阵  
3. 2. 1  
语义信息代表了文档的内容 是从文档中提炼出  
, . ,  
模型 为分析与理解文档网络提供帮助 此外 给出一个  
语义信息  
,
新节点及其联系 相关主题模型可以提供预测性的关  
,
.
于结点属性的分布情况  
.
的可以代表该文档的词汇 上面预处理之后的信息被  
,
相关主题模型在各个领域已有成功的应用 包括  
M × N  
,
;
存储在一个  
,M  
的矩阵中 这个矩阵称作词频矩阵  
,N  
是软件系统中  
,
识别社交网络中潜在的好友 得出一个科学性论文的  
[4]  
其中  
是出现在类中的单词的数量  
,
所有引用 定位一个网页的相关网页  
,
以及在软件工  
.
类的数量 在本文中使用该矩阵作为文档的语义信息  
.
,
程中也有一定的应用 如  
Bavota  
等人提出了利用相关  
,
相关主题模型会计算词频矩阵中单词的权重 以  
,
主题模型进行重构识别的方法 该方法从语法和语义  
.
求得能代表类文档的主题集 相关主题模型使用的衡  
,
的角度为方法之间建立联系从而辅助方法的重构 识  
[4]  
[5]  
tf-idf  
. tf-idf  
用以评估一单词对于一  
量算法称作  
个文件集或一个语料库中的其中一份文件的重要程  
. tf idf  
算法  
. Gethers  
别模块化的类  
等人将类用相关主题模型建  
,
模后的联系结果作为新型的耦合衡量标准 然后基于  
[6]  
;
度
描述的是文档中词出现的频率 而  
是和词出现  
. Liu  
该耦合结果支持修改影响分析  
题模型为软件系统建立基于语义的理解模型  
文将基于语法和语义利用相关主题模型建立类之间的  
等人利用相关主  
[7]  
.
文档数相关的权重 使用  
tf-idf  
算法处理过的词频矩阵  
.
而本  
.
将作为代表软件系统的语义信息的模型进行处理  
3. 2. 2  
结构信息  
,
关系程序网络 辅助程序理解  
.
[5,6]  
Bavota  
本文参照  
等人  
考虑了类与类之间两种  
3
使用相关主题模型建立程序网络  
: ( 1)  
语法结构关系  
类使用了另一个类  
(
类之间结构性依赖关系 例如一个  
) ( 2)  
(
初始的系统设计 例如两个类  
,
相关主题模型的输入有两个 一是文档的语义信  
[9]  
) .  
N x N  
在同一个包里  
后者是一个简单的布尔型  
矩
; .  
息 另一个是文档的结构信息 本文以程序中的每个类  
,
阵 如果类  
C
C ,  
在同一个包中 那么矩阵中该元  
j
与类  
. (  
作为文档 本文建立程序网络分为以下几步 如图  
1
所
i
O
1,  
等于 否则  
O
0.  
等于  
素
) : ( 1)  
:
;
示
预处理 从软件系统的类中提取需要的信息  
; ( 3) ; ( 4)  
推荐相  
i,j  
i,j  
1, C . package = C . package  
j
( 2)  
相关主题模型建模  
生成程序网络  
i
O
=
( 1)  
i,j  
{
使用依赖度考虑的是类之间的使用 然后根据该  
.
关类  
3. 1  
0, C . package C . package  
≠
j
i
预处理  
,
为得到软件系统中准确的语义信息 要对源代码  
我们用使用依赖度度量类之间的结构性依赖关  
[5]  
,
;
系
, ,  
进行预处理 去除一些冗余的信息和噪音 通常使用自  
.
关系生成使用矩阵  
[8]  
.
然语言处理技术进行预处理  
化的源代码数据中提取的数据包括注释和标识符 按  
———  
预处理主要对非结构  
uses( C ,C )  
j
i
, used( C )  
j
0
≠
,
used( C )  
j
Di - > j =  
( 2)  
{
、
、
、
照预处理的流程  
词条化 去除停用词 分词 词形归  
0,  
used( C ) = 0  
j
、
一化 词干还原并将源代码内容将提取出来的数据进  
uses( C ,C )  
i
C C  
是类 使用 的次数  
j
,used( C )  
j
是类  
j
i

全部评论(0)

暂无评论

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

  • 打赏
  • 30日榜单

推荐下载