论文部分内容阅读
互联网前所未有的发展,彻底改变了我们的生活方式,软件发挥的作用也随之越来越突出,已经渗透到我们生活的各个层面,从而导致人们对软件质量的要求也越来越高。众所周知,软件维护开销约占软件开发总费用的70%,软件缺陷预测与修复又是其中主要任务之一。软件缺陷预测有助于发现最可能潜在问题的模块,从而合理分配测试资源,改善软件开发过程,提高开发质量,一直是软件工程领域备受关注的热门主题。传统的软件缺陷预测方法是利用项目自身已有的历史数据建立预测模型,再然后用于后续版本的缺陷预测。高质量的预测模型要求有充足的历史数据,这对一些新项目或还不活跃的软件项目便难以满足。近年来,互联网上可供获取的数据资源越来越多,一些研究者提出利用其它相似软件项目的数据来做训练,构建跨项目的缺陷预测模型,用于解决传统缺陷预测对历史数据依赖的瓶颈。然而,已有工作在跨项目训练数据选择时大多以源代码度量指标的相似性为依据,却忽略了缺陷的属性信息,如缺陷的数量。事实上,在数据选择过程中,当存在多个训练实例与某一个目标实例有相同的相似度值时,需要确定应该优先选择哪个或者哪几个实例。从经验型软件工程角度而言,有更多缺陷数量的训练实例将被优先选择,因为这些实例包含的缺陷信息量更丰富。因此,本文通过引入缺陷数量信息,提出一种新的训练数据选择跨项目软件缺陷预测方法。主要包括如下几个方面(1)在常用的源代码度量指标基础上考虑引入具体的缺陷信息来计算实例间的相似度,同时对缺陷信息采用五种不同的比较典型的标准化方法。(2)探讨常用的三种相似度及(1)中对缺陷信息使用不同标准化方法,并且对选择出不同的训练实例的质量进行了探讨。(3)基于六个典型的单个分类器(LR、J48、NB、SVM、KNN和RF)建立缺陷预测集成模型,充分利用各个单一分类器的优势,并使用性能评价指标F-measure来综合评价分析各个分类器的预测性能,由此分别提出投票集成和加权集成来预测目标实例是否有缺陷。为了验证本文的思路的合理性及正确性,通过大量的实验比对,结果表明:(1)引入缺陷数量信息可以获得更好的预测结果,有利于提高跨项目缺陷数据的选取质量;(2)采用不同的相似性度量方法和标准化方法处理缺陷数据对预测结果有影响,其中使用曼哈顿距离度量实例源代码指标相似性或使用线性标准化方法处理缺陷数时预测性能效果更好;(3)对本文提出的预测模型进行加权集成,可进一步提高预测性能。