论文部分内容阅读
软件缺陷预测技术是软件工程中重要的研究方向。随着全球信息化步伐的不断加快,当今社会,人们的生活已经离不开软件产品和软件系统的参与。由于软件产品和系统在越来越多的领域中扮演着十分重要的角色,软件的质量也逐渐成为人们关注的焦点。在软件项目开发过程中,软件缺陷的产生不可避免,及时发现并消除软件缺陷也因此成为软件项目开发过程中不可或缺的环节。软件测试技术对于发现和消除软件缺陷是一种有效的手段,并且已经成为软件开发行业惯用的方法,但是这项技术需要消耗大量的时间和资源,使其成为软件开发过程的一大瓶颈。软件缺陷预测是一种新型的缺陷发现技术,它根据已有的经验数据,利用机器学习方法,对可能出现缺陷的模块做出预测,从而可以将有限的资源和时间花费到可能有缺陷的模块的测试中,达到资源的合理配置和利用,有效地提高软件项目开发效率,节约软件开发成本,提高软件产品质量。软件缺陷预测技术经过多年的研究与发展,已经有了一些成熟的学术和商业应用,但也存在一些不足,比如预测模型的分类准确度不高等。本文重点关注软件缺陷预测模型所依赖的经验数据集,主要研究特征选择算法在软件缺陷预测技术中的应用。软件缺陷数据集本身存在的冗余性会干扰学习算法的学习效果,从而影响软件缺陷预测模型的分类性能。特征选择一般来说包含Filter类型和Wrapper类型两种框架类型的算法,它们的主要区别在于对特征子集的评价模块上。Filter特征选择算法主要根据数据集内在的数学特点评价特征的重要性,而Wrapper特征选择算法则直接利用学习算法的分类性能来评价特征子集。这两种算法各有优缺点,本文结合信息理论、遗传算法等相关知识提出了两种不同类型的特征选择算法:基于互信息的特征选择算法(Filter类型)和基于遗传优化支持向量机的特征选择算法(Wrapper类型)。本文将这两种类型的特征选择算法应用到软件缺陷预测模型中,展开了一系列深入具体的研究工作。总体而言,本文的研究内容主要包含以下两个方面:第一,在仔细研究和理解相关信息理论的基础上,分析了当前已有的基于信息理论的特征选择算法的特点,并针对特征选择算法中特征子集大小对评价标准的影响问题,提出了一种引入非线性因子的特征子集评价函数,改进了现有的基于互信息的特征选择算法,并做了大量的实验研究,实验结果表明,本文所提出的特征选择算法在提高软件缺陷预测模型的分类性能上具有更加明显的优势。第二,提出了一种基于遗传算法和支持向量机的特征选择算法,该算法使用遗传算法对特征空间进行随机搜索,搜索过程中使用支持向量机建立的软件缺陷预测模型输出结果作为种群的适应度评价标准。该方法结合了遗传算法的鲁棒性和支持向量机的泛化能力,在最优特征子集的寻优能力上具有更高的效率。本文利用支持向量机资源包LIBSVM,在开发出的基于支持向量机的软件缺陷预测系统上验证了算法的有效性。本文的研究表明,特征选择算法在消除软件缺陷数据集的冗余性和提高软件缺陷预测模型的分类性能上有十分明显的效果,具有很高的应用价值。