论文部分内容阅读
软件缺陷报告的严重性分析在软件维护过程中起到关键作用。随着软件规模的不断增大,越来越多的软件公司使用Bugzilla和Jira等缺陷跟踪系统管理软件缺陷。这些系统利用缺陷报告记录软件缺陷,并通过分析缺陷报告的严重程度实现软件维护资源的合理分配,降低软件维护成本。
结合缺陷报告的严重性属性,已有研究主要基于缺陷报告的文本信息,通过分类算法完成缺陷报告严重程度的预测。然而,当前研究主要停留在粗粒度的二元分类上,缺乏实际软件项目的缺陷严重性实证分析和细粒度预测。为帮助开发者更好的分析缺陷报告的严重性,本文从严重性实证分析和细粒度预测两方面入手,解决缺陷报告严重性分析的核心问题:为解决严重性实证分析问题,提出缺陷报告严重性影响分析框架,以评估对严重性属性的外部影响;为解决严重性预测问题,提出面向领域特征的粗粒度严重性预测方法和基于特征序列重构的细粒度严重性预测方法,提升不同场景下缺陷严重性预测的效果。
首先,本文通过实证分析的方法,提出缺陷报告严重性影响分析框架。分析典型的开源项目(Mozilla和Eclipse)的数据,以及不同组件和项目中缺陷严重性程度分布情况,发现了若干有趣的现象,比如:软件缺陷严重性自动分类能够提升修复率11%;正确的严重性分类能够有效减少缺陷解决时长,同时提高缺陷分派准确率。
其次,本文提出一种新的面向领域特征的粗粒度严重性预测方法。本部分工作将软件缺陷报告的7种严重性分为严重和不严重两个级别,在对4种特征选择算法及4种机器学习算法处理结果的交叉对比的基础上,提出新的严重性二元预测方法,该方法使用T01向量化方法处理原始文本数据集,使用相关系数特征选择算法对原始数据集进行特征优化,使用多项式贝叶斯算法对数据集进行训练和测试,使预测的AUROC值提高到0.7642。
最后,本文提出用于细粒度严重性预测的基于排序的特征序列重构方法。由于缺陷报告的二元严重性分类(严重和不严重)无法准确的表达缺陷报告的严重程度,为解决细粒度严重性预测问题,本文利用缺陷报告特征子集优化思想,提出特征子集优化方法。该方法将软件缺陷报告严重性特征子集的维度降低了50%的同时,显著提升细粒度缺陷报告严重性预测效果,将其加权F值指标提升到76.7%。
本文研究不仅弥补了当前缺陷报告严重性实证分析的不足,还进一步提升了细粒度严重性定量预测的性能,对软件维护过程的资源合理分配具有一定的参考价值。
结合缺陷报告的严重性属性,已有研究主要基于缺陷报告的文本信息,通过分类算法完成缺陷报告严重程度的预测。然而,当前研究主要停留在粗粒度的二元分类上,缺乏实际软件项目的缺陷严重性实证分析和细粒度预测。为帮助开发者更好的分析缺陷报告的严重性,本文从严重性实证分析和细粒度预测两方面入手,解决缺陷报告严重性分析的核心问题:为解决严重性实证分析问题,提出缺陷报告严重性影响分析框架,以评估对严重性属性的外部影响;为解决严重性预测问题,提出面向领域特征的粗粒度严重性预测方法和基于特征序列重构的细粒度严重性预测方法,提升不同场景下缺陷严重性预测的效果。
首先,本文通过实证分析的方法,提出缺陷报告严重性影响分析框架。分析典型的开源项目(Mozilla和Eclipse)的数据,以及不同组件和项目中缺陷严重性程度分布情况,发现了若干有趣的现象,比如:软件缺陷严重性自动分类能够提升修复率11%;正确的严重性分类能够有效减少缺陷解决时长,同时提高缺陷分派准确率。
其次,本文提出一种新的面向领域特征的粗粒度严重性预测方法。本部分工作将软件缺陷报告的7种严重性分为严重和不严重两个级别,在对4种特征选择算法及4种机器学习算法处理结果的交叉对比的基础上,提出新的严重性二元预测方法,该方法使用T01向量化方法处理原始文本数据集,使用相关系数特征选择算法对原始数据集进行特征优化,使用多项式贝叶斯算法对数据集进行训练和测试,使预测的AUROC值提高到0.7642。
最后,本文提出用于细粒度严重性预测的基于排序的特征序列重构方法。由于缺陷报告的二元严重性分类(严重和不严重)无法准确的表达缺陷报告的严重程度,为解决细粒度严重性预测问题,本文利用缺陷报告特征子集优化思想,提出特征子集优化方法。该方法将软件缺陷报告严重性特征子集的维度降低了50%的同时,显著提升细粒度缺陷报告严重性预测效果,将其加权F值指标提升到76.7%。
本文研究不仅弥补了当前缺陷报告严重性实证分析的不足,还进一步提升了细粒度严重性定量预测的性能,对软件维护过程的资源合理分配具有一定的参考价值。