● 摘要
在大规模软件的开发过程中,缺陷修复是一个十分复杂的过程,不仅涉及到缺陷的定位、修复和确认,还涉及到缺陷修复任务的分配、缺陷报告的记录、缺陷状态的监控,以及被修复软件的版本演化和追踪等一系列管理工作。这不仅增大了软件修复的成本,同时也极大地影响了软件开发进度。因此,如何准确地确定最适合的开发者承担缺陷的修复任务,并准确地定位缺陷位置或大致范围以支持缺陷修复的过程,成为重要的研究课题。但是,由于缺陷分配和定位问题受诸多不确定性因素的影响,因此至今尚缺乏有效的方法。
研究发现,采用数据挖掘技术,可以从软件库(包括代码库和缺陷库)中提取出代码修改与缺陷的重要特征及其相互之间的关联性,有助于提高缺陷的分配和定位的效率。因此,本文深入研究了针对软件缺陷分配和定位的软件库挖掘方法,并取得了如下研究成果:
提出了一种基于缺陷分配图和缺陷相似度的缺陷分配方法。该方法利用缺陷相似度对缺陷分配图进行优化以提高缺陷分配的效率。为了预测缺陷分配的难度,利用缺陷报告的属性构造了一个二元分类器。该分类器对新增的缺陷进行分类,将容易分配的缺陷做人工分配,而将分配难度大的缺陷使用自动的缺陷分配方法。实验结果表明利用分类器可以进一步提高缺陷分配的效率。
提出了一种基于张量高斯过程的缺陷定位方法。针对训练数据的不平衡性,提出了一种数据采集算法,该算法提高了张量高斯过程的训练效果。对张量高斯过程进行了近似推理,并且提出了一种降低张量高斯过程计算复杂度的方法。实验结果表明了基于张量高斯过程的缺陷定位方法的有效性。
在K-近邻算法中引入时间衰减因子,提出了一种缺陷分配方法。将它与基于张量高斯过程的缺陷定位方法结合,从而提出了一种混合的缺陷分配和缺陷定位方法,并利用正交设计的遗传算法对方法中的参数进行优化。实验结果表明混合的缺陷分配和缺陷定位方法可以同时提高缺陷分配和缺陷定位的准确性。
为了评估上述方法的有效性,采集了多个开源软件项目中的数据,进行了实验验证。实验结果表明本文提出的方法可以准确定位缺陷的位置,而且可以比较准确地将缺陷分配给合适的开发者,从而为缺陷的修复过程提供支持。与已有的方法比较也表明本文方法的优越性。