论文部分内容阅读
软件缺陷管理一直是软件开发活动中很重要的一环。如今,随着开源运动的蓬勃发展,越来越多的开发者将软件项目托管到开源社区。为了吸引来自不同地区的外围贡献者参与到项目的开发进程中来,开源社区提供的协同开发工具趋向于轻量化。一方面,这些轻量级工具简化了项目的贡献机制,为项目吸引了海量贡献;另一方面,汇聚而来的海量贡献质量参差不齐,其中不乏有很多模糊的、质量低的外围贡献,给开源项目的健康发展带来了巨大的隐患。因此,在大众化协同的开源生态下,对开源软件进行自动化的缺陷管理变得格外重要。已有的自动化缺陷管理方法基于传统的机器学习模型,受制于训练样本数量的多少。对于一些新的或是没有足够历史数据的项目,无法在项目内构建一个好的预测模型。因此,为了解决样本不足的项目的缺陷管理问题,本文基于开源社区Github中的大规模数据集,对面向缺陷管理的跨项目知识复用技术进行了探索研究。论文的主要贡献总结如下:第一,基于开源社区累积的数据资源,分别对项目内的质量以及项目间的关联关系进行了量化评估,提出了面向开源项目的多维量化度量体系,其中包括项目内质量评估度量(包含4个维度、9个度量指标),以及项目间关联关系度量(包含3个维度、15个度量指标)。另外,我们提出了基于多维度量的项目质量评估方法,并通过实验验证了该方法的有效性。第二,基于项目间多维关系度量,分别在缺陷预测和缺陷报告分类场景下对跨项目的可迁移性进行了深入分析。通过对Github社区中高质量项目集进行实证分析,我们发现:在缺陷报告分类场景中,项目间参与人员的交集大小对跨项目可迁移性影响最大,两个项目的共同参与者越多,跨项目分类效果就越好;在缺陷预测场景中,源项目模型的自身预测效果对跨项目可迁移性影响最大,源项目模型在项目内的预测准确率越高,跨项目的预测效果就越好。第三,基于跨项目的可迁移性分析结果,我们提出了一个高效的跨项目集成预测方法。基于Github社区的大规模数据集,分别在缺陷预测与缺陷报告分类的场景下验证了算法的有效性,发现我们的方法能够达到比较好的预测效果。