首页> 中文学位 >基于主题模型的程序理解技术的研究
【6h】

基于主题模型的程序理解技术的研究

代理获取

目录

摘要

第一章 绪论

1.1 研究背景

1.1.1 软件维护

1.1.2 程序理解

1.2 论文工作

1.2.1 研究内容

1.2.2 研究关键点

1.3 论文结构

1.4 本章小结

第二章 研究现状

2.1 主题模型

2.2 主题模型在软件维护与演化中的应用

2.2.1 主题模型应用于源代码理解

2.2.2 主题模型应用于特征定位

2.2.3 主题模型应用于软件缺陷预测

2.2.4 主题模型应用于开发者推荐

2.2.5 主题模型应用于可跟踪性链接恢复

2.2.6 主题模型应用于重构

2.2.7 主题模型应用于软件历史库理解

2.2.8 主题模型应用于软件回归测试

2.3 主题模型应用中的限制因素

2.4 本章小结

第三章 基于主题模型的包层次聚类

3.1 基本知识

3.2 包聚类技术

3.2.1 分析包的规模

3.2.2 基于LDA提取的特征提取

3.2.3 大规模包中的类文件聚类

3.3 包聚类实验研究

3.3.1 实验环境

3.3.2 实验对象

3.3.4 参数设置

3.3.5 验证方法

3.3.6 实验结果与分析

3.4 有效性威胁

3.5 本章小结

第四章 基于层次主题模型的程序理解

4.1 基本知识

4.2 程序特征树构造技术

4.2.1 预处理源代码

4.2.2 利用hLDA为语料库建模

4.2.3 可视化层次来辅助理解

4.3 例子分析

4.4 实验研究

4.4.1 实验环境

4.4.2 实验对象

4.4.3 参数设置

4.4.4 验证和衡量方法

4.4.5 实验结果与分析

4.5 实验有效性威胁

4.6 本章小结

第五章 基于相关主题模型的程序理解

5.1 基本知识

5.2 使用相关主题模型建立程序网络

5.2.1 预处理

5.2.2 相关主题模型建模

5.2.3 生成程序网络

5.2.4 推荐相关类

5.3 实验评估

5.3.1 实验环境

5.3.2 实验对象

5.3.3 参数设置

5.3.4 实验验证过程

5.3.5 实验结果

5.4 实验有效性威胁

5.5 本章小结

第六章 总结与展望

6.1 工作总结

6.2 未来工作

参考文献

致谢

攻读学位期间发表论文及参加科研项目

声明

展开▼

摘要

为了满足用户不断增加的需求,软件产品需进行不断的维护与演化。而在软件维护与演化的过程中,开发人员面临的主要问题之一就是如何能够快速而又准确的理解整个软件系统。随着系统的演化,其规模和复杂度也在不停地增长,程序理解的任务则变得越来越有难度。程序理解的目的在于获得软件系统信息,以易于人理解的形式展现出来,来辅助开发人员理解软件。本文针对面向对象Java程序的理解进行了相关的技术研究,主要贡献如下:
  第一,软件系统中的包的规模大小不一。对于小规模的包开发人员可以很容易地进行理解,而对于大规模的包,靠人工理解则比较困难。我们对大规模的包提出了一种包分解技术,即利用主题模型将大规模的包进行聚类来辅助理解。这些大规模的包经过聚类之后分解为小规模的聚类簇,这样,这些聚类簇和小规模包一样更加易于开发人员理解。除此以外,在生成聚类簇的过程中,可利用主题模型技术为聚类簇生成标签,从而更加有助于对这些包的理解。我们通过实验对四个软件系统验证了我们方法的有效性,结果表明我们的方法的聚类结果好于LSI(Latent semantic indexing)的结果,我们的方法得到的每个聚类标签都能有效地辅助程序理解。
  第二,在实际程序理解过程中,程序员倾向并习惯于先对整个软件系统的特征做整体的了解,之后再去找到感兴趣的代码和所需要的文件。因此,给定了目标系统后,开发人员通常需要对整个系统有一般或层次的理解。传统的开发环境中可提供的视图是从包到类的一个结构,这并不易于理解这些大型软件系统的语义特征。本文我们利用层次主题模型生成一个软件系统的特征树方法,该特征树包含特征层次和文件结构层次,而这两个层次则是将软件系统的特征和文件结构以总体到部分的形式展示出来,从而有助于开发人员对系统语义特征的理解。通过对现实中的软件系统进行实验来验证我们方法的有效性,结果表明我们的方法所得的特征树可以对特征和文件给出很好的展示,而且我们方法的聚类结果在查全率方面优于层次聚类方法。
  第三,特征及其联系可以有效地帮助开发人员得到一个软件系统总体功能方面的特征信息。为软件系统建立一个基于特征的网络结构,可以帮助开发人员更加简单和快速的理解软件系统。我们通过使用相关主题模型,为软件系统的所有类层次的代码文件建立一个程序网络,并可视化地展示整个软件系统的相关结构和功能,辅助开发者理解整个程序代码。该技术综合考虑了软件代码中的结构性信息和内容性信息,所建立的程序网络可以帮助开发者更好地理解程序的语法依赖关系和语义功能相关关系。我们通过两个实验验证了我们建立的程序网络具有较好的准确性以及可以为指定的类有效地推荐相关类。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号