基于分类的软件缺陷严重性预测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vol.44 No.8
1532
计算机与数字工程
Computer & Digital Engineering
总第322期
2016年第8期基于分类的软件缺陷严重性预测
王婧宇1张欣2邹卫琴3
(1.南京市产品质量监督检验院南京210028) (2.大连理工大学软件学院大连116621) (3.江西理工大学南昌330000)
摘要在软件开发过程中,软件缺陷的修复是保证软件质量的重要环节。然而随着软件规模的快速增长、缺陷数目 的急剧增加、人力物力资源的有限,报告的软件缺陷不能全部被修复。为了保证软件的质量,人们往往对软件缺陷进行优先 级排序,将有限的资源集中在优先级高的软件缺陷修复上。软件缺陷严重性就是一种重要的优先级度量标准。近年来对软 件缺陷严重性的预测已引起了人们的广泛研究。当前主流的预测方法是基于分类的技术,即将描述软件缺陷的报告当做文 档,严重程度作为标签,利用现有的机器学习算法对其建模并进行预测。论文主要对基于分类的软件缺陷严重性预测工作 做一个简要的介绍,包括已有的研究成果,基于分类的技术框架以及将来可能的发展方向。
关键词软件缺陷;缺陷严重性;分类
中图分类号TP311 D O I:10. 3969/j. issa 1672-9722. 2016. 08. 028
Severity Prediction of Software Defects Based on Classification
W A N G Jingyu1Z H A N G Xin2Z O U Weiqin3
(1.Nanjing Institute of Product Quality Inspection, Nanjing 210028)
(2.Software School, Dalin Univeristy of Technology, Dalian 116621)
(3.Jiangxi University of Science and Technology, Nanchang 330000)
Abstract In software development, the debugging of software defects i s an important part to guarantee the software^ quality. However, with the rapid increase of software scale, the more and more defects numbers and the limitation of human and material resources, reported software bugs cannot be a l l debugged. To guarantee the quality of software, software defects are prioritized, focusing the limited source on the debugging of software defects with high priority. The severity of software defects i s an important standard for prioritization In recent years, predicts of the severity of software defects have been stat^of-the-arts. The principal aspect of predicting i s based on the classification, which means building a model and predicting based on current machine learning algorithms with the reports including defect description working as documents, severity as t ag. This article gives a brief introduction of on prediction the severity of software defects based on classification, including the existing research results, the framework based on classification and future work.
Key Words software defects? severity, classification
Class Number TP311
i引言
软件维护是软件开发过程中必不可少的重要 环节,xt缺陷的修复是软件维护的重要活动之一。随着软件规模的快速增长,大量的软件缺陷单靠人 力来维护已变得非常困难。由此,很多软件如M〇zilla、EdipSe等通常使用缺陷管理工具来跟踪和管理软件的缺陷。Bugzilla和Jir a就是当前两种 比较主流的跟踪维护软件缺陷的管理工具,又称 bug仓库。由于任何用户在使用软件的过程中发 现了问题都可以向bug仓库中提交报告来描述缺 陷,这通常导致bug仓库存储了大量的缺陷报告。例如,据统计,Eclipse的bug仓库中每天平均接收 94个新的bug报告[1]。另一方面,由于软件开发
*收稿日期=2016年2月9日,修回日期:2016年3月28日
作者简介:王靖宇,女,硕士,工程师,研究方向:软件测试、标准化、信息系统检测。张欣,女,研究方向:软件测试、自动化测试。邹卫琴,女,硕士,研究方向:软件测试、软件挖掘。
2016年第8期计算机与数字工程1533
的资源有限,软件通常也面临快速发布的压力,开 发者往往无法修复所有的软件缺陷。由此,为了保 证软件质量,通常的做法是将软件缺陷按一定的优 先级排序,优先解决那些高优先级的软件缺陷。
最初对软件缺陷进行优先级的判断是通过人 手工完成。这种方式的缺点是排序的准确性主要 依靠人的经验及其所花时间,除此之外,对海量缺 陷的严重性排序也导致人力排序可操作性差。
为了解决人手工对缺陷严重性排序的问题,研 究者提出将这一过程进行自动化。目前人们通常 使用分类,信息检索等技术解决缺陷严重性预测的 问题。而基于分类的缺陷严重性预测是当前主流 的预测方法。
2已有研究工作介绍
主流的缺陷严重性预测方法主要是基于分类 的预测方法,即将描述软件缺陷的缺陷报告当做实 例,抽取其中的相关特征,利用机器学习方法建模,对新的软件缺陷进行自动化的严重性预测。
2008年,Tim Menzies等[2]首先提出利用缺陷 报告中的文本信息,借助文本挖掘和机器学习算法 历史数据建模对缺陷严重性进行自动预测。他们 将缺陷分为五类,分值从1〜5,1表示最严重,严重 程度依次递减。实验数据来自N A S A项目的bug 仓库数据。随后,Ahmed Lamkanfi等[3]在开源项 目上进行了相关的研究,他们也是利用文本信息作 为特征,使用Naive Bayes方法[4]进行建模,在预测 软件缺陷的严重性时只预测其是否严重。在他们 的工作中,重点关注了文本信息中对建模起较强作 用的特征词,概括性文本和描述性文本对建模的区 别,训练样本的充足性以及组建内和跨组建的模型 性能研究。在他们随后的工作中[5]重点比较了多 种机器学习算法的性能,发现Naive Bayes效果最 好。文献[6〜8]均研究了特征选择对分类效果的 提升,使用的特征选择方法基本为信息增益、卡方 验证、T F ID F等。实验数据集为开源醒目数据或 者工业数据集。使用的分类方法基本为Naive Bayes 和支持向量机Support Vector Machine (SVM)。在文献[8]中,也使用了 bigrams技术以 提升模型的效率。2012年,Ilie v M等[9]使用工业 数据集,结合使用软件设计知识和用户需求来预测 缺陷的严重性。同时,”311¥等[1°]基于信息检索 的最近邻方法预测缺陷的严重性,使用了三个开源 项目,即Eclipse、Mozilla和 OpenOffice。他们将严 重性分为五个等级,即Trival,Minor,Major,Critical,Blocker。在文献[11]中,作者结合使用主题模 型和多种缺陷特征,使用基于K L距离的最近邻方 法进行预测模型的建立。
3缺陷严重性预测模型技术框架
3.1基于分类的预测技术框架
软件缺陷严重性是根据软件缺陷对系统成功 执行产生的影响程度做出的绝对分类[3];通常来 说,软件缺陷严重性从Trivial,Minor,Normal,Critical到Blocker依次递减[5]。基于分类的缺陷 严重性预测模型,通常是将一个个缺陷报告当做实 例,从该缺陷报告中抽取出一些特征作为实例的属 性,使用已有的分类算法进行分类模型的建立。图1展示了基于分类技术的软件缺陷严重性预测的 一般流程。
图1基于分类技术的缺陷预测模型的流程
对一个软件,收到的缺陷报告数目可能较大,因此筛选出有价值并且有意义的缺陷报告,能够在 很大程度上减轻缺陷严重性预测的工作量。如果 一个缺陷报告中包含软件相关的基本信息,比如组 件名称、堆栈等[12],可以被认为较为专业,同时这 份报告也对于软件缺陷严重性的预测有一定的价 值。如果报告是由熟悉开发工具的技术人员提出 的,相比而言,这份报告具有更大的利用价值。
除了对缺陷报告的筛选,对报告内容的筛选也 是一项重要的工作——如何在众多的文字描述中 提取出有用的关键词,其详细的内容将在3. 2节介 绍。
前期处理后,由于缺陷报告的文本形式,分类 算法将能够帮助在大量的信息中进行分类和鉴定,对于分类算法的说明将在3. 3节介绍。
3.2缺陷报告内容的预处理
对于筛选后的缺陷报告,需要对报告的内容进 行进一步的处理,这其中包括三个步骤:分词——
去停用词—
—提取词干[13]。
以这句报告内容为例,’’In the case,it shows that many defects are exposed in the process of design from the table showed before.’’在转化为分 词的过程中,该句中的每个单词对应一个分词,
将