论文部分内容阅读
随着信息技术的快速发展,软件产品已经渗透到社会生活的各个领域,软件开发的规模和复杂度也随之增加。然而,软件中的缺陷是不可避免的。由于软件与人们生产生活的关系日益密切,软件缺陷所造成的严重后果往往难以估量。因此,软件产品的质量受到了越来越多的关注。软件测试是保证软件质量的重要措施,通过测试可以发现软件中存在的缺陷并及时修复。但是,要尽可能多地发现缺陷,必须付出大量的人力和时间成本。而软件缺陷预测技术利用软件的历史缺陷数据,构建预测模型,对软件各个模块进行缺陷预测。此方法可以预先识别出软件中可能存在缺陷的模块,针对缺陷高风险模块投入足够多的测试资源,以保证软件产品的质量和测试效率。软件缺陷预测技术是软件工程领域的研究热点。现在的软件中,数据通常具有高维、海量等特点。为了保证缺陷预测模型的执行效率和分类精度,特征选择成为一种重要的方法。本文主要基于特征选择的方法,针对缺陷预测领域存在的主要问题,提出相应的解决方案。目前,软件缺陷预测面临的问题主要有:(1)软件缺陷数据中存在大量的冗余特征和不相关特征。缺陷数据中存在一些特征,对于预测结果没有帮助,还会影响模型效率,甚至影响预测精度。(2)分类性能问题。通常研究过滤式特征选择算法时,与后续分类算法相互独立,无法达到最优预测精度;而封装式特征选择算法,通常未进行特征降维,模型效率低下。(3)类不平衡问题。缺陷预测是典型的二分类问题,通常将软件各个模块划分为有缺陷倾向和无缺陷倾向两种。其中,其中有缺陷倾向模块远远少于无缺陷倾向模块,这种不平衡现象会对缺陷预测的准确率产生干扰。针对以上问题,本论文提出以下缺陷预测方法:(1)针对软件缺陷数据存在冗余、不相关特征的问题,提出一种基于相关性和冗余性分析的过滤式特征选择算法。对缺陷数据集进行两阶段处理,第一阶段对特征的相关性进行计算,第二阶段对冗余性进行计算,并结合前面的相关性排序,筛选出最优特征子集。此方法既能达到降维的目的,又能提高模型的预测精度。已通过实验证明了该方法的有效性。(2)针对分类性能问题,提出一种基于混合式特征选择的软件缺陷预测算法。算法结合过滤式特征选择和封装式特征选择的优点,首先从相关性和冗余性两方面对特征进行选择,再进行特征聚类,最后以随机森林为评估器评估特征子集的分类性能,选取最优特征子集。此方法在特征降维的同时达到了提高分类精度的目的。已通过对比实验验证了方法的有效性。(3)针对类不平衡问题,提出基于代价敏感的混合式特征选择算法。首先,将代价敏感的思想引入经典的过滤式特征选择算法,解决类不平衡问题。再利用过滤式和封装式特征选择算法相结合的方式,获得最优特征子集。此方法进一步提高了缺陷预测模型的预测精度。已通过实验证明了该方法的有效性。综上所述,本论文主要基于特征选择的理论和方法研究,解决软件缺陷预测中存在的实际问题。一方面基于特征选择的研究拓宽了机器学习的应用领域,也为软件缺陷预测的研究方向提供了新思路;另一方面对实践中提高软件质量和提升软件测试效率具有重要意义。