论文部分内容阅读
软件缺陷预测是指通过挖掘软件历史缺陷数据特征,分析软件模块中缺陷数量与特征对应关系构建预测模型,然后利用预测模型预测出新的软件模块中可能存在的缺陷。目前大多数缺陷预测模型的目标是预测给定软件模块中的缺陷数量。然而由于软件模块特征中存在噪声数据,构建出来的模型很难精确地预测模块中的缺陷数量。研究人员进一步提出通过预测相对缺陷数量对软件模块进行排序,进而指导测试人员将有限的资源优先分配给缺陷数量较多的模块。但由于软件模块特征维数过高,以及特征之间的相关性导致存在一些冗余特征,需要在构建缺陷预测模型之前进行特征选择或特征降维,这个过程可能导致一些对缺陷预测有用的特征被筛除,从而导致预测模型的性能下降。本课题分析了软件缺陷预测中每个模块特征值与对应缺陷数量之间的关系。首先依据直接优化预测模型性能指标的思想研究基于遗传算法的非线性预测模型构建优化,然后进一步采用多基因遗传编程(Multi-Gene Genetic Programming,MGGP)算法,通过MGGP在处理多重共线性问题方面的优势构建缺陷排序模型,对软件模块中缺陷数量的相对高低进行排序。具体来说,在构建软件缺陷排序模型的过程中,将软件模块的特征值作为自变量,将模块对应的缺陷数量作为因变量,利用多基因遗传编程的思想,演化出缺陷数量与特征的关系表达式,进而利用构建的模型对新的软件模块进行预测。为验证构建的软件缺陷排序模型的预测能力,本课题在11个公开缺陷数据集上进行了实验,比较分析了使用全部特征和去除冗余后部分特征的情况下,评估多基因遗传编程方法构建的预测模型、基于遗传算法的非线性预测模型以及原始非线性预测模型对软件模块中缺陷的预测能力。实验采用了平均缺陷百分比(Fault-Percentile-Average,FPA)来评估预测模型的性能。结果表明,采用MGGP构建的软件缺陷预测模型在缺陷模块排序方面明显优于现有的非线性预测模型,基于遗传算法构建的非线性预测模型优于原始非线性预测模型。另外采用MGGP方法构建的软件缺陷排序模型可以不考虑软件模块中冗余特征的影响,直接利用原始特征就能构建出效果比较好的预测模型。