一种软件缺陷报告分流方法及其系统的制作方法

文档序号:6575443阅读:166来源:国知局
专利名称:一种软件缺陷报告分流方法及其系统的制作方法
技术领域
本发明涉及一种应用于计算机软件开发过程的软件系统,特别是一种软件缺陷报 告分流(bug r印ort triaging)方法及其系统,属于计算机软件开发技术领域。
背景技术
随着中国软件产业的发展,越来越多的大型软件系统被开发出来。在这些软件系统的 测试和维护阶段,往往有大量的缺陷报告被提交上来。这些缺陷报告需要经过分流 (Triaging)后才能交给相应的开发人员去修复。缺陷报告在进行分流的时候有两项重要 工作, 一个是检査该缺陷是否已经被报告过,另一个是谁应该来负责修复该缺陷。
一个软件缺陷是否能够在最短时间内得到修复取决于两个因素 一是该缺陷是不是及 时地分流并分配到具体的开发人员手中,二是被分配到的开发人员是不是能够快速有效地 查找出缺陷的原因并进行修复。当一个开发人员被分配到一个缺陷时,不论是发觉该缺陷 已经被报告过并已经被修复,或者自己没有能力修复该缺陷而不得不转交另一个人,都会 引入额外的工作量,从而使缺陷修复的时间延长。事实上,如果缺陷得到较好的分流,这 两种情况都是可以避免的。因此,缺陷得到及时、准确的分流,对于縮短缺陷修复时间意 义重大。
当前的大型软件项目中,缺陷报告的分流工作还是由手工完成的。手工分流一方面会 带来一些主观性,特别是对于新手,很难做出准确的分流;另一方面,在大型项目,特别 是在大型开源项目中,大量的缺陷报告需要大量的人力来进行分流。

发明内容
鉴于缺陷分流的重要性以及现有方式的局限性,本发明的目的是提供一种软件缺陷报 告分流方法及其系统, 一方面帮助缺陷报告分流人员尽快判断某个缺陷是否己经被报告 过,另一方面为该软件缺陷应该由谁来修复提供建议。考虑到大型项目,特别是大型开源 软件项目常常采用分布式开发,本系统尽量降低对客户端计算机的要求,以便用户在不同 的计算机上都可以完成必须的操作。
为实现上述目的,本发明的技术方案为一种软件缺陷报告分流方法,其步骤为
1) 从缺陷报告数据库中提取缺陷报告的报告标题、缺陷描述和重现步骤信息;
2) 将提取的每个缺陷报告中的上述信息建立成该报告的自然语言形式文本;
3) 将每个自然语言形式文本转化成一文本向量;
4) 将一未分配缺陷报告转换为文本向量,搜索与该未分配缺陷报告相近的其它文本向量,得到一文本向量列表;
5) 根据文本向量列表确定该未分配缺陷报告的负责人。
所述将每个自然语言形式文本转化成一文本向量的方法为首先经过分词器对自然语言形式文本进行分词;然后再从这些词中移除停用词,得到所述文本向量。
所述文本向量列表的获取方法为首先对文本向量建立索引,然后调用ApacheLucene软件包计算未分配缺陷报告与其它文本向量的相似度,并根据文本向量相似度值搜索与未分配缺陷报告相近的其它文本向量,得到所述文本向量列表。
一种软件缺陷报告分流方法,其步骤为-
1) 从缺陷报告数据库中提取缺陷报告的报告标题、缺陷描述和重现步骤信息;
2) 将提取的每个缺陷报告中的上述信息建立成该报告的自然语言形式文本;
3) 将每个自然语言形式文本转化成一文本向量;
4) 应用支持向量机算法对文本向量进行训练,建立支持向量机模型;
5) 利用支持向量机模型对未分配缺陷报告提供建议的负责人列表。
所述将每个自然语言形式文本转化成一文本向量的方法为首先将自然语言形式文本经过分词器转化为一个个词;然后再从这些词中移除停用词,得到所述文本向量。
所述应用支持向量机算法对文本向量进行训练时,首先将文本向量中的缺陷报告数据格式化 为 <label> <indexl>:<valuel> <index2》<value2>
<index3>:<value3>......的文档格式,其中〈label〉为缺陷修复人,〈index〉〈value〉是
一个属性及其值,〈index〉是一个从1开始的整数,〈value〉是一个实数,所述〈index〉:〈value〉数组釆用〈index〉的升序排序;然后对缺陷报告文档中的缺陷修复人作为该缺陷报告文档的类标签加入到该缺陷报告文档中;最后利用文本分类算法对缺陷报告文档进行分类。
所述支持向量机算法采用LibSVM实现。
所述SVM算法中配置一惩罚参数C用于查找应用场景里的最优值,其中C在2_15到215之间取值,对于每一 C都做一次10折交叉验证,计算出C值能够达到的精确度,以精确度最高的C值作为参数,建立所述支持向量机模型。
一种软件缺陷报告分流系统,包括浏览器层、服务器层和数据接口层;
所述浏览器层用于提供缺陷报告的数据输入与输出接口;
所述服务器层包括
自然语言处理模块,用于将历史缺陷报告中的自然语言转化成文本向量;索引模块,用于对文本向量建立索引,以便获得词频、文档频率的统计信息;搜索模块,用于计算未分配缺陷报告与其它文本向量的相似度,得到一与该未分
配缺陷报告相近的其它文本向量列表;
模型训练模块,利用应用支持向量机算法对文本向量进行训练,建立支持向量机
模型;
模型应用模块,利用支持向量机模型对未分配缺陷报告提供建议的负责人列表;所述数据接口层包括
数据库连接模块,用于在缺陷报告数据库与所述服务器层之间建立数据连接;属性选择模块,用于从缺陷库相应的表中读出所有字段,以便用户选择所需的域。所述系统还包括一反馈模块,当一个缺陷最终被修复时,其真实的修复人将被反馈到缺陷库中;所述搜索模块还用于计算文本向量的相似度,并根据文本向量的相似度来搜索相似的缺陷报告与判断一个缺陷是否被重复提交;所述建立的支持向量机模型保存于一持久存储器中。
本系统通过对项目历史中的缺陷记录的分析,建立模型,并应用模型对新提交的缺陷报告的分流做出决策支持。
所述系统釆用浏览器、服务器、数据库接口三层结构,应用于互联网上。如图l所示,三层结构分别包括如下内容
(1) 浏览器层应用跨平台的Adobe Flex技术,提供缺陷报告分流人员完成日常工作所需的输入与输出接口。
(2) 服务器层包括自然语言处理模块,索引模块,文本搜索模块,模型训练模块,模型应用模块和用户反馈模块。
(3) 数据库接口层。用于建立服务器与数据库的连接,提供接口让用户选择缺陷数据库中合适的表和字段,并提供接口让服务器层读取数据库中的数据。
其中,所述服务器层的功能模块分别包括以下功能(1) 自然语言处理模块。用于将历史缺陷报告中的自然语言转化成文本向量,以便进一步处理。以中文为例,这部分工作包括中文分词,中文停用词移除。
(2) 索引模块。该模块对自然语言处理模块产生的文本向量建立索引,以便后续的工作中如果需要词频等信息时,则直接从索引里获得词频、文档频率等统计信息,这些信息在后期的计算文本向量相似度值(TF-IDF值)时需要用到(关于TF-IDF值计算方法可参考文献Salton, G. and M. J. McGill (1983). /"/rodMC"ow to woderw z'"ybrmariow re/n.eva/.McGraw-Hill. ISBN 0070544840)。
(3) 搜索模块。该模块利用TF-IDF公式计算文本向量的相似度值,并根据文本向量的相似度来査找相似的缺陷报告与判断一个缺陷是否被重复提交。
(4) 模型训练模块。该模块通过读取存储在索引中的文本向量,应用支持向量机算法进行训练(关于支持向量机算法可参考文献Gunn,S. 1998. Support Vector Machines forclassification and regression. Technical report, University of Southampton, Faculty ofEngineering, Science and Mathematics; School of Electronics and Computer Science.),建立支持向量机模型。
(5) 模型应用模块。该模块通过应用己经训练好的模型,对未分配负责人的缺陷报告提供建议的负责人列表。
(6) 用户反馈模块。当一个缺陷被修复后,该缺陷最终的修复人将被反馈到系统中,系统将根据真实的修复对模型进行相应的调整,以便以后做出更精确的预测。
所述数据库接口层的功能模块包括以下功能
(1) 数据库连接模块。调用缺陷数据库所用的数据库产品的JDBC驱动,并通过缺陷数据库所在地址相应的连接字符串与缺陷数据库建立连接。
(2) 属性选择模块。该模块从缺陷库相应的表中读出所有字段,以便用户选择本系统所需的域。
用户使用所述系统进行缺陷报告分流,步骤如下
a)导入缺陷历史数据。配置人员使用数据库连接模块将系统连接到原有的缺陷库中,并将缺陷库中每个缺陷的标题、描述与重现步骤(如果有的话)三个域导入到系统中。在这过程中,系统会自动进行自然语言的处理、建立索引,并训练模型。
(2)发现重复缺陷报告。缺陷报告分流人从缺陷库中选择一个新的,未分流的缺陷报告,这时系统将列出可能与该报告具有相同缺陷的报告。如果列表中存在重复缺陷,则将该缺陷标记为重复,不需要为该缺陷指派开发人员。(3) 指派开发人员。系统提供了一个建议的负责人列表,并按他们修复当前缺陷的能力排序,可以由分流人员从中挑出一个最合适的,也可以让系统自动将该缺陷分配给列表的第一个人。
(4) 反馈。当一个缺陷最终被修复,其真实的修复人将被反馈到缺陷库中。并让系统调整模型。
以上说明了缺陷报告分流的专家系统的结构和功能,并说明如何使用该系统。对于自然语言处理、支持向量机等技术采用的是相关领域的研究成果,不属于本发明对现有技术改进的内容,因此本说明书不再对其进行详细描述。
本发明的积极效果为-
本发明利用软件缺陷历史数据,帮助缺陷报告分流人员识别重复缺陷报告,并为指派缺陷负责人提供建议。同时,本系统基于浏览器的体系结构使其适合大型软件项目,特别是大型开源软件项目分布式开发的特点。与现有工具和技术相比,本系统填补了该领域的空白。


图l、系统体系结构图;图2、本发明的方法流程图。
具体实施例方式
下面通过具体实施方式
对本系统作进一步说明。1数据库接口层
每个缺陷报告一般都会包含三部分信息报告标题、缺陷描述和重现步骤。这三个部分在不同的缺陷库中所对应的数据域可能不尽相同。在本系统布署时,由配置人员通过相应的JDBC驱动建立数据库连接,并从缺陷库的数据域列表中选出包含这三部分信息的对
应数据域。由于这三个域在很多缺陷库中并非严格区分的,当这三部分信息被读出来后,它们被连接成单一的文本,供后面处理使用。
2服务器层
(1) 自然语言处理模块。从数据库接口读出来的每个缺陷报告都是一段文本。这段文本首先经过分词器转化为一个个词。然后再从这些词中移除停用词,并对剩下的词统计频率,建立倒排索引,以方便后面的处理。本模块中的词频统计和索引是通过调用Lucene完成的(Apache Lucene是一个开源软件项目,项目主页是http:〃lucene.apache.org/)。分
词器和停用词过滤器在本模块中实现为Lucene的分析器,在建立索引之前调用。
(2) 搜索模块。经过上一步处理,每个缺陷报告都被转化成一个文本向量。本模块通 过计算文本向量的相似度来搜索相似的缺陷报告以及判断是否出现重复提交的缺陷报告,
比如通过设定一相似度阔值,当某个缺陷报告的文本向量与待分配缺陷报告大于设定的相 似度阈值时,待分配缺陷报告为重复提交的缺陷报告。本模块也是通过调用Lucene来进 行搜索的。在Ucene内部,文本向量的相似度计算可参考 http:〃lucene.apache.org/java/2_4—1/api/org/apache/lucene/search/Similarity.html 中的技术内容。
同时,Lucene提供搜索接口,通过该接口,可以得到与某个文本向量最相近的其它文 本向量列表,并按相似度排序。
(3) 模型训练模块。本模块与下一模块中,为避免缺陷报告的二次分配,应该把缺 陷报告分配给"最有可能"修复该缺陷的人。在缺陷库中,存在着大量的缺陷及其修复人 的记录,我们可以将缺陷负责人的推荐抽象为一个文本分类的问题把每个缺陷报告当成 一个文档,把缺陷修复人当成文档的类标签,缺陷负责人推荐就可以利用现有的文本分类 算法对缺陷报告进行"分类",得到最有可能修复该缺陷的人作为推荐的负责人。
本模块将存储在Lucene索引里的缺陷数据读出来,进行适当的格式转化,调用LIBSVM, 进行模型训练,LibSVM是 一 个著名的SVM算法的实现,参考 http:〃www.csie.ntu.edu.tw/~cjlin/libsvm/。 LIBSVM要求输入数据格式如下
其中,每行都只包含一个实例(缺陷报告),〈label〉为该实例的类标签(缺陷修复人); 〈index〉〈value〉是一个属性及其值,其中〈index〉是一个从1开始的整数,〈value〉是一 个实数。这些属性采用升序排列。
核函数是SVM算法中一个重要组成部分,常用的核函数包括线性核函数和RBF。在本 系统中,选用的是线性核函数。另外,SVM还需要配置一个惩罚参数C。该参数与应用场景 相关,需要在本系统的应用场景里找出最优值。我们让C在2—"到2"之间取值。对于每一 C都做一次10折交叉验证,计算出该C值能够达到的精确度。以精确度最高的C值作为参 数,系统调用LIBSVM在训练数据上建立支持向量机模型。同时,为了在应用模型时不需要
9再重建模型,在这个模块最终建立起的支持向量机模型将被保存在持久存储器(per s i stent storage)中。
(4) 模型应用模块。对于一个未被指派负责人的缺陷报告,系统应用上一模块建立
起来的模型为它打上类标签缺陷负责人。根据用户的选择,系统还可以为每一个缺陷报 告列出一组可能的缺陷负责人,并按他们在修复该缺陷的能力排序。这时,如果排在第一 位的负责人不可用(离职或请假等),分流人员可选择列表中的下一个负责人,依此类推。
3浏览器层
浏览器层全部采用Adobe Flex技术,通过编写MXML文件与ActionScript 3. 0脚本 实现。 一方面,它不像传统客户端/服务器架构一样需要在用户机器上安装客户端,从而 尽量减少对用户计算机的依赖,增加系统的可用性;另一方面,它能比传统浏览器/服务 器架构的系统提供更丰富流畅的用户体验,甚至达到与本地应用程序类似的丰富界面。
以上内容对本发明所述的系统进行了详细的说明,但显然本发明的具体实现形式并不 局限于此。对于本技术领域的一般技术人员来说,在不背离本发明的精神和权利要求范围 的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
权利要求
1.一种软件缺陷报告分流方法,其步骤为1)从缺陷报告数据库中提取缺陷报告的报告标题、缺陷描述和重现步骤信息;2)将提取的每个缺陷报告中的上述信息建立成该报告的自然语言形式文本;3)将每个自然语言形式文本转化成一文本向量;4)将一未分配缺陷报告转换为文本向量,搜索与该未分配缺陷报告相近的其它文本向量,得到一文本向量列表;5)根据文本向量列表确定该未分配缺陷报告的负责人。
2. 如权利要求1所述的方法,其特征在于所述将每个自然语言形式文本转化成一文本向 量的方法为首先经过分词器对自然语言形式文本进行分词;然后再从这些词中移除 停用词,得到所述文本向量。
3. 如权利要求1所述的方法,其特征在于所述文本向量列表的获取方法为首先对文本 向量建立索引,然后调用Apache Lucene软件包计算未分配缺陷报告与其它文本向量 的相似度,并根据文本向量相似度值搜索与未分配缺陷报告相近的其它文本向量,得 到所述文本向量列表。
4. 一种软件缺陷报告分流方法,其步骤为1) 从缺陷报告数据库中提取缺陷报告的报告标题、缺陷描述和重现步骤信息;2) 将提取的每个缺陷报告中的上述信息建立成该报告的自然语言形式文本;3) 将每个自然语言形式文本转化成一文本向量;4) 应用支持向量机算法对文本向量进行训练,建立支持向量机模型;5) 利用支持向量机模型对未分配缺陷报告提供建议的负责人列表。
5. 如权利要求4所述的方法,其特征在于所述将每个自然语言形式文本转化成一文本向 量的方法为首先将自然语言形式文本经过分词器转化为一个个词;然后再从这些词 中移除停用词,得到所述文本向量。
6. 如权利要求4所述的方法,其特征在于所述应用支持向量机算法对文本向量进行训练 时,首先将文本向量中的缺陷报告数据格式化为LibSVM软件包所需的输入数据格式, 即一个文本件,每行代表一个向量,每行以该向量的类标签〈label〉为开头,后面跟着 一系列〈index〉〈value〉值对,代表一个属性及其值,〈index〉是一个从1开始的整 数,〈value〉是一个实数;其中〈label〉为缺陷修复人,所述〈index〉〈value〉数组采用 〈index〉的升序排序,类标签〈label〉与第一个〈index〉〈value〉值对、以及各个 〈index〉:〈value〉值对之间用空格隔开;然后对缺陷报告文档中的缺陷修复人作为该缺陷报告文档的类标签加入到该缺陷报告文档中;最后利用文本分类算法对缺陷报告 文档进行分类。
7. 如权利要求6所述的方法,其特征在于所述支持向量机算法采用LibSVM实现。
8. 如权利要求7所述的方法,其特征在于所述SVM算法中配置一惩罚参数C用于査找应 用场景里的最优值,其中C在2—15到215之间取值,对于每一C都做一次10折交叉验 证,计算出C值能够达到的精确度,以精确度最高的C值作为参数,建立所述支持向 量机模型。
9. 一种软件缺陷报告分流系统,包括浏览器层、服务器层和数据接口层;所述浏览器层用于提供缺陷报告的数据输入与输出接口;所述服务器层包括-自然语言处理模块,用于将历史缺陷报告中的自然语言转化成文本向量; 索引模块,用于对文本向量建立索引,以便获得词频、文档频率的统计信息; 搜索模块,用于计算未分配缺陷报告与其它文本向量的相似度,得到一与该未分配缺陷报告相近的其它文本向量列表;模型训练模块,利用应用支持向量机算法对文本向量进行训练,建立支持向量机模型;模型应用模块,利用支持向量机模型对未分配缺陷报告提供建议的负责人列表;所述数据接口层包括数据库连接模块,用于在缺陷报告数据库与所述服务器层之间建立数据连接; 属性选择模块,用于从缺陷库相应的表中读出所有字段,以便用户选择所需的域。
10.如权利要求9所述的系统,其特征在于还包括一反馈模块,当一个缺陷最终被修复 时,其真实的修复人将被反馈到缺陷库中;所述搜索模块还用于计算文本向量的相似 度,并根据文本向量的相似度来搜索相似的缺陷报告与判断一个缺陷是否被重复提交; 所述建立的支持向量机模型保存于一持久存储器中。
全文摘要
本发明公开了一种软件缺陷报告分流方法及其系统,属于计算机软件领域。本发明的方法为首先从缺陷报告数据库中提取缺陷报告的报告标题、缺陷描述和重现步骤信息;然后将提取的每个缺陷报告中的上述信息建立成该报告的自然语言形式文本,并将其转化成一文本向量;然后搜索与待分配缺陷报告相近的其它文本向量,得到一文本向量列表,最后根据文本向量列表确定该未分配缺陷报告的负责人;或者应用支持向量机算法对文本向量进行训练,建立支持向量机模型;最后利用支持向量机模型对未分配缺陷报告提供建议的负责人列表。本发明的系统包括浏览器层、服务器层和数据接口层。本发明能为缺陷报告指派缺陷负责人提供建议,适合大型软件项目分布式开发。
文档编号G06F17/27GK101639829SQ20091009168
公开日2010年2月3日 申请日期2009年8月28日 优先权日2009年8月28日
发明者李明树, 叶 杨, 林中鹏, 青 王, 舒风笛 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1