论文部分内容阅读
在软件开发中,确保软件质量是一项既消耗资源又费时的过程:包括手工代码审查,技术评审会议和密集的软件测试等活动。软件缺陷预测是软件工程中的一个重要的研究课题,它可以帮助我们更好地了解和控制软件质量。通过预测软件模块的缺陷状况,软件开发组织可以将有限的资源集中于容易出现缺陷的模块,从而能够及时发现并排除缺陷,有效地提高软件产品的质量。 目前的缺陷预测技术主要是基于足够多的历史项目数据,但在实际应用中,一方面,因为历史项目数据来自不同的项目或不同的组织,具有不同的数据分布,因此,使用这些数据建立的预测模型往往具有较弱的适应能力。另一方面,通过手工标记模块的缺陷情况需要花费高昂的标记代价,因此,可用的标记数据是非常有限的,不能用来建立有效的预测模型。 针对上述问题,本文深入研究了软件缺陷预测的相关理论和现有技术,重点探讨了主动学习和半监督学习方法在软件缺陷预测方面的应用,为解决上述问题给出了有效的方法。本文的主要研究工作如下: (1)给出改进的半监督学习方法,用来解决样本分布不同和标记数据有限的问题。不同于以往的研究,该方法不需要历史数据,而是从当前项目中选择与该项目样本分布最为相似的数据集作为初始标记数据集,建立一个基于该样本的初始分类模型,进而利用大量未标记数据迭代地改进分类模型。在公共数据集上的实验表明,该方法比传统的机器学习技术具有更好的预测性能。 (2)引入主动学习策略,用于减少人工标记的代价。本文给出了一种主动半监督学习方法,该方法将主动学习和半监督学习结合起来,主动地选择一些信息含量大的未标记数据进行标记,同时自动利用剩余的未标记数据,从而在标记代价最小的情况下构造出强泛化能力的分类器。实验结果表明,该方法是有效的。