论文部分内容阅读
在软件开发过程中,开发人员会收到并处理用户提交的大量缺陷报告。为了提高开发人员处理缺陷报告效率,对于一份查询缺陷报告,本文旨在对其推荐相似缺陷报告进行研究,以供开发人员参考修复缺陷。若修复缺陷报告中问题涉及到的相同源代码文件数目超过一半,则称这些缺陷报告为相似缺陷报告。历史研究工作采用基于信息检索的自然语言处理算法,通过计算相似度对缺陷报告推荐相似缺陷报告。本文发现这些方法均返回给开发人员一个缺陷报告的推荐列表,但是往往推荐列表中的缺陷报告和当前缺陷报告相关程度不是很大,而且数目较多,开发人员需要依次排查推荐列表中缺陷报告所对应的源代码文件,工作量很大。由于推荐精度不够高,现有方法会浪费开发人员的时间,导致修复缺陷效率的低下。此外,一些缺陷报告缺乏相关程度较大的相似缺陷报告,对这类推荐相似缺陷报告意义不大。鉴于以上观察,本文的研究内容是基于统计语言模型与多目标优化算法推荐相似缺陷报告。本文包括缺陷报告处理中的两项研究工作,分别是:首先,基于n-gram模型计算缺陷报告出现的概率值大小,根据概率值从大到小对缺陷报告排序;其次,按照生成的排序列表顺序,对每份缺陷报告基于多目标优化算法NSGA-Ⅱ推荐相似缺陷报告。本文所做的主要贡献有:1)基于统计语言模型对缺陷报告排序即首先对缺陷报告进行自然语言处理,然后对其建立n-gram模型,进而基于历史缺陷报告对每份缺陷报告计算其出现概率的值,然后根据概率值从大到小对缺陷报告进行排序,并返回缺陷报告排序列表给开发人员。2)基于多目标优化算法,给排序后的缺陷报告推荐相似缺陷报告,即基于多目标优化算法NSGA-II推荐相似缺陷报告,采用TF-IDF和Word Embedding相似度之和作为适应值函数,从历史缺陷报告中找出相似的缺陷报告。在推荐尽可能少的相似缺陷报告情况下,使得缺陷报告间的相似度尽可能大。其中缺陷报告的相似度包括词法相似度(TF-IDF相似度)和语义相似度(Word Embedding 相似度)。3)本文在 AspectJ、Birt、Eclipse UI、JDT、SWT 和 Tomcat 六个开源项目的数据集上进行实验,并采用Top@k准确率、平均准确率均值、平均序位倒数均值三种评价指标对实验结果进行评价。实验结果表明:本文采用的多目标优化算法NSGA-Ⅱ与采用单目标算法相比,本文方法在Top@1准确率、平均准确率均值、平均序位倒数均值上分别比Yang方法提高125.5%、67.7%、62.75%。按照采用n-gram模型返回的排序列表顺序推荐和未采用相比,在Top@1准确率、Top@5准确率、Top@10准确率、MAP、MRR评价指标上提高的均值分别为 44.5%、36.6%、26.4%、39.2%、40.4%。