论文部分内容阅读
软件缺陷预测技术可以预先识别出软件模块中潜藏的缺陷信息,指导测试资源分配和管理决策。在跨版本的软件缺陷预测中,新版本软件常因没有足够的标记样本而使用前序版本数据进行训练学习,但前序版本的特征信息通常具有“滞后性”——相似特征属性的模块完成缺陷修复后仍被预测为存在缺陷。本文针对跨版本缺陷预测中存在“高维小样本”的问题,提出了相应的解决思路:针对无关特征和冗余特征的挖掘问题,提出了一种基于聚类分析结果进行特征子集选择的方法;针对新版本软件中“小样本”的问题,引入基于实例迁移的思想,利用前序版本数据进行更为有效的缺陷预测。主要工作如下:(1)针对软件缺陷预测时样本特征维度高、特征相互之间有冗余造成的搜索空间大、预测精度低等问题,提出了一种结合聚类分析和子集选择的特征选择算法:首先对样本数据集进行聚类分析,得到聚类结果,然后基于样本聚类的结果,进行包装式特征子集选择,得到最优特征子集。通过聚类方法解决了子集搜索时搜索空间大的问题,包装式子集选择则进一步降低了特征间的冗余度。在NASA公开数据集上的实验表明本文方法能有效降低特征子集的冗余率,并能有效提高预测模型的性能。(2)针对新版本软件预测时训练数据少的问题,引入基于实例迁移的思想,提出了改进Boosting方法:在模型训练过程中,加入改进的误分类代价,动态调整前序版本中样本的权重,选择对目标版本预测有利的样本,降低误分类样本对模型的干扰。同时结合软件版本演化过程中与缺陷相关的变更度量元,对目标版本进行缺陷预测。通过在公开数据集上对预测模型进行验证,结果证实该方法有效地改进了预测模型的性能。(3)实现了一个跨版本软件缺陷预测系统,通过集成不同的数据预处理方法、特征选择方法以及分类学习算法,组成100条学习规则,可以针对不同的数据集选择最佳的组合算法,达到最优的预测效果。