论文部分内容阅读
软件无处不在。为了满足人的需要,并提升自身质量,软件在整个生命周期会进行多次修改。这些修改可能会引入缺陷,对软件的正常运行产生影响。因此软件质量的保证成为了重中之重。诸多学者对如何保证软件质量进行了深入研究,其中很重要的一个方面是如何消除缺陷。针对缺陷已经发展出了缺陷定位、缺陷预测和缺陷自动修复等研究方向。在缺陷预测领域,实时缺陷预测技术是近年来出现的重要方向。这种技术专注于细粒度预测,追求用最小的投入发现尽量多的缺陷。实时缺陷预测受到了一些公司的关注,如Cisco公司已将该技术应用到了其产品中。
本文提出了一种带有局部搜索的遗传规划的实时缺陷预测技术。该技术的预测粒度为一次软件修改。相比于目前已经提出的其它方法,该技术在实验表现上有一定改进,提高了实时缺陷预测的准确性,一定程度提升了实时缺陷预测技术的实用性。本技术提取了软件修改的14个特征,将这14个特征与加减乘除四则运算结合,生成用于对修改进行评分的染色体(其本质为一个合法的数学表达式),并设置适应度函数。以该函数为指导对染色体进行交叉变异生成新的染色体,再根据适应度函数使用局部搜索算法从这些染色体的领域中找出表现最好的染色体,迭代一定次数直到染色体表现稳定后得到一个最优染色体。在得到最优染色体后,结合修改的修改行数和在最优染色体下的得分表现确定修改的风险值,根据风险值对修改进行排序,找到风险值最大的修改推荐给开发者检查,辅助开发者效率地进行缺陷修复工作。在实验中,本文使用了如下指标进行评估:准确率、召回率、耗费总精力20%(以修改总行数为度量)所能找到的缺陷占总缺陷比等,并与现有的其它方法进行比较。实验结果表明,与已有的EALR算法、无监督学习算法LT和监督学习算法OneWay相比,本文提出的技术在寻找缺陷的能力上获得了更好的结果。本文提出的基于遗传规划的实时缺陷预测技术可以辅助程序员发现代码修改中的潜在缺陷,具有一定应用潜力。
本文提出了一种带有局部搜索的遗传规划的实时缺陷预测技术。该技术的预测粒度为一次软件修改。相比于目前已经提出的其它方法,该技术在实验表现上有一定改进,提高了实时缺陷预测的准确性,一定程度提升了实时缺陷预测技术的实用性。本技术提取了软件修改的14个特征,将这14个特征与加减乘除四则运算结合,生成用于对修改进行评分的染色体(其本质为一个合法的数学表达式),并设置适应度函数。以该函数为指导对染色体进行交叉变异生成新的染色体,再根据适应度函数使用局部搜索算法从这些染色体的领域中找出表现最好的染色体,迭代一定次数直到染色体表现稳定后得到一个最优染色体。在得到最优染色体后,结合修改的修改行数和在最优染色体下的得分表现确定修改的风险值,根据风险值对修改进行排序,找到风险值最大的修改推荐给开发者检查,辅助开发者效率地进行缺陷修复工作。在实验中,本文使用了如下指标进行评估:准确率、召回率、耗费总精力20%(以修改总行数为度量)所能找到的缺陷占总缺陷比等,并与现有的其它方法进行比较。实验结果表明,与已有的EALR算法、无监督学习算法LT和监督学习算法OneWay相比,本文提出的技术在寻找缺陷的能力上获得了更好的结果。本文提出的基于遗传规划的实时缺陷预测技术可以辅助程序员发现代码修改中的潜在缺陷,具有一定应用潜力。