一种组合式软件缺陷报告分类方法
【专利摘要】本发明公开了一种组合式软件缺陷报告分类方法,包括以下步骤:提取软件缺陷报告的非结构型特征属性,并进行预处理而得到特征词集合;利用监督式的文本挖掘技术预测所述特征词集合所描述内容倾向于修正性缺陷的程度等级;将所述等级的预测结果与该软件缺陷报告的编号ID与有用的结构型特征属性相结合,从而生成一新的软件缺陷报告;利用数据挖掘的方法预测新的缺陷报告是否为修正性缺陷。本发明通过滤除非修正性的缺陷,降低缺陷数据库的噪声,从而提高基于缺陷报告数据库的缺陷预测研究的精确度。
【专利说明】一种组合式软件缺陷报告分类方法
【技术领域】
[0001]本发明涉及一种软件缺陷报告分类方法,属于计算机软件开发领域。
【背景技术】
[0002]软件缺陷是衡量软件质量的重要指标,缺陷的及时修复对提高用户满意度相当重要。为了有效的管理软件缺陷,通常使用缺陷跟踪系统(BTS)来管理软件缺陷以及需求。当一个软件发布以后,相应的BTS就负责收集程序测试人员或者终端用户提交的对软件缺陷的描述报告,软件的开发人员可以通过这些报告对软件进行适当的维护和完善。
[0003]软件开发人员最需要维护的是修正性缺陷(bug),这些缺陷涉及到代码的修改,对系统的运行至关重要。相对而言,那些对系统功能的期望,即提高型或者完善型的缺陷(non-bug)可缓一步进行或者可不需维护。然而,提交缺陷报告人员的软件知识水平参差不齐,大多数非软件行业的终端用户对于任何使用过程中出现的不尽如人意的地方都会认为是修正性缺陷,这就向BTS里添加了很多维护的噪声,同时也为基于软件缺陷报告的科学研究引入了偏差。
[0004]过去的缺陷预测重点在于模型的建立,通过改良模型不断的提高预测的精确度,却忽视了数据源本身的优良。缺陷预测所使用的大多数的数据库都是由BTS等提供源数据。由上述可知,数据库里存在可观的噪声。众所周知,软件缺陷预测的关键就是训练集和测试集,数据库里的噪声必然引入误差。为了减少误差,数据源的降噪处理变得尤为重要。
[0005]近年,缺陷预测开始涉及到对数据的处理上。目前通过人工标记和监督式学习,已经可以高效的预测缺陷报告是否为修正型缺陷。一般地,软件缺陷报告的特征属性分为结构型属性,如编号ID、优先级(priority)、严重性(severity)等和非结构型或者是半结构型属性,如小结(summary)、描述(description)、讨论(discussion)。一般对于它的预测要么是基于结构型的属性,利用机器学习的方法进行预测;要么是基于非结构型属性,利用文本挖掘的技术进行预测;或者是将结构性的属性与非结构型的属性处理成文本信息,在进行文本挖掘。
【发明内容】
[0006]本发明的目的在于提供一个组合式缺陷报告分类方法,通过滤除非修正性缺陷报告,达到降低缺陷数据库的噪声、提高缺陷预测研究精确度的目的。
[0007]为了达到上述目的,本发明组合式软件缺陷报告分类方法包括以下步骤:
[0008]I)提取该软件缺陷报告的非结构型特征属性,并进行预处理而得到特征词集合;
[0009]2)利用监督式的文本挖掘技术预测所述特征词集合所描述的内容倾向于所述期望类型的程度等级;
[0010]3)将所述程度等级的预测结果与该软件缺陷报告的编号与有用的结构型特征属性相结合,生成一新的软件缺陷报告;
[0011]4)利用数据挖掘的方法预测新的软件缺陷报告是否为所述期望类型。[0012]进一步的,步骤I)中仅提取非结构型特征属性的小结。
[0013]进一步的,对所述小结进行分词、去停用词和提取词干的处理,且停用词根据文本特性自由添加。
[0014]进一步的,利用贝叶斯多项式预测非结构型属性偏向于修正性缺陷的程度等级,并使用十倍交叉验证。而且,在所述十倍交叉验证中,每次迭代都有九份数据是人工标引的实例,且所述人工标引的实例由相应特征词集合和对应的程度等级标引组成。
[0015]进一步的,所述非结构型属性的十倍交叉验证的十份数据由编写的代码完成分害I],从而便于对应的软件缺陷报告编号ID进行追踪。
[0016]进一步的,在步骤4)中利用贝叶斯网络对缺陷报告进行预测,并使用十倍交叉验证,且所述十倍交叉由机器学习工具完成。且在该十倍交叉验证中,每次迭代都有九份数据是人工标引的实例,且所述人工标引的实例是由相应新的软件缺陷报告的有用的结构型特征属性以及缺陷报告是否为修正性缺陷的分类组成。
[0017]由上可知,本发明通过分析软件缺陷报告来判断缺陷的类型是否为修正性缺陷,通过滤除非修正性的缺陷,降低缺陷数据库的噪声,从而提高基于缺陷报告数据库的缺陷预测研究的精确度。
【专利附图】
【附图说明】
[0018]图1是本发明组合式软件缺陷报告分类方法的流程图;
[0019]图2是图1实施例的数据嫁接算法的伪代码实现;
[0020]图3是图1实施例中合成新软件缺陷报告的示意图。
【具体实施方式】
[0021]下面结合附图对本发明作更进一步的说明。
[0022]以下将结合附图1,对本发明的技术方案进行详细说明。
[0023]1、第一阶段
[0024]从软件缺陷报告追踪器中提取历史缺陷报告数据。提取软件缺陷报告里非结构型特征属性,并对非结构型特征属性进行预处理。预处理包括分词、去停用词和提取词干,停用词可根据文本特性自由添加。经预处理后得到特征词集合。
[0025]正如前述内容所提及的,软件缺陷报告中的非结构型特征属性通常包括小结(summary)、描述(description)、讨论(discussion)等内容,本实施例优选小结进行预处理。“小结”通常用于概要性地描述软件缺陷内容或者发生问题时的现象,“描述”则用来描述缺陷的详细信息,通常描述缺陷的重现步骤,供修改缺陷时查看。
[0026]得到特征词集合之后,再通过文本分类器,采用监督式的文本挖掘技术,如贝叶斯多项式预测该非结构型特征属性倾向于修正性缺陷的程度等级分类,分类结果被分成不同等级(high、middle 或 low),并采用十倍交叉验证(10-fold cross-validation)。
[0027]在此,十倍交叉验证的十份数据由编写的代码完成分割,而不是依靠挖掘工具,这样可以对小结对应的软件缺陷报告编号ID进行追踪。
[0028]在本阶段的十倍交叉验证中,每次迭代都有九份数据是被人工标记的实例。已标记实例是由相应小结Sirnimary所得到的特征词集合以及程度等级标记组成,目的是为了实现监督式文本分类。
[0029]2、数据嫁接
[0030]将第一阶段的等级预测结果依据软件缺陷报告的编号ID与原始有用的结构型特征属性相结合生成新的软件缺陷报告。图2是数据嫁接算法实现的伪代码,数据嫁接依据软件缺陷报告编号ID来实现第一阶段预测结果和原始的有用结构型特征属性一一对应的嫁接。
[0031]图3所示第一阶段数据集为小结的特征词集合和分类预测结果。第二阶段将小结的分类预测结果possibility—一对应与原软件缺陷报告有用的结构型特性属性相结合生成新的软件缺陷报告。
[0032]3、第二阶段
[0033]根据新生成的软件缺陷报告的描述,利用数据挖掘的方法,如贝叶斯网络和十倍交叉验证预测该缺陷报告是否为修正性缺陷,并将整个新的软件缺陷报告人工标记为bug或non-bug,从而达到预测原软件缺陷报告分类的目的。在此,十倍交叉可有机器学习工具完成。
[0034]在本阶段的十倍交叉验证中,每次迭代都有九份数据是被人工标记的实例。已标记实例是由相应新缺陷报告的所有有用的结构型特征属性以及该缺陷报告是否为修正性缺陷的分类组成 ,目的是为了实现监督式分类。
[0035]以下结合试验数据说明本发明的方法相对于单一的内部分类器而言,提高分类的准确度。本试验所采用的三组验证数据集如下表所示:
[0036]
【权利要求】
1.一种组合式软件缺陷报告分类方法,用于判断一软件缺陷报告是否属于期望的类型,其特征是,该方法包括以下步骤: 1)提取该软件缺陷报告的非结构型特征属性,并进行预处理而得到特征词集合; 2)利用监督式的文本挖掘技术预测所述特征词集合所描述的内容倾向于所述期望类型的程度等级; 3)将所述程度等级的预测结果与该软件缺陷报告的编号与有用的结构型特征属性相结合,生成一新的软件缺陷报告; 4)利用数据挖掘的方法预测新的软件缺陷报告是否为所述期望类型。
2.根据权利要求1所述的组合式软件缺陷报告分类方法,其中,步骤I)中仅提取非结构型特征属性中的小结。
3.根据权利要求2所述的组合式软件缺陷报告分类方法,其中,所述预处理包括分词、去停用词和提取词干,且停用词根据文本特性自由添加。
4.根据权利要求1所述的组合式软件缺陷报告分类方法,其中,利用贝叶斯多项式预测所述程度等级,并使用十倍交叉验证。
5.根据权利要求4所述的组合式软件缺陷报告分类方法,其中,在所述十倍交叉验证中,每次迭代都有九 份数据是人工标引的实例,且所述人工标引的实例由相应特征词集合和对应的程度等级标引组成。
6.根据权利要求4组合式软件缺陷报告分类方法,其中,所述非结构型属性的十倍交叉验证的十份数据由编写的代码完成分割,从而便于对应的软件缺陷报告编号进行追踪。
7.根据权利要求1所述的组合式软件缺陷报告分类方法,其中,步骤4)中利用贝叶斯网络对缺陷报告进行预测,并使用十倍交叉验证,且所述十倍交叉由机器学习工具完成。
8.根据权利要求7所述的组合式软件缺陷报告分类方法,其中,在所述十倍交叉验证中,每次迭代都有九份数据是人工标引的实例,且所述人工标引的实例是由相应新的软件缺陷报告的有用的结构型特征属性以及缺陷报告是否为修正性缺陷的分类组成。
【文档编号】G06F17/30GK104021180SQ201410250512
【公开日】2014年9月3日 申请日期:2014年6月9日 优先权日:2014年6月9日
【发明者】周宇, 童燕翔, 古睿航 申请人:南京航空航天大学