论文部分内容阅读
软件已经成为现代生活不可缺少的重要组成部分,因此软件质量显得尤为重要,然而软件缺陷的存在严重影响了软件质量。软件缺陷预测通过预测软件中可能存在的缺陷,帮助软件开发人员将有限的资源用在更有可能产生软件缺陷的地方,从而提高软件质量。很多机器学习方法被用来构建软件缺陷预测模型,基于机器学习的软件缺陷预测模型已成为当前软件工程的研究热点之一。软件缺陷预测的关键在于如何准确地发现存在缺陷的模块以及如何理解导致缺陷的因素。然而在实际的软件开发中,受资源所限,通常只能获取少量模块的缺陷情况标记,在此情况下,建立的软件缺陷预测模型对软件缺陷缺乏敏感性;另外,传统的软件缺陷预测模型并不能很好地帮助软件开发人员认识导致软件缺陷的因素以指导后续实践。本文针对上述问题进行了研究,取得了以下创新成果:第一,实际的软件开发中有标记样本稀少和预测模型对软件缺陷不敏感这两个问题是同时存在的,本文利用代价敏感半监督学习方法CS4VM来同时解决这两个问题。实验表明,CS4VM方法对于同时解决实际的软件开发中的这两个问题是有效的。但是CS4VM是基于代价敏感嵌入式方法,这样的方法并不通用,而且CS4VM是基于低密度分割的半监督学习方法,计算开销比较大;第二,为了获得更通用的方法,以及解决计算效率问题,本文提出了代价敏感半监督学习方法CoForest-CS来同时解决有标记样本稀少和预测模型对软件缺陷不敏感的问题。CoForest-CS由于采用代价敏感通用方法,所以具有很好的通用性;由于是基于不一致的半监督学习方法,所以计算开销小。实验表明,CoForest-CS对于同时解决实际的软件开发中的这两个问题是有效的;第三,为了发现软件缺陷的诱因,本文综合考虑了软件开发各个方面的影响因素,利用排序学习方法为软件缺陷密度相对的高低构建预测模型,挖掘影响软件缺陷密度的关键因素。实验表明,排序模型能够更好地体现各个因素对软件缺陷影响的实际重要程度。