您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 招标投标 > 软件学报2016年排版样例
软件学报ISSN1000-9825,CODENRUXUEWE-mail:jos@iscas.ac.cnJournalofSoftware,[doi:10.13328/j.cnki.jos.000000]©中国科学院软件研究所版权所有.Tel:+86-10-62562563静态软件缺陷预测方法陈翔1,2,顾庆2,刘望舒2,刘树龙2,倪超21(南通大学计算机科学与技术学院,江苏南通226019)2(计算机软件新技术国家重点实验室(南京大学),江苏南京210023)通讯作者:陈翔,E-mail:****@ntu.edu.cn摘要:静态软件缺陷预测是软件工程数据挖掘领域中的一个研究热点.通过分析软件代码或开发过程,设计出与软件缺陷相关的度量元;随后,通过挖掘软件历史仓库来创建缺陷预测数据集,旨在构建出缺陷预测模型,以预测出被测项目内的潜在缺陷程序模块,最终达到优化测试资源分配和提高软件产品质量的目的.对近些年来国内外学者在该研究领域取得的成果进行了系统总结.首先,给出了研究框架并识别出了影响缺陷预测性能的3个重要影响因素:度量元的设定、缺陷预测模型的构建方法和缺陷预测数据集的相关问题;接着,依次总结了这3个影响因素的已有研究成果;随后,总结了一类特殊的软件缺陷预测问题(即,基于代码修改的缺陷预测)的已有研究工作;最后,对未来研究可能面临的挑战进行了展望.关键词:软件质量保障;软件缺陷预测;软件度量元;机器学习;数据集预处理中图法分类号:TP311中文引用格式:陈翔,顾庆,刘望舒,刘树龙,倪超.静态软件缺陷预测方法研究.软件学报.英文引用格式:ChenX,GuQ,LiuWS,LiuSL,NiC.State-of-the-Artsurveyofstaticsoftwaredefectprediction.RuanJianXueBao/JournalofSoftware,2016(inChinese).(SchoolofComputerScienceandTechnology,NantongUniversity,Nantong226019,China)2(StateKeyLaboratoryforNovelSoftwareTechnology(NanjingUniversity),Nanjing210023,China)Abstract:Staticsoftwaredefectpredictionisanactiveresearchtopicinthedomainofsoftwareengineeringdatamining.Itfirstaimstodesignnovelcodeorprocessmetrics,whichhavestrongcorrelationwiththefaultsintheprogrammodules.Itsecondconstructsasoftwaredefectpredictionmodelbasedonthetrainingdata,whichisgatheredafterminingsoftwarehistoricalrepositories.Itfinallyusesthetrainedmodeltopredictpotentialdefect-pronessprogrammodules.Theresearchonsoftwaredefectpredictioncanoptimizetheallocationoftestingresourcesandthenimprovethequalityofsoftware.Thissurveyoffersasystematicsurveyofexistingresearchachievementsofthedomesticandforeignresearchersinrecentyears.First,aresearchframeworkisproposedandthreekeyfactors(i.e.,metrics,modelconstructionapproaches,andissuesindatasets)influencingtheperformanceofdefectpredictionareidentified.Next,existingresearchachievementsinthesethreekeyfactorsarediscussedinsequence.Furthermore,theexistingachievementsonaspecialdefectpredictionissues(i.e.,codechangebaseddefectprediction)aresummarized.Finallyaperspectiveofthefutureworkinthisresearchareaisdiscussed.基金项目:国家自然科学基金(00000000,00000000);南京大学计算机软件新技术国家重点实验室开放课题(KFKT00000000)Foundationitem:NationalNaturalScienceFoundationofChina(00000000,00000000);StateKeyLaboratoryforNovelSoftwareTechnology(NanjingUniversity)开放课题(KFKT00000000)收稿时间:0000-00-00;修改时间:0000-00-00;采用时间:0000-00-00;jos在线出版时间:0000-00-00CNKI在线出版时间:0000-00-002JournalofSoftware软件学报Keywords:softwarequalityassurance;softwaredefectprediction;softwaremetrics;machinelearning;datapreprocessing软件缺陷(softwaredefect)产生于开发人员的编码过程,需求理解不正确、软件开发过程不合理或开发人员的经验不足,均有可能产生软件缺陷.而含有缺陷的软件在运行时可能会产生意料之外的结果或行为,严重的时候会给企业造成巨大的经济损失,甚至会威胁到人们的生命安全.在软件项目的开发生命周期中,检测出内在缺陷的时间越晚,修复该缺陷的代价也越高.尤其在软件发布后,检测和修复缺陷的代价将大幅度增加.因此,项目主管借助软件测试或代码审查等软件质量保障手段,希望能够在软件部署前尽可能多地检测出内在缺陷.但是若关注所有的程序模块会消耗大量的人力物力,因此,项目主管希望能够预先识别出可能含有缺陷的程序模块,并对其分配足够的测试资源.软件缺陷预测[1,2]是其中一种可行方法,根据软件历史开发数据以及已发现的缺陷,借助机器学习等方法来预测软件项目中的缺陷数目和类型等.目前,已有的软件缺陷方法可以简单分为静态缺陷预测方法和动态缺陷预测方法[1],其中:静态预测方法基于缺陷相关的度量数据,对程序模块的缺陷倾向性、缺陷密度或缺陷数进行预测;而动态缺陷预测方法则是基于缺陷或失效产生的时间对系统缺陷随时间的分布进行预测,以发现软件缺陷随其生命周期或其中某些阶段的时间关系的分布规律.本文重点对静态软件缺陷预测的已有研究工作进行综述.具体来说,该类方法通过分析软件代码或开发过程设计出与软件缺陷相关的度量元,随后,通过挖掘软件历史仓库(softwarehistoricalrepositories)来创建缺陷预测数据集.目前,可以挖掘与分析的软件历史仓库包括项目所处的版本控制系统(例如CVS,SVN或Git等)、缺陷跟踪系统(例如Bugzilla,Mantis,Jira或Trac等)或相关开发人员的电子邮件等.最后,基于上述搜集的缺陷预测数据集,构建缺陷预测模型,并用于预测出项目内的潜在缺陷程序模块.静态软件缺陷预测属于当前软件工程数据挖掘领域[3]中的一个重要研究问题.随着新的数据挖掘技术的不断涌现以及研究人员对软件历史仓库挖掘的日益深入,静态软件缺陷预测研究在近些年来取得了大量的研究成果,其缺陷预测结果也逐渐成为判断一个系统是否可以交付使用的重要依据.因此,针对该问题的深入研究对提高和保障软件产品的质量具有重要的研究意义.为了对该研究问题进行系统的分析、总结和比较,我们首先在IEEE,ACM,Springer,Elsevier和CNKI等论文数据库中进行检索,检索时采用的主要英文关键词包括“defectprediction”,“softwaredefectprediction”,“faultprediction”和“softwarefaultprediction”等;然后,对检索出的论文,通过人工审查方式移除掉与研究问题无关的论文,并通过查阅相关论文的参考文献和相关研究人员发表的论文列表来进一步识别出遗漏的论文;最终,我们选择出与该研究问题直接相关的高质量论文共113篇(截止到2015年7月).从选择出的论文所发表的会议和期刊来看,绝大部分论文发表在软件工程领域的权威会议或期刊上,例如ICSE会议(21篇)、ESEC/FSE(或FSE)会议(13篇)、ISSRE会议(5篇)、TSE期刊(16篇)、IST期刊(7篇)和JSS期刊(4篇)等.本文第1节对静态软件缺陷预测方法的研究框架进行总结,并识别出其中3个重要的影响因素(即,度量元的设定、缺陷预测模型的构建方法和缺陷预测数据集的相关问题).第2节对已有的度量元设计进行总结.第3节对已有的缺陷预测模型构建方法进行总结.第4节对缺陷预测数据集相关问题的产生根源和解决方法进行总结.第5节对一类特殊的软件缺陷预测问题(即,基于代码修改的缺陷预测)的已有研究工作进行总结.传统的缺陷预测问题重点预测的是程序模块内部是否含有缺陷,而该问题的特殊之处在于需要预测出提交的代码修改是否会产生缺陷.最后总结全文,并对未来值得关注的研究方向进行初步探讨.1研究框架静态软件缺陷预测可以将程序模块的缺陷倾向性、缺陷密度或缺陷数设置为预测目标.以预测模块的缺陷倾向性为例,其典型研究框架如图1所示.图1上半部分总结的是软件缺陷预测过程,该过程主要包括两个阶段:模型构建阶段和模型应用阶段.具体来说,模型构建阶段包括3个步骤.陈翔等:静态软件缺陷预测方法研究3(1)挖掘软件历史仓库,从中抽取出程序模块.程序模块的粒度根据实际应用的场景,可设置为文件、包、类或函数等.随后,将该程序模块标记为有缺陷模块或无缺陷模块,在图1中,我们将有缺陷模块用红色进行标记,无缺陷模块用绿色进行标记;(2)通过分析软件代码或开发过程设计出与软件缺陷存在相关性的度量元,借助这些度量元对程序模块进行软件度量,并构建出缺陷预测数据集;(3)对缺陷预测数据集进行必要的数据预处理(例如噪音移除、特征子集选择、数据归一化等)后,借助特定的建模方法构建出缺陷预测模型.大部分建模方法都基于机器学习方法,其常用的模型性能评测指标包括准确率(accuracy)、查准率(precision)、查全率(recall)、F-measure或AUC(areaundertheROCcurve)取值等.而在模型应用阶段,当面对新程序模块时,在完成对该模块的软件度量后,基于前一阶段构造出的缺陷预测模型和具体度量元取值,可以完成对该模块的分类,即将该模块预测为有缺陷倾向性(defect-proneness,简称FP)模块或无缺陷倾向性(nondefect-proneness,简称NFP)模块.软件
本文标题:软件学报2016年排版样例
链接地址:https://www.777doc.com/doc-1521604 .html