论文部分内容阅读
随着软件技术的迅速发展,软件产品的使用渗透到社会的各个方面。因此,软件质量保障对于大型软件项目尤为重要,如果无法及时发现并修复软件中的缺陷,不仅可能会造成巨大的经济损失,甚至会危及人类生命安全。软件缺陷预测技术通过预测软件模块的缺陷倾向性指导质量保障人员合理分配资源,即质量保障人员可以对缺陷倾向较高的模块进行充分测试,从而减少由于对无缺陷模块的测试造成的资源浪费。然而,缺陷预测模型的构造需要大量质量可靠的训练数据集,如果一个软件项目缺乏有效的训练数据,则很难建立高效的缺陷预测模型。针对缺乏有效训练数据的问题,近年来研究人员提出利用主动学习算法从被测项目中直接选择实例进行标注的方法构建训练集。已有的方法大多基于主动学习的不确定性采样策略选择实例,但是当初始训练集与总体数据分布不一致时,该方法容易导致训练集的分布偏差进一步加强,如果选择标注的实例数不够多,则难以在该训练集上构建正确的预测模型。并且缺陷预测数据集中存在类不平衡问题,在挑选实例的过程中,主动学习方法并未处理由该问题导致的构造训练集中数据分布不均衡的现象,进而导致在该训练集上构建的缺陷预测模型的性能难以得到有效提高。本文提出DAL方法和BDAL方法分别解决上述问题。DAL方法基于双重不确定性采样策略从不同特征子空间中综合评价实例的不确定性,避免在总特征空间中因绝对的单一不确定性造成的采样偏差;BDAL方法则通过合成少数类实例缓解训练集中的类不平衡问题。本文主要贡献总结如下:1.提出了一种基于主动学习的项目内缺陷预测方法DAL。为了解决软件缺陷预测领域中缺乏有效训练数据的问题,本文提出了基于主动学习双重不确定性采样策略的DAL方法,该方法旨在花费最少的标记成本构造较高质量的训练集。本文分别介绍了提出DAL方法的动机和该方法在缺陷预测领域的应用流程,然后通过在AEEEM和Relink数据集上的实证研究验证该方法的有效性,最后总结并分析其优缺点。2.对DAL方法进一步改善提出了BDAL方法。针对缺陷预测数据集中存在的类不平衡问题,本文对DAL方法进一步改善提出了基于FS-BSMOTE过采样策略的BDAL方法。该方法利用特征子集合成少数类实例以缓解训练集中类不平衡问题,可以有效提高缺陷模块的召回率。本文通过在AEEEM数据集上的实证研究验证了BDAL方法对DAL方法的改进性能。