《中文模板 - ChinaVis 2020.docx》由会员分享,可在线阅读,更多相关《中文模板 - ChinaVis 2020.docx(4页珍藏版)》请在第壹文秘上搜索。
1、中国计算机学会软件学报ISSN1000-9825.CODENRUXUEWE-mail:jos第17届嵌入式系统大会JournalofSoftware,(doi:I0.13328ki.jos.000000)中国,西安,2019-09-20-22。中国科学院软件研究所版权所有.ll:+86-10-62562563静态软件缺陷预测方法*陈翔R,顾庆2,刘篁的2,刘树龙2,ft超2Y南通大学计算机科学与技术学院,江苏南通226019)Y计算机软件新技术国家重点实验室(南京大学),江苏南京210023)通讯作者:陈翔,E-mail:*摘要:静态软件块陷预测是软件工程数据挖掘领域中的一个研究热点.通过分析
2、软件代码或开发过程,设计出与软件抉陷相关的度量元;随后,通过挖掘软件历史仓库来创建缺陷预测数据集,旨在构建出缺陷预测模型,以预测出被测项目内的潜在块陷程序模块,最终达到优化测试资源分配和提高软件产品质量的目的.对近些年来国内外学者在该研究领域取得的成果进行了系统总结.首先,给出了研究框架并识别出了影响缺陷预测性能的3个重要影响因素:度量元的设定、缺陷预测模型的构建方法和缺陷预测数据集的相关问题;接着,依次总结了这3个影响因素的已有研究成果;随后,总结了一类特殊的软件块陷预测问题(即,基于代码修改的挟陷预测)的已有研究工作;最后,对未来研究可能面临的挑战进行了展望.关键词:软件质量保障;软件块陷
3、预测;软件度量元;机器学习;数据集预处理中图法分类号:TP311中文引用格式:陈翔,顾庆,刘望舒,刘树龙,倪超.静态软件缺陷预测方法研究.软件学报.hp:/WWWjoS英文引用格式:ChenX.GuQ.LiuWS.LiuSL.NiC.State-of-the-Arlsurveyofstaticsoftwaredefectprediction.RuanJianXueBao/JournalofSoftware.2016(inChinese),State-of-the-ArtSurveyofStaticSoftwareDefectPredictionCHENXiang1GUQing2,LIUWang
4、-Shu2,LIUShu-Long2,NIChao2,(SchoolofComputerScienceandTechnology.NantongUnivcrsily.Nantong226019,China)2(StaICKeyLaboratoryforNovelSoftwareTechnology(NanjingUniversity),Nanjing210023,China)Abstract:Staticsoftwaredefectpredictionisanactiveresearchtopicinthedomainofsoftwareengineeringdatamining.Itfirs
5、taimstodesignnovelcodeorprocessmetrics,whichhavestrongcorrelationwiththefaultsintheprogrammodules.Itsecondconstructsasoftwaredefectpredictionmodelbasedon(hetrainingdata,whichisgatheredafterminingsoftwarehistoricalrepositories.Itfinallyuses(hetrainedmodeltopredictpotentialdefect-pronessprogrammodules
6、.Theresearchonsoftwaredefectpredictioncanoptimizetheallocationoftestingresourcesand(henimprovethequalityofsoftware.Thissurveyoffersasystematicsurveyofexistingresearchachievementsofthedomesticandforeignresearchersinrecentyears.First,aresearchframeworkisproposedand(hreekeyfactors(i.e.,metrics,modelcon
7、structionapproaches,andissuesindatasets)influencingIheperformanceofdefectpredictionareidentified.Next,existingresearchachievementsinthesethreekeyfactorsarediscussedinsequence.Furthermore,theexistingachievementsonaspecialdefecpredictionissues(i.e.,codechangebaseddefec(prediction)aresummarized.Finally
8、aperspectiveofthefutureworkinthisresearchareaisdiscussed.Keywords:softwarequalityassurance:softwaredefectprediction;softwaremetrics;machinelearning:datapreprocessing基金项目:国家自然科学基金(00000000.00000000):南京大学计算机软件新技术国家重点实验室开放课题(KFKTooOOOoOO)Foundationitem:NationalNaturalScienceFoundationofChina(00000000.0
9、0000000):StateKeyLaboratorjforNovelSoftwareTechnology(NanjingUniVerSity)开放课题(KFKTO(X)(X)(X)O)收稿时间:0000-00-00:修改时间:0000-00-00:采用时间:O(X)O-OO-OOijos在线出版时间:0000-00-00CNKl在线出版时间:0000-00-00软件缺陷(Sofiwaredefeci)产生于开发人员的编码过程,需求理解不正确、软件开发过程不合理或开发人员的经验不足,均有可能产生软件缺陷.而含有缺陷的软件在运行时可能会产生意料之外的结果或行为,严重的时候会给企业造成巨大的经济损
10、失,甚至会威胁到人们的生命安全.1研究框架静态软件缺陷预测可以将程序模块的缺陷倾向性、缺陷密度或缺陷数设置为预测目标.以预测模块的缺陷倾向性为例,其典型研究框架如图1所示.ii-iI软件缺陷Bi流过程II!块进行度4模型构建阶段模型应用阶段-I度北元的设包I模型的构建方函I数据集的相关福Fig.lStaticsoftwaredefectpredictionresearchframeworkusingdefect-pronenessaspredictiontarget图1以缺陷倾向性为预测目标的静态软件缺陷预测研究框架通过分析上述软件缺陷预测过程,我们识别出影响缺陷预测性能的3个重要影响因素(如
11、图1的下半部分所示).(1)度量元的设计(见第2节).挖掘软件历史仓库、设置新颖的与软件缺陷存在强相关性的度量元,是构建高质量缺陷预测模型的关(2)缺陷预测模型的构建方法(见第3节).本文将已有的构建方法分为两类,其中:基于机器学习的方法是目前主流的建模方法;而基于缓存的方法则借助缺陷的局部性原理来尝试识别出缺陷模块(3)缺陷预测数据集的相关问题(见第4节).本文从两个角度对缺陷预测数据集相关问题进行分析.2度量元的设计挖掘软件历史仓库、设置新颖的与软件缺陷存在强相关性的度量元,是构建高质量缺陷预测模型的关健.2.1 基于软件代码的度量在研究早期,大部分研究工作通过分析软件代码来设计度量元.这
12、类度量元重点关注程序模块的代码规模和内在复杂度等属性,其潜在的假设是:代码规模或复杂度越高的程序模块,其内部含有缺陷的可能性越高.研究人员最早借助代码行数(IineSofcode,简称LoC)进行度量,例如,Akiyama给出了缺陷数(D)与LoC的关系式:0=4.86+0.018JL但该度量元过于简单,难以合理地去度量软件系统的复杂性.随后,研究人员逐渐考虑了Halstead科学度量和McCabe环路复杂度(CyClOmatiCeomPIeXity).其中:Halstead科学度量通过统计程序内操作符和操作数的数量来度量代码的阅读难度,其假设是代码的阅读难度越高,其含有缺陷的可能性也越高.而
13、McCabe环路复杂度关注的是程序的控制流复杂度,其假设是程序的控制流复杂度越高,其含有缺陷的可能性也越高随着面向对象开发方法的普及,其特有的封装、继承和多态等特性给传统的软件度量提出了挑战.研究人员提出了适用于面向对象程序的度量元,其中最为典型的是Chidamber和Kemerer提出的CK度量元网.CK度量元综合考虑了面向对象程序中的继承、耦合性和内聚性等特征,给定一个类,其包含的度量元名称及相关描述见表1.Table1CKmetrics表1CK度量元名称描述WMC类的加权方法数DIT类在继承树中的深度NOC类在继承树中的孩子节点数CBO与该类存在耦合关系的其他类的数目RFC该类可以调用的
14、外部方法数LCOM类内访问一个或多个属性的方法数Basili等人基于一些中等规模的信息管理系统,首次验证了CK度量元与程序模块内的缺陷存在相关性.随后,Subramanyam和KriShnanu基于8个工业界项目,进一步验证了Basili等人的发现,周毓明等人UH也对基于面向对象程序的度量元与程序模块缺陷间的相关性进行了深入的分析,随后他们“丸川发现:类规模度量元在分析时存在潜在的混和效应,并会对缺陷预测模型的性能产生膨响.因此,他们提出了种基于线性回归的方法来尝试移除这种混和效应.最后,他们Z分别时Sarkar等人提出的package-modularization度量元1咐和基于程序切片的内
15、聚性度量元m与程序模块缺陷间的相关性进行了深入分析.References:1 WangQ.WuSJ.LiMS.Softwaredefectprediction.RuanJianXucBaoZJournalofSoftware.2008.19(7):1565-1580(inChinesewithEnglishabstract),2 HallT,BccchamS.BowesD.GrayD.CounscllS.Asystematicliteraturereviewonfaultpredictionperformanceinsoftwareengineering.IEEETrans,onSoftwareEngineering.2012.38(6):1276-1304.3 YuSS.ZhouSG,GuanJH.Softwareengineeringdatamining:Asurvey.JournalofFrontiersofComputerScienceandT