当前位置:问答库>论文摘要

题目:基于数据挖掘的软件变化相关性分析

关键词:变化依赖关系;软件演化;频繁模式挖掘;软件维护

  摘要

在进行软件维护时,程序员往往需要修改多处代码,这些代码之间存在着变化依赖关系。而在实际的软件开发中,存在由于代码的不完全修改引起的错误,因此分析软件中的变化依赖关系对程序员进行软件维护和程序理解具有重要意义。本文主要针对开源软件,采用频繁模式挖掘的方法发现软件中的变化依赖关系。利用软件演化历史中相对频繁的被程序员在一次提交操作中修改的方法和文件集合给出修改建议,提示程序员修改了部分方法或文件,还需要修改哪些方法或文件,从而辅助程序员进行代码修改。本文首先分析了目前提取软件变化依赖关系的方法和技术,并对其进行了比较。然后,本文分析了开源软件的开发特点,介绍利用数据挖掘方法发现变化依赖关系的步骤和流程,并实现了一个原型系统。其中为了提取发生变化的方法,在抽象语法树的基础上,通过完全匹配和模糊匹配两个步骤建立方法的匹配关系,序列化匹配的方法体节点的内容,提取变化的方法;结合程序员进行代码修改的特点,对传统的频繁模式挖掘算法进行调整,提高原型工具的响应效率;针对配置管理工具CVS的信息存储特点,本文将固定窗口和滑动窗口方法相结合,来提取在程序员一次提交操作中修改的文件。最后,本文以开源项目Eclipse为例,提取其中的变化依赖关系,从表示性和预测性两个角度对结果进行分析。从表示性的角度,本文将变化依赖关系分为结构关系和非结构关系,并统计其中结构关系和非结构关系的分布情况;从预测性的角度,本文采用查全率和查准率两个指标进行描述。实验表明采用挖掘软件历史的方法不仅能够发现部分程序分析可以发现的结构关系,而且可以发现程序分析难以发现的非结构关系,并且变化依赖关系在预测代码变化方面具有相对较高的查全率和查准率。变化依赖关系能够辅助程序员进行程序理解和软件修改。