论文部分内容阅读
在互联网的高速发展时代,软件的规模和复杂度不断增大,软件中存在的缺陷如果不被及时发现,可能会对相关领域产生巨大的影响。因此,在软件尚未发布之前,找到隐藏在软件中的缺陷是一个急需解决的问题。在软件缺陷预测上,机器学习算法发挥着重要作用,有着较好的效果,但是在现实的软件项目中,软件缺陷预测依然存在如下几个问题。(1)测试软件模块代价太高,只能对少数的软件模块进行测试,即只有少数的数据样本被贴上标签;(2)不同的错分带来的代价不一致,将有缺陷的数据样本判断为没有缺陷明显比把没有缺陷的数据样本判断为有缺陷的代价大;(3)软件缺陷预测的数据集具有类不平衡的特点,有缺陷的数据样本只占少数;(4)现有的缺陷预测模型没有考虑源代码中隐含的语义信息。本文针对上述问题,提出了一种基于代价敏感的混合软件缺陷预测模型,主要工作内容如下:1.提出改正的半监督支持向量机,采用十折交叉验证法抽取训练数据集和测试数据集,进行多次重复实验,避免出现偶然性;同时半监督支持向量机能够利用少量标签数据样本和大量没有标签数据样本一起构建缺陷预测模型。2.提出基于代价敏感的支持向量机,通过给予“将有缺陷数据样本预测为没有缺陷”较高的代价、给予“没有缺陷的数据样本预测为有缺陷”较低代价,能够解决数据集类不平衡的问题,并使得错分代价最小。3.提出把特征定位融入软件缺陷预测中,通过对缺陷特征和软件源代码进行主题建模,得到缺陷特征和代码中的主题信息,进行相似度匹配,把分类的结果与特征定位的结果进行线性组合,最后得到混合软件缺陷预测的结果。总之,本文结合特征定位和半监督学习,提出了一种低代价的软件缺陷预测模型,利用Lucene、Eclipse JDT Core等开源软件对本文缺陷预测模型进行验证,发现本文对标签样本少、代价率高的数据结果提升的最为明显。