SCI论文(www.lunwensci.com)
摘 要:近年来计算机软件在信息技术、文化教育、生物医疗以及军事等领域都得到了广泛且深入的应用,并且用户需求 持续增多,软件功能愈加复杂多样。软件开发使用的效率以及质量问题随之凸显出来。软件测试作为贯穿软件设计工程全过程 的重要环节,通过多种多样的成熟的测试技术及时发现并且排除软件中存在的问题缺陷来提高软件的整体设计效率和质量、降 低软件系统设计开发的成本。软件缺陷预测技术则是对软件测试任务进行指导和评估的重要途径,缺陷预测技术可以精准地进 行预测软件缺陷的分布情况对软件测试工作的推进有着重要的指导作用。本文将深入研究集成学习在软件缺陷预测技术领域的 发展与应用。
关键词:软件开发,软件测试,软件缺陷预测,机械学习,集成学习
Research on Software Defect Prediction Technology Based on Ensemble Learning
YAN Xinbao
(Shanxi Application Technology College, Taiyuan Shanxi 030062)
【Abstract】:In recent years, computer software has been widely and deeply used in information technology, culture and education, biomedicine and military fields, and user demand continues to increase, and software functions are becoming more complex and diverse. Efficiency and quality issues in the use of software development are highlighted. Software testing as an important link throughout the whole process of software design engineering, through a variety of mature testing technology to timely discover and eliminate the existing defects in the software to improve the overall design efficiency and quality of the software, reduce the cost of software system design and development. Software defect prediction technology is an important way to guide and evaluate software testing tasks, and defect prediction technology can accurately predict the distribution of software defects and has an important guiding role in promoting software testing work. This paper will delve into the development and application of integrated learning in the field of software defect prediction technology.
【Key words】:software development;software testing;software defect prediction;mechanical learning;integrated learning
1 绪论
1.1 软件缺陷预测技术的背景与发展
在飞速发展的信息化时代,软件市场的不断扩大, 软件产品的使用渗入到我们国家的各个领域、人民群众 生活的方方面面。各式各样的软件在给我们带来便利的 同时,因为软件缺陷造成的巨大损失也不可无视。中国 铁路火车票网上订票系统在春运、国庆、中秋等节假 日,曾因客流量激增导致软件系统崩溃,用户无法正常 购票导致无法正常出行 ;在疫情防控期间,英国国家卫生服务软件系统由于软件设置错误,导致数千人被错误 告知自己被感染。由于软件缺陷导致的严重软件缺陷事 件数不胜数,全球互联网时代,一旦发生软件缺陷故障 都会带来严重的经济等的损失,因此加强软件的安全 性、可靠性就尤为重要。
软件缺陷预测技术作为当今软件工程领域最热点的 技术之一, 对软件测试工作开展有着极为重要的指导作 用。软件缺陷预测技术大体上可以分为动态和静态两种缺 陷预测技术,动态缺陷预测技术有的预测模型 :指数分布模型、S 曲线分布模型、雷利模型等 ;静态缺陷预测技术 : 缺陷分布预测技术、基于度量元的缺陷预测技术等。
1.2 本文研究的主要内容
对软件缺陷预测现有技术进行深入的了解和学习、 探索软件缺陷预测技术基础模型,重点整理集成学习相 关内容,了解基于机械学习的软件测试技术,最后将集 成学习与软件缺陷预测相结合,对基于集成学习的软件 缺陷预测技术进行研究。
2 相关理论与技术分析
2.1 软件缺陷预测度量元
软件缺陷预测度量是通过在软件开发项目中选取科 学合理的度量元 [1],并通过构建模型的方式得到软件缺 陷预测的度量元以及软件缺陷预测的关系预测模型,软 件缺陷预测就需要使用该关系预测模型对新开发出来的 软件模块进行预测,查看软件开发目前是否含有软件缺 陷以及预测这些缺陷的分布情况。
目前市场上常见的与软件缺陷预测紧密相关的软件 复杂度属性度量主要有 3 类,第一类是代码度量,该度 量方法主要是通过分析解读源代码的总行数、代码行数、 注释行数、空白行数、代码及注释行数等数据对软件进 行缺陷预测 ;第二类是 McCabe 度量(环路度量), 该 度量方法主要是依据软件的程序控制流的复杂性、流程 图复杂性、环形复杂度、基本复杂度、设计复杂度等信 息对软件缺陷进行确认 ;第三类是 Halstead 度量,此度 量方法是通过计算操作符、运算符、基础测量、衍生测 量、衍生码测量等数据信息完成对软件缺陷的预测。
2.2 软件缺陷预测原理
软件缺陷预测的目的是帮助软件开发人员在软件开 发过程的早期就对整个软件系统的开发在宏观上进行全 局把控,能够提早发现软件系统的各个模块中可能出现 缺陷的方面以及缺陷出现的倾向,从而在软件测试阶段 与软件程序开发、修改的过程中科学合理有针对性的分 配资源,从而提高软件开发的质量以及效率、降低软件 开发所消耗的时间、人力、物力等的成本 [2]。
软件缺陷的预测过程如下 :(1)获取度量元 :从软 件信息中,通过科学合理的度量属性选择度量元 ;(2) 获取历史缺陷信息 :根据缺陷报告,提取软件缺陷类 型 ;(3)进行缺陷训练数据 :将获取的数据信息进行缺 陷训练 ;(4)预测模型训练 :在缺陷训练的基础上进 行 ;(5)预测模型 :依赖机械学习、集成学习,输入新 的模块、软件度量 ;(6)获得预测结果。
2.3 软件缺陷预测技术
软件缺陷预测技术分为动态和静态 2 种缺陷预测技 术 [3]。这 2 种软件缺陷预测技术使用的领域各有不同。
静态软件缺陷预测技术基于对软件开发的程序模块 的软件缺陷的倾向性、软件缺陷的密度以及软件缺陷 数量进行预测。静态软件缺陷预测技术又可分为 3 类 : (1)缺陷分布预测数据 :分类技术、回归技术 ;(2)缺 陷预测模型 :捕捉类型、质量评估类型 ;(3)基于度量 元的缺陷预测技术 :基于软件规模、基于面向软件复杂 度、基于面向对象度量元。
2.4 软件缺陷预测基础模型
软件缺陷预测的基础模型有以下 4 种 :逻辑回归、 决策树、朴素贝叶斯和神经网络。
逻辑回归通过给软件系统输入不知类别对象的属性 特征序列得到对象所属类别。逻辑回归公式 :Y(x)=1/ (1+e-wTx)。其中 Y 是决策值、 x 是特征值、 e 是自然对数、 Y (x)函数图是一条 S 形曲线。
决策树是一种基于特征对实例进行分类的基本的分 类与回归算法,类似于事情的决策过程。决策的具体过 程如下 :从训练数据众多的特征中选取一个特征作为决 策树节点的分裂标准进行第一步特征选择 ;根据所选的 特征进行标准评估,运用递归的方式自上而下生成决 策树的子节点,直至数据集不可再生时停止决策树的生 长,完成决策树的生长 ;最后进行剪枝,缩小决策树的 结构规模、缓解过拟合的问题。
朴素贝叶斯是基于贝叶斯定理与特征条件独立假设 的算法。算法分为 3 个阶段 :第一阶段为准备阶段,获 取软件缺陷测试训练样本 ;第二阶段为贝叶斯分类器学 习阶段,需要估计每个样本出现的概率、估计每个类别 条件下每个属性值出现的概率、对每个属性组合计算其 属于每个类别的概率 ;第三阶段为推测阶段,选择最大 概率值作为该数据的推测结果。
神经网络是通过模仿动物神经网络行为特征进行分 布式并行信息处理的算法模型。神经网络有前向传播和 反向传播两部分 :前向传播从输入层到输出层,计算每 一层每一个神经元的激活值 ;反向传播则根据前向传播 计算出来的激活值来计算每一层参数的梯度,从后往前 对进行的参数更新。
2.5 集成学习方法
集成学习是一种机器学习范式,先通过一定的规则 训练生成多个基学习器,再采用某种集成策略判断输 出最终结果 [4]。经验证后通过集成会得到精度较好的结 果。目前运用于软件开发中的集成学习方法大致分为 3 种。
(1) Stacking 是极具层次性的融合模型。通过从 初始数据集训练出初级学习器,然后“生成”一个新的 数据集用来训练次级学习器。在生成的新数据集中,初 级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
算法描述如下 :
训练集 M={(x1.y1),(x2.y2),… ,(xm,ym)} ;
初级学习算法 R1.R2.… ,RT ;
次级学习算法 R。
(2) Bagging 是并行式集成的学习算法。确定一个 包含 m 个样本的数据集,先任意选取出一个样本放入采 样集中,再把该样本返回初始数据集,使得下次采样时 该样本仍可能被选中。
算法描述如下 :
训练集 N={(x1.y1),(x2.y2),… ,(xn,yn)} ;
基学习算法 R ;
训练轮数 S。
(3)AdaBoost 是 Boosting 集成中最具代表性的 算法。Boosting 是利用串行集成的思想将弱学习器提升 为强学习器,AdaBoost 的思想与 Boosting 算法思想基 本相似。
算法描述如下 :
训练集 T={(x1.y1),(x2.y2),… ,(xn,yn)} ;
基学习算法 R ;
训练轮数 G。
3 基于集成学习的软件缺陷预测
3.1 软件缺陷预测技术模型
经过对缺陷预测相关技术的分析将结合特征选择、 类不平衡处理和集成学习综合建模构建软件缺陷预测模 型。(1) 创建 NASA MDP 数据集 ;(2)将特征全集进行 特征评估选取特征 ;(3)不平衡数据集的处理 :过采样、 欠采样等平衡有缺陷的样本 ;(4)经过预处理后的数据 : 基于 AdaBoost 算法、基于 Stacking 算法、基于 Bagging 算法,通过精确率查全率、AUC 等评价指标综合度量。
实际软件开发项目全过程 :(1)确立数据特征 ;(2) 获取项目工程数据 ;(3)通过软件缺陷管理工具 JIRA 为软件工程数据做标记 ;(4)开发设计软件缺陷预测 系统 ;(5) 引入基于数据 AdaBoost 的软件缺陷预测模 型 ;(6)预测软件工程数据。
3.2 特征选择
特征选择是一种典型的数据预处理技术,在分类任 务中起着关键作用。它是从特征全集中利用一定的方法 选择出对预测结果最有用的特征子集的过程,此技术在 模式识别、文字识别和人脸检测领域中被广泛应用。特 征选择分为 3 类 :包装式特征选择、嵌入式特征选择和 过滤式特征选择。
特征选择步骤 :(1)生成子集 :不同的搜索策略有 不同的特征选择 ;(2)评估子集 :依据特征排序进行特征子集评估 ;(3)停止标准 :经过多次迭代直到达到停 止标准停止搜索。
3.3 数据类不平衡处理
对于数据类不平衡的处理分类可以从 3 个方面进 行 :算法层面、数据层面以及集成学习。分类任务中不 同类别的训练样本数目差别也很大。
数据集处理过程中会出现的问题 :(1)欠采样 :去 除一些分类中多余的样本,使达到正负样本平衡 ;(2) 过采样 :增加一些样本数少的分类中的样本,从而达到 正负样本数平衡 ;(3)类别均匀采样方法 :通过对每类 数据进行一些处理,使得达到最终采样采集到每类数据 的概率一样 ;(4)阀值移动 :利用“再缩放”思想,用 来缓解类别不平衡的方法。
3.4 基于集成学习的软件缺陷预测模型
基于不同的技术软件缺陷测试模型各不相同。
(1)基于 Stacking 的缺陷预测模型 :由基础分类 算法构成,将逻辑回归、朴素贝叶斯、决策树和神经网 络作为 Stacking 集成学习的基础分类器,Stacking 算 法先通过学习训练出多个不同的模型,然后再将之前训 练的各个模型的输出作为输入来训练模型,以得到最终 的输出。
(2) 基于 Bagging 的缺陷预测模型 :从训练集中 均匀、迭代的采用又放回的随机抽样方式获取训练数 据,再在这些训练数据上采用分类方法,最后投票选出 最终的分类结果。
(3) 基于 AdaBoost 的缺陷预测模型 :AdaBoost 集成学习模型意在将弱学习算法提升为强学习算法,通 过迭代逐步增强前一个分类器分类误差率较小的弱分类 器的权值,减小分类误差率较大的弱分类器的权值,再 将加权后的样本重新训练。
4 总结
计算机软件在各个领域都得到了广泛地应用的同时 必须不断提高计算机硬件的可靠性、计算机软件的安全 性,扩大软件系统规模的同时加快软件工程中软件测试 技术的发展,以及计算机软件缺陷预测的技术创新。
参考文献
[1] 崔正斌,汤光明.基于遗传算法和KNN的软件度量属性选择 研究[J].计算机工程与应用,2010.46(30):57-60.
[2] 陈琳.基于机器学习的软件缺陷预测研究[D].重庆:重庆大 学,2016.
[3] 秦丽娜.软件缺陷静态预测研究[D].武汉:华中师范大学,2011. [4] 潘志松,陈斌,缪志敏,等.One-Class分类器研究[J].电子学 报,2009.37(11):2496-2503.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/55748.html