没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学学报基于变化度量的混合算法软件故障预测:一项实证研究Wasiur Rhmanna,J.,Babita Pandeya,Gufran Ansarib,D.K.PandeyCa印度勒克瑙Babasaheb Bhimrao Ambedkar大学(中央大学)CSITb理学士。Abdur Rahman Crescent科学技术学院,印度印度Lovely Professional University阿提奇莱因福奥文章历史记录:2018年12月8日收到2019年1月31日修订2019年3月6日接受在线发售2019年关键词:测试Bug缺陷机器学习混合算法软件指标A B S T R A C T开发的软件质量取决于其无缺陷运行。虽然错误可以被引入到软件开发生命周期的任何阶段,但在早期阶段识别错误可以减少测试和维护资源的分配成本。软件缺陷预测研究提倡在软件发布之前使用缺陷预测模型来识别错误使用错误预测模型可以帮助减少开发软件所需的成本和工作量。缺陷预测模型使用从软件项目获得的历史数据来训练模型,并在软件的未来版本上测试模型在目前的工作中,软件变更度量已被用于缺陷预测。利用变化度量对缺陷进行预测,取得了良好的机器学习和混合算法的性能。Android项目已用于实验目的。Git仓库已经被用来提取android的v4-v5,v2-v5用于缺陷预测。结果表明,GFS-logitboost-c具有最佳的缺陷预测能力。©2019作者制作和主办:Elsevier B.V.代表沙特国王大学这是一CC BY-NC-ND许可下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍由于软件测试通常是在交付软件的压力下进行的,软件工程界一直关注在软件测试之前识别错误模块。故障模块的识别有助于测试人员将更多的注意力集中在易故障模块的测试上。早期发现错误有助于节省成本和精力。不同的软件度量,例如:软件变更矩阵(SCM)和基于代码的矩阵(CBM),已经被各种研究人员用来识别软件中的故障模块(Zhou等人,2010; Choudhary等人,2018; Malhotra,2016;Moser和Pedrycz,2008)。研究人员已经使用各种CBM来预测故障模块(Zhou等人,2010;Choudhary等人,2018; Malhotra,2016; Moser和Pedrycz,2008)。SCM矩阵用于衡量发生的变化*通讯作者。电子邮件地址:wasiurrhmann786@gmail.com(W. Rhmann)。沙特国王大学负责同行审查两个软件版本之间的差异,而CBM用于测量代码的大小和复杂性。软件维护是软件开发周期中必不可少的一个环节,因为软件在其生命周期中会出现错误、增加或更改功能。软件的变更需求在其开发后开始,并通过测量产品、过程和资源的不同软件度量来管理和控制(Fenton和Bieman,2015)。用于软件项目开发的产品和资源可能会随着时间而变化。当有更好的过程可用时,过程可能会发生变化,如果可用,将使用高级工具为现有软件添加额外功能。不同属性的变化可以通过不同软件度量的测量来控制。不同的软件度量和这些度量的子集已经被各种研究人员用于创建具有改进的故障预测准确性的模型(Gondra,2008)。本研究的主要目的是建立基于软件变更度量的故障预测模型。以下研究问题(RQ)在这项研究中得到解决。Q1.基于混合搜索的算法(HSBA)如何使用变化指标预测Android软件中的故障https://doi.org/10.1016/j.jksuci.2019.03.0061319-1578/©2019作者。制作和主办:Elsevier B.V.代表沙特国王大学这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。制作和主办:Elsevier可在ScienceDirect上获得目录列表沙特国王大学学报杂志首页:www.sciencedirect.com420W. Rhmann等人/Journal of King Saud University●●●Q2. 基于HSBA和机器学习技术(MLT)的Android软件预测模型的性能之间有什么区别Q3.研究中使用的不同技术是否具有统计学等效性?以下是这项工作的主要贡献探索HSBA在使用变化度量的故障预测中的应用将HSBA的性能与顶级机器学习技术(MLT)进行比较。故障预测技术的统计分析全文共分八个部分:第一部分为绪论。相关工作在第2节中讨论。第3节描述了各种SCM和数据集。第4节讨论了业绩计量。不同算法的实现细节和获得的结果已在第5节中讨论。第6节和第7节包含对各种研究问题和研究威胁第8结束工作2. 相关工作Choudhary等人(2018)部署了一种基于SCM的MLT用于软件故障预测。他们将他们的模型与现有的基于CBM的故障预测模型进行了比较。他们使用随机森林,J48和KNN进行故障预测。结果表明,随机森林的查准率最高为0.73,而J48和KNN的查全率最高,分别为0.375和0.415。在目前的工作中,故障预测模型开发从现有的SCM应用混合搜索算法和MLT。Malhotra(2016)基于面向对象软件度量(OOSM)使用MLT进行软件缺陷预测。他们在从git仓库获得的android软件上进行了实验。他们部署了多层感知器(MLP),逻辑回归(LR)和支持向量机。MLP和LR表现出优于其他技术的性能,而SVM表现出最差的性能。Moser和Pedrycz(2008)已经部署了MLT进行故障预测,并分析了一些度量集的预测能力,实验结果表明,分类正确率在75%以上,召回率在80%以上。结果发现,基于过程度量的缺陷预测模型相比,代码度量提供了Yang等人(2015)开发了一种学习排名模型来预测软件缺陷,并将其与其他基于学习的算法进行了比较。Sharma和Chandra(2018)使用软计算技术进行故障预测。在我们之前的工作中,混合算法已用于缺陷预测,使用静态代码度量进行跨项目和内部缺陷预测(Rhmann,2018 a,b)。Kaur和Kaur(2018)使用了六种机器学习技术来创建故障预测模型 。 他 们 使 用 不 同 的 软 件 度 量 , 如 C-K , Henderson-Sellers ,QMOOD,McCabe's,Martin's度量等进行故障预测。在5个开源项目上进行了实验,结果表明随机森林和Bagging技术具有较好的预测能力,而朴素贝叶斯的预测能力较差。Kaur和Kaur(2014)应用了六种机器学习技术来预测错误的类。他们使用了五个开源软件作为实验目的,并使用面向对象的指标作为自变量来预测错误的类。结果表明,Bagging和J48分类器具有更好的性能相比,用于故障预测的其他技术。Manjula和Florence(2018)提出了一种基于机器学习和遗传算法的用于软件缺陷预测。他们使用遗传算法(GA)从数据集中选择更好的特征。然后将决策树模型应用于软件缺陷预测。实验结果表明,该方法具有较好的分类精度。Erturk和Sezer(2015年)应用自适应神经模糊推理系统(ANFIS),使用McCabe软件度量预测软件中的故障。他们还使用支持向量机(SVM)和人工神经网络(ANN)建立预测模型。PROMISE知识库已被用来获得数据集的实验目的。SVM、ANN和ANFIS技术获得的ROC-AUC分别为0.7795、0.8685和0.8573。目前的工作涉及创建的缺陷预测模型的基础上,软件变更度量作为独立的度量,使用混合搜索算法和MLT。对这些技术的性能进行了统计比较。3. 缺陷预测模型在本节中,讨论了SCM、数据集和用于创建缺陷预测模型的不同技术。3.1. 用于缺陷预测的软件变更度量(SCM)在软件开发生命周期中进行的任何变更都是通过变更或过程度量来衡量的(Fenton和Bieman,2015)。这些软件度量是在软件项目的整个生命周期中收集的,具有多个软件版本一些过程度量是代码扰动度量、更改突发和代码增量。代码流失度量代码演变的速率。更改突发度量度量测量连续发生的更改代码增量度量两个软件构建之间的差异,就像软件度量一样。在这项工作中,如下所示的9个SCM被用作自变量,并作为MLT和HBSA的输入缺陷/非缺陷类被视为输出。1. LOC-ADDED是添加到文件中的程序代码行数2. LOC-DELETED是从文件3. LOC-CHANGED是从文件4. MAX-ADDED是针对所有提交删除5. MAX_LOC-CHANGED是添加到文件6. MAX_DELETED是删除到文件中的程序代码的最大行数7. CODE CHURN被定义为考虑到存储库中所有版本的文件的(添加的程序代码行和删除的程序代码行8. MAX CODE CHURN定义为软件中文件的最大值(添加的程序行和删除的程序行之间的差异),考虑到其在存储库9. AVERAGE CODE CHURN定义为软件中文件的平均值(增加的程序行和删除的程序行之间的差异),考虑到其在存储库3.2. 用于缺陷预测模型创建的在这项研究中,前三大机器学习技术(Choudhary等人,2018)和前两种混合算法(Rhmann,2018)已用于创建缺陷预测模型。这些技术在表1中描述。W. Rhmann等人/Journal of King Saud University421表1用于缺陷预测的不同技术。技术技术名称描述MLT随机森林在随机森林中使用许多决策树进行训练特征的随机子集用于训练各种决策树。预测的平均值用于预测。多层感知器它是基于反向传播来训练分类器。它包含一些隐藏层,在输入层和输出层之间具有sigmoid函数。除输出层外的每个隐藏层都包含有偏神经元。输出是输入的非线性函数J48该技术是在Weka中以java实现的C4.5算法,并且默认设置用于执行实验。HSBA Fuzzy-AdaBost(GFS-Adaboost-c)Logitboost(GFS-logitboost-c)该算法从模糊规则中学习多个弱分类器被组合以形成更高性能的分类器。一个投票强度被分配给每个弱分类Jesus等人。(2004年)。该算法还使用模糊规则来训练分类器。模糊规则库是通过对正确分类的训练实例进行向下加权来以增量方式构建的,Obern和Sanchez(2006)3.3. 数据收集出于实验目的,使用来自软件程序的历史数据来预测软件中的缺陷类。数据收集的完整过程如图1所示。数据来自GIT仓库。使用android-4.0.1_r1、android- 5.0.0_r1、android-2.0.1_r1、android-5.0.0_r1版本来研究不同MLT的性能。将为Android-4.0.1_r1提取的指标更改为Android-5.0.0_r1,将为Android-2.0.1_r1提取的指标更改为Android-5.0.0_r1。为简单起见,从android-4.0.1_r1到android-5.0.0_r1获得的数据集被写成v4-v5,android-2.0.1_r1 - android-5.0.0_r1的数据集被写成v2-v5。以下步骤用于从Android项目的GIT存储库中提取SCM。1. Git log命令git log-numstat-oneline android-4.0.1_r1 android-5.0.0_r1用于提取两个版本之间不同文件中添加和删除的行数。2. 从按文件名分组的文件中选择文件名、和(插入行)、和(删除行)、和(更改行);用于计算每个文件的插入行、删除行和更改行3. 使用MySQL查询计算不同的变化度量,并通过日志信息获取包含错误的文件,并将它们与不同的度量组合。数据集的详细描述,包括实例数、缺陷类和非缺陷类的数量,见表2。4. 业绩评价指标研究中使用的数据集包含不相等数量的缺陷和非缺陷,即数据集是偏斜的,需要仔细选择性能指标。在本研究中,正例是缺陷类。四个不同的术语被用来描述模型Fig. 1. 基于git change log的软件缺陷预测模型。422W. Rhmann等人/Journal of King Saud University表2数据集的描述数据集号码实例缺陷类非缺陷类数量安卓-4.0.1_r1-17062108安卓-2.0.1_r1-32462262TP(True Positive)-TN(True Negative)FP(假阳性)FN(假阴性):错误分类为非缺陷类的缺陷类数量各种研究人员使用精确度和召回率值来评估缺陷预测模型的性能(Kim等人,2008; Nam等人, 2013年)。精密度(阳性预测值)。通过将正确分类为缺陷的类别数除以缺陷类别总数获得精度。精度= TP/(TP + FP)。召回率(灵敏度)-通过将正确分类为缺陷的模块数除以总缺陷模块数获得。回忆= TP/(TP + FN)。查全率和查准率的值介于0和1之间。最佳模型的查全率和查准率值为1。5. 执行情况和结果在研究中,开源软件Weka(http://www.cs.wai-kato.ac.nz/ml/weka)用于部署MLT,开源软件Keel(http://www.keel.es)用于开发基于混合算法的模型。HSBA在开源工具Keel中实现。在研究中使用了10倍交叉验证为了执行10折交叉验证,数据集被分成10个部分,9个部分用于训练模型,剩余的1个部分用于模型的验证该过程重复10次,组合结果用作分类器性能的最终结果。在weka软件中使用MLT的参数设置进行了实验。表3描述了用于缺陷预测的各种MLT的性能由于空间限制,我们使用了前三种MLT(Choudhary等人,2018; Malhotra,2016)和软件故障预测的前两名HSBA(Rhmann,2018)。研究中使用的MLT是随机森林,多层感知器和J48。 随机森林是Entrance学习技术,多层感知器是基于神经网络和J48是基于决策树。研究中使用的HSBA是GFS-Adaboost-c和GFS-LoogitBoost-c。表4描述了用于简单的控制参数设置的值关于HSBA 表5描述了通过HSBA获得的结果。图2显示了v4-v5和v2-v5数据集中各种 MLT和HBSA 从图 2,很明显,与MLT相比,HSBA算法对两个数据库都显示出高召回率值。然而,表3MLT的性能数据集技术精密度(P)召回(R)v4-V5随机森林(RF)0.6160.618v4-V5多层感知器(MLP)0.4130.624v4-V5J480.5240.624V2-V5随机森林(RF)0.8200.836V2-V5多层感知器(MLP)0.6160.618V2-V5J480.8 220.840表4HSBA的控制参数S.编号SBA控制参数1GGA-FS交叉概率0.7,突变概率0.01人口规模50,评价次数10,000 Beta等效系数0.99,邻居数量1使用精英是2GFS-Adaboost-c标签= 3,规则= 83GFS-LoogitBoost-c标签= 3,规则= 25表5HSBA的结果数据集技术精密度(P)召回(R)v4-V5GFS-AdaBoost-c(GFS-AB-c)0.6460.963v4-V5GFS-LoogitBoost-c(GFS-LB-c)0.6460.963V2-V5GFS-Adaboost-c(GFS-AB-c)0.8150.992V2-V5GFS-LoogitBoost-c(GFS-LB-c)0.8220.992图二.通过在v4-v5和v2-v5数据集中部署各种MLT和HBSA获得的精度。与v4-v5相比,v2-v5数据库的RF、J 48、GFS-LoogitBoost-c和GFS-AdaBoost-c的值要高得多。除HBSA外,v4-v5的总体精密度和召回率值低于如表6所示,v4-v5数据集的自变量之间的相关系数因此,需要进行降维的预处理步骤(Raschka和Mirjalili,2017)。这就是MLT在v4-v5数据集上表现不佳的原因v4-v5之间的相关系数这表明自变量是负相关的或它们是非冗余的。因此,不需要对数据集进行预处理,因此MLT和HBSA在v2-v 5数据集中表现出5.1. Friedman检验Friedman检验是一种非参数检验。它不需要从正常人群中抽取样本。在该测试中,根据不同的模型预测技术,W. Rhmann等人/Journal of King Saud University423表6v4-v5自变量之间的相关性。公制/公制M1M2M3M4M5M6M7M8M9M11.0M21.01.0M31.01.01.0M41.01.01.01.0M51.01.01.01.01.0M61.01.01.01.01.01.0M70.90.80.90.90.80.91.0M80.90.80.90.90.80.91.01.0M90.90.80.90.90.80.91.01.01.0表7v2-v5自变量之间的相关性。-0.02表8通过基于精度的Friedman检验获得的不同技术的排名技术RF MLP J 48 GFS-AB-cGFS-LB-c平均秩3.00 1.00 3.25 3.25 4.50表9基于回忆的不同技术的排名技术RF MLP J 48 GFS-AB-cGFS-LB-c平均秩1.50 1.75 2.78 4.50 4.50不同数据集上的缺陷预测能力。该检验用于检查不同技术之间是否存在任何统计学差异。Ho:研究中使用的不同技术在缺陷预测能力方面具有统计学Ha:研究中使用的不同技术在缺陷预测能力方面存在统计学表8和表9给出了通过应用弗里德曼检验获得的不同技术的平均等级。使用的检验统计量为N = 2,卡方= 5.368,df(自由度)= 4,p值=0.252。由于p值大于显著性水平(0.05)。因此,零假设可接受。使用的检验统计量为N = 2,卡方= 7.243,df(自由度)= 4,p值=0.124。由于p值大于显著性水平(0.05)。因此,零假设可接受。因此,用于缺陷预测的不同技术的性能在统计上是相同的。6. 回答各种研究问题以下是对各项研究问题的答复Q1. HBSA在使用SCM for android软件进行故障预测时的性能如何?答:在用于故障预测的两种HBSA中,GFS-LoogitBoost在准确率和召回率方面的性能优于其他HBSA。Q2. Android软件的HBSA与基于MLT的预测模型的性能之间有什么区别答:与MLT相比,HBSA显示了两个数据集因此,HBSA是很好的故障预测支持向量机。Q3. 不同的技术在统计学上是相等的吗?答:由于准确率和召回率的零假设是可以接受的,因此不同技术的性能之间没有统计学差异。7. 对有效性的由于在这项工作中使用的是android项目,它是基于java的,因此有可能威胁到其他语言(如C,C++等)的结果。内部威胁也存在,因为软件大小也可能影响类出错的概率。软件大小是另一个可能影响使用SCM预测缺陷模块效果的因素。研究中使用的指标已经建立,并且使用MySQL查询进行计算因此本研究不存在结构效度威胁8. 结论软件中缺陷类的识别由于其在减少测试工作量方面的有效性而受到关注历史数据用于预测未来版本中的缺陷,公制/公制M1M2M3M4M5M6M7M8M9M1M2M3M41-0.020.8411-0.0310.841M5M6-0.020.841-0.03-0.031-0.020.8421-0.031M71-0.020.841-0.020.841M81-0.020.841-0.020.8411M91-0.020.841-0.020.84111424W. Rhmann等人/Journal of King Saud University软件在目前的工作中,SCM已被探索使用MLT和HBSA预测故障类。在使用混合算法时,GFS-loogitboost在精确度和召回率方面表现出最佳性能。Friedman统计检验用于评估不同技术的性能是否具有统计学差异。结果发现,用于缺陷预测的不同技术在其性能方面在统计上是相同的。需要在不同类型的大型数据集上进行实验以推广结果。利益冲突一个也没有。引用Choudhary,G.R.,库马尔,S.,库马尔,K.,米什拉,A.,加塔尔角,2018年软件故障预测的变化度量实证分析。Comput.电气工程师:Elsevier 67,15-24.Erturk,E.,Sezer,E.A.,2015.软件故障预测的几种软计算方法比较。专家系统应用程序、 Elsevier 42(4),1872-1879.芬顿,N.,Bieman,J., 2015.软件开发一种严谨而务实的 方法。CRC出版社,泰勒和弗朗西斯集团。贡德拉岛2008年应用机器学习于软体错误倾向预测。J. Syst. Softw. 81,186-195。天啊,M.J.霍夫曼,F.,Navascues,L.J.,桑切斯湖2004.基于模糊规则的分类器与进化提升算法的归纳。IEEE Trans.模糊系统12(3),296-308。Kaur,A.,考尔岛2014年。故障预测机器学习算法的经验评估。LNSE讲座笔记软件工程师。 2(2),176-180。Kaur,A.,考尔岛2018.开源项目中故障预测分类算法的实证评估。 J.沙特国王大学- Comput.信息科学,Elsevier30,2-17.Kim,S.,Whitehead,E.J.,张玉,2008.软件变更的分类:干净的还是有缺陷的。IEEETrans. Softw. Eng.4(2),181-196。马尔霍特拉河2016.使用机器学习技术和Android软件进行缺陷预测的经验框架。Appl.软计算, Elsevier 49(C),1034-1050.曼朱拉角,佛罗伦萨湖2018.基于机器学习和优化技术的软件缺陷预测混合方法。国际计算机信息工程师,世界科学院Sci. Eng. Technol. 12(1),28-32.莫泽河Suci,Pedrycz W.,2008.对缺陷预测的更改代码属性和静态代码属性的效率的比较分析。ICSE '08,Leipzig,Germany,pp.181-190.Nam,J.,Pan,S.J., Kim,S.,2013. 迁移缺陷学习。国际软件大会论文集(ICSE'13),pp.382-391.Occupy,J.,桑切斯湖,2006.使用Logitboost算法归纳描述性模糊分类器。软计算,Springer10,825-835.Raschka,S.,Mirjalili,V.,2017. Python机器学习出版社:PacktPublishing LtdRhmann,W.,2018年b月。使用基于混合搜索的算法进行跨项目缺陷预测。国际信息技术杂志,斯普林格,https://doi.org/10.1007/s41870-018-0244-7.Rhmann,W.,2018年a.基于混合搜索的算法在软件缺陷预测中的应用。国际现代教育计算杂志。科学,MECS 10(4),51-62。网址:http://doi.org/10.5815/ijmecs.2018.04.07Sharma,D.,Chandra,P.,2018年软件故障预测模型开发中软计算技术的比较分析Int. J. INF. 技术人员:斯普林格1https://doi.org/10.1007/s41870-018-0211-3网站。杨,X.,唐,K.,Yao,X.,2015.软件缺陷预测的学习排序方法。IEEE Trans. Reliab.64(1),234-246。Zhou,Y.,(1996年),中国科学院,徐,B.,梁汉,2010.复杂性度量预测面向对象系统中易出错类的能力。J. Syst. Softw. 83,660-674。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功