软件工程硕士论文栏目提供最新软件工程硕士论文格式、软件工程硕士硕士论文范文。详情咨询QQ:1847080343(论文辅导)

基于特征选择和集成学习的软件缺陷预测方法思考

日期:2024年12月16日 编辑:ad201107111759308692 作者:无忧论文网 点击次数:27
论文价格:150元/篇 论文编号:lw202412110028275358 论文字数:35966 所属栏目:软件工程硕士论文
论文地区:中国 论文语种:中文 论文用途:硕士毕业论文 Master Thesis

本文是一篇软件工程硕士论文,本论文设计并实现了一种基于本论文提出的软件缺陷预测方法以及经典学习算法的软件缺陷分类预测系统,它将软件缺陷预测工作流程进行了大致细分并进行了可视化,为测试人员提供一定的指导作用。

第一章绪论

1.1研究背景及意义

随着互联网技术的迅猛演进与持续发展,计算机应用软件已经深入到人们生活的方方面面,但社会对软件的依赖也随之提高,引发了软件规模的爆炸,软件越来越大,越来越复杂,人们对软件的可靠性提出了更高的要求[3]。

在软件工程领域,软件缺陷指的是在系统内部出现的错误、功能上的不足或导致计算机无法正常工作的各种问题。软件开发不同阶段都有可能产生软件缺陷,比如软件工程师编写程序中产生的语法错误和逻辑错误使系统产生不正确或不可预测的结果[1]。软件的可靠性与其内部存在的缺陷模块数量是直接关联的,软件缺陷可能会导致系统在运行时出现不可预知的结果,这不仅带来了巨大的安全隐患,还可能对人类的生命构成威胁。例如1962年,无人驾驶的火箭偏离航向以至于不得不被销毁,NASA将此错误归因于Fortran语言的错误代码行,成本损失8000万[4];1987年,Therac-25辐射治疗设备因辐射剂量严重超标,致8名患者直接死亡,其事故是由医疗设备电力软件的Bug引起的[4];2001年,由北京开往温州的列车发生了追尾事故,导致40人遇难、172人受伤,造成了数亿的经济损失,原因是信号设备存在缺陷[4];CBOE是美国最大的期权交易所,在2013年引起延迟开盘,事故共持续4个小时,因此被罚款600万美元,事故原因是产品维护不当,一个期权类的标识符号被改变。经过对上述案例的全面分析,可以得出结论:保障软件质量是非常有必要的。

软件测试是一种保障软件质量的有效手段[5][1],但随着用户群体的逐渐扩大和软件需求的持续增长,软件的大小和复杂性也在持续上升,这为软件的测试工作带来了不小的挑战,因为有些缺陷可能很容易被发现,而另一些却难以察觉[6]。常见的软件测试工作是指对软件进行全覆盖的测试,但是软件中有大量的无缺陷模块,由于测试时间的有限性测试人员往往会在无缺陷模块上浪费大量时间而导致少数有缺陷模块未被发现,同时,因为测试工具陈旧以及测试方法有限,所以测试资源的有限性也是影响测试技术的关键因素,因此,由于软件项目的开发时间和测试资源是有限的,测试人员对软件项目的所有代码模块进行测试不太现实[7]。

1.2研究现状

软件缺陷预测作为软件工程领域中的一个重要研究方向,目前软件缺陷预测方法大多由机器学习算法组成,研究人员围绕软件缺陷预测领域四个方面开展了大量工作:一是研究如何设计出有效的缺陷度量元,度量元可以帮助分析软件缺陷的分布规律、缺陷的严重程度和影响范围;二是研究数据处理算法,旨在应对应对实际软件项目中缺陷模块数量远少于无缺陷模块的现象,从而提升软件数据集的整体质量和可靠性;三是研究特征选择方法,旨在减少数据集中存在的无关特征和冗余特征对缺陷预测效率的潜在影响,优化预测性能;四是以进一步提升软件缺陷预测的准确性,确保软件开发过程的稳定性和可靠性。接下来,本论文将从上述四个方面对软件缺陷预测领域的当前研究现状进行简要阐述和分析。

1.2.1软件缺陷度量元研究现状

在软件缺陷预测领域,软件度量元是通过对软件系统、软件模块或生命周期过程的特性进行持续的量化评估而定义的量度[15],软件度量元有助于缩短软件开发周期,减少开发成本并提高软件的质量,其中,缺陷度量元,虽然本身并不参与缺陷的直接处理,但是通过分析采集的软件缺陷度量元能为缺陷问题的解决提供重要信息。软件缺陷度量元是度量软件系统中缺陷的属性或特征,在改善代码质量方面给开发人员提供指导。

第二章软件缺陷预测的相关技术与理论

2.1软件缺陷预测的基本概念

软件缺陷预测是为软件测试的工作服务的。软件缺陷预测[99]是一项基于软件历史仓库数据分析的技术,旨在构建预测模型以识别潜在存在缺陷的软件模块。其核心目标在于预测软件模块是否包含缺陷。具体而言,当某一软件模块的缺陷数量达到或超过一个阈值(通常设为1),将其视为含有缺陷的模块;反之,若缺陷数量为零,则视为无缺陷模块。软件缺陷预测的工作流程一般包括四个步骤:构建软件缺陷数据集,数据预处理,构建缺陷预测模型和获得缺陷预测结果,其具体实现过程为:

(1)为有效提升软件缺陷预测的准确性,旨在识别与软件缺陷紧密相关的度量元,以深入分析软件仓库中的历史开发数据。所选度量元需能准确反映软件模块的内部结构复杂性与代码规模,从而构建一套完整的软件缺陷数据集。

(2)鉴于原始缺陷数据集中可能包含噪声和冗余信息,将对数据集进行预处理,剔除无关和噪声数据,并筛选出对模型训练有意义的度量元。

(3)在构建缺陷预测模型时,将选取适宜的机器学习算法,通过从历史数据中学习度量元与软件缺陷之间的关联模式,以建立二者之间的映射关系。

(4)一旦缺陷预测模型构建完成,即可将经过有效度量的新数据输入模型,进而获得缺陷预测结果(即存在/不存在缺陷),并据此对模型的性能进行客观评估。

其工作流程图如图2-1所示。

软件工程硕士论文怎么写

2.2软件缺陷数据分析

2.2.1软件缺陷数据集

为了更准确地预测软件缺陷,必须获取充足的高质量标记数据,并从中抽取出与软件缺陷相关的度量指标,接下来,需要深入研究这些度量指标与软件缺陷之间的各种关联性[78],因此,,在后续构建缺陷预测模型时,具备丰富的高质量缺陷数据集至关重要。

在软件缺陷预测领域,常用的开源数据集包括Promise和prop,Promise数据集[79]涵盖了不同软件如ant、camel、xerces等的多个版本信息,而prop数据集则包含了pBeans、poi、velocity等软件的多个版本信息,其中,本论文使用的开源数据集是Promise数据集。

2.2.2缺失值处理

缺失值在实际的数据集中往往是不可避免的,可能由于记录错误、设备故障或者数据采集过程中的其他原因导致。在软件缺陷预测的数据集中,缺失值的存在可能会影响模型的准确性和可靠性,因此,一种常见的处理方法是通过drop缺失值的方式来处理缺失值。

Drop缺失值指的是从数据集中移除包含缺失值的样本或特征,这种方法的优点是简单直接,能够保持数据集的完整性,但同时也存在着丢失信息的风险。在实际应用中,是否采取drop缺失值的策略需要根据数据集的具体情况来决定,包括缺失值的数量、缺失值所在的特征对预测的影响程度等因素。

例如,在处理软件缺陷预测的数据集时,如果某个特征的缺失值较多,且该特征对于预测目标的影响较小,可以考虑直接移除该特征。但如果缺失值较少或者缺失值对预测目标的影响较大,可能需要采取其他的处理方式,如填充缺失值或者利用其他特征进行预测。

第三章 预处理算法 ......................... 24

3.1 引言 ................................ 24

3.2 预处理算法流程 ................................. 24

第四章 基于多模型加权投票融合的软件缺陷预测方法 .................... 36

4.1 引言 ........................ 36

4.2 多模型加权投票融合算法 ......................... 36 

第五章 系统实现 ......................... 49

5.1 开发工具 ................................. 49

5.2 系统模块 ............................ 49

第五章系统实现

5.2系统模块

在软件缺陷分类预测系统中,主要功能分为六个模块:

(1)数据集名称模块,正确输入Promise数据集中的Project属性列的名称,包括ant、camel等14个软件,包括ant、camel等14个软件,其中所有的数据集都进行了数据标准化处理。

(2)平衡方法模块,用于平衡数据集,输入正确名称,目前系统数据不平衡处理方法只包括smote和tksmote,只支持以上两种选项,这个输入项区分大小写,一旦大写、特殊字符、空格或者输入其他算法会显示“平衡方法输入错误”,其中tksmote是本论文中提出的混合类别平衡与合成采样算法。

(3)特征选取方法模块,用于特征选择,正确输入特征选择算法名称,目前系统只支持lsdcc和lspcc两种选项,这个输入项区分大小写,一旦大写、特殊字符、空格或者输入其他算法会导致系统无法运行。其中,lsdcc是本论文提出的综合局部与全局相关性的特征选择算法,lspcc是结合拉普拉斯评分算法和皮尔逊系数的组合算法。

(4)特征相似度阈值模块,该阈值可自由调节,当特征相似度阈值模块输入0,特征选取方法模块失效,就剩下平衡方法和机器学习方法是可运作的,这时可以随机组合构建传统软件缺陷预测模型。当特征相似度阈值模块输入0.9,选择特征选取方法,表示在进行特征之间相关度计算时超过0.9会去掉一个特征。若选择特征阈值过低,则会容易丢失有用特征,影响预测结果。

(5)机器学习方法模块,用于构建分类模型,正确输入5种分类算法的名称,可选项均大写,包括BAGGING,SVM,KNN,RF,还有本论文提出的多模型加权投票融合算法SKRF,如若输入其他方法,则会显示目前不支持该方法。

(6)开始实验模块:点击开始实验按钮,系统会根据所选择的方法构建的模型对数据集进行分类预测。

软件工程硕士论文参考

第六章总结与展望

6.1结论

软件缺陷预测是为软件测试工作提供服务的,准确发现软件项目中存在缺陷的软件模块无疑是软件缺陷预测存在的意义。尽管当前软件缺陷预测研究已取得显著成果,但在预测过程中仍存