随着软件应用的不断普及和深入,人们对软件质量的要求也越来越高。如何有效地保证、提升软件质量已经成为各国软件工程研究人员重点关注的技术问题。在本项目中,我们将研究软件缺陷预测技术。软件缺陷预测技术(Software Defect Prediction)可以帮助我们在实际故障发生前预测可能产生缺陷的模块,这样我们可以集中有限的人力、时间去测试这些最有可能含有错误的模块, 从而能更好地分配测试资源。软件缺陷预测技术是近年来国际软件工程研究领域的热点课题,对于软件质量保证有着重要的理论意义和应用价值。在本项目中,我们希望能够在前期研究基础上,设计高效的算法,提高缺陷预测模型的准确性,解决缺陷预测模型在实践中遇到的关键技术问题,并开发一个高效、实用的缺陷预测工具。我们也将研究如何应用缺陷预测模型于软件质量保证实践之中,优化测试资源的分配,并与其它质量保证技术(特别是缺陷定位技术)相结合。
software defect prediction;software quality assurance;software defect analysis;bug localization;prediction models
随着软件应用的不断普及和深入,人们对软件质量的要求也越来越高。同时,随着软件产品的规模越来越大,复杂度越来越高,软件开发、维护人员收到的缺陷报告也会越来越多。如何有效地保证、提升软件质量已经成为各国软件工程研究人员重点关注的问题。 在本项目中,我们深入研究了软件缺陷预测相关技术,即如何在实际故障发生前预测可能产生缺陷的模块。本项目的研究基本上按计划进行。我们研究了一些与软件缺陷预测模型相关的技术问题,包括了软件缺陷数据的质量问题,基于采样数据的软件缺陷预测模型,软件缺陷的定位,和缺陷修复时间的预测。目前软件缺陷数据挖掘方法可能会导致大量的缺失数据,使数据中存在噪音。我们分析了不同程度的噪音对缺陷预测模型的准确性的影响,并提出了一个新的、更有效的缺陷数据挖掘方法ReLink。目前的软件缺陷预测假设一个软件企业已经有了很多高质量的缺陷数据,但这个假设对某些企业可能不成立。针对这个问题,我们提出了一个结合主动学习和半监督学习的算法,叫做ACoForest,去采样一小部分软件模块进行测试,收集其数据并建立软件缺陷预测模型。我们也研究了软件缺陷定位问题,我们提出了一个BugLocator方法,可以根据软件缺陷报告和缺陷预测结果定位可能出错的程序模块。我们也提出了一个基于缺陷模式的缺陷检测方法。对于一个大型复杂软件系统,软件项目组可能会收到大量的缺陷报告。我们也提出了基于蒙特卡洛模拟和马尔科夫模型的缺陷修复时间的预测方法。 我们的研究成果已经全文发表在多个国际软件工程会议和期刊中,包括了2011年度的国际软件工程会议(ICSE 2011),ACM基础软件工程会议(FSE 2011),2012年度的国际软件工程会议(ICSE 2012),2013年的国际软件工程会议(ICSE 2013),和国际期刊Automated Software Engineering, Journal of Systems and Software。在本项目的支持下,目前已经正式发表了14篇论文,有4名清华大学研究生顺利毕业。我们在理论和实践上都有所创新,提出了新的方法,开发了相应的工具,较好地完成了本项目的研究计划。