一种基于版本提交信息的软件缺陷自动分派方法及系统

文档序号:1614251 发布日期:2020-01-10 浏览:12次 >En<

阅读说明:本技术 一种基于版本提交信息的软件缺陷自动分派方法及系统 (Software defect automatic assignment method and system based on version submission information ) 是由 朱云龙 任洪敏 李璐璐 于 2019-09-23 设计创作,主要内容包括:本发明公开了一种基于版本提交信息的软件缺陷自动分派方法,包括以下步骤:步骤1:提取commit信息和bug信息,并建立commit信息模型和bug信息模型;步骤2:bug信息模型基于LDA模型进行计算,得到bug-topic列表;步骤3:对commit信息模型和bug信息模型进行相似度匹配,得出bug-fixer列表;步骤4:将bug-topic列表与bug-fixer列表相互映射,得到fixer-topic列表;步骤5:任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。此方法解决了源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。(The invention discloses a software defect automatic assignment method based on version submission information, which comprises the following steps: step 1: extracting commit information and bug information, and establishing a commit information model and a bug information model; step 2: calculating the bug information model based on the LDA model to obtain a bug-topic list; and step 3: similarity matching is carried out on the commit information model and the bug information model to obtain a bug-fixed list; and 4, step 4: mapping the bug-topic list and the bug-fixer list mutually to obtain a fixer-topic list; and 5: and the bug-topic list corresponding to any bug information is subjected to assignment comparison through the fixer-topic list, and a proper software defect repairer is matched. The method solves the problems of low source code file positioning accuracy and huge workload of repairers, fully excavates valuable information in the commit library, accurately positions the source code file and developers thereof, effectively improves the accuracy of defect assignment, realizes automatic assignment of software defects, and reduces the workload of the repairers.)

一种基于版本提交信息的软件缺陷自动分派方法及系统

技术领域

本发明涉及软件仓库挖掘中的软件缺陷管理技术领域,具体涉及一种基于版本提交信息的软件缺陷自动分派方法及系统。

背景技术

随着软件行业的发展,开源软件的规模和复杂性也在不断地增加,因此会有更多的缺陷不断产生。由于缺陷数量的不断增大,如果开发人员对其修复不及时,这将会给用户对软件的使用带来更多的不便。大规模缺陷的及时修复成为软件工程研究与实践的一大难题,这也给软件的维护增加了挑战性,严重影响了软件的可靠性和可用性。软件维护需要投入较高的成本和精力。在开源软件的早期,由于项目规模和复杂度较小,整个项目会产生较少的缺陷,人工地将缺陷分配给开发者进行修复完全是可以的。但是,对于现阶段的开源软件项目,缺陷数量大幅度增加,缺陷分配的任务量繁重,缺陷分配的任务大大超过了一个人所承受的工作量。

在版本控制工具仓库的commit库可以比较好的反映出开发人员的各种信息,而现在大部分技术都使用相关源码文件来提取相关开发者和分析开发者经验,没有充分挖掘commit库中有价值的信息。

原有的软件缺陷分派技术,即从缺陷的文本内容中抽取关键字和开发者信息,并通过信息检索技术得出开发者在源码文件中对这些关键字的贡献率,进而得出最佳的缺陷修复者。但此类方法在定位源码文件时,准确率往往不是很理想。

由于目前得主流缺陷分派方法是推荐与bug相关的源码文件,然后创建bug与源码文件开发者的对应关系,但这种方式没有考虑源码文件中大量的干扰信息且源码文件定位准确率不高,从而降低源码文件推荐的精度,找出了开发者不熟悉的源码文件,加大了修复者的工作量。

发明内容

本发明的目的是提供一种基于版本提交信息的软件缺陷自动分派方法及系统。此系统和方法旨在解决源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高缺陷分派的准确度,实现软件缺陷的自动分派,减小修复者的工作量。

为达到上述目的,本发明提供了一种基于版本提交信息的软件缺陷自动分派方法,该方法包括以下步骤:

步骤1:从版本控制工具仓库中提取版本提交信息(commit信息),从软件缺陷仓库(软件bug仓库)中提取缺陷信息(bug信息),并分别建立commit信息模型和bug信息模型;

步骤2:bug信息模型基于文档主题生成模型(Latent Dirichlet Allocation,LDA模型)进行计算,得到bug信息模型的缺陷主题(bug-topic)列表;

步骤3:对commit信息模型和bug信息模型进行相似度匹配,得出与bug信息模型对应的缺陷关系(bug-fixer)列表;

步骤4:将bug-topic列表与bug-fixer列表相互映射,得到bug信息模型的关系主题(fixer-topic)列表;

步骤5:bug信息模型中的任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。

最优选的,提取commit信息和提取bug信息是通过自然语言处理(NaturalLanguage Processing,NLP)技术对版本控制工具仓库和软件bug仓库中的缺陷文本特征进行预处理,从而分别得到commit信息和bug信息;commit信息包括commit描述信息、commit提交日期、开发人员修改过的源代码文件和commit提交者;bug信息包括bug摘要、bug描述信息、bug评论和bug提交时间。

最优选的,预处理包括对版本控制工具仓库中和软件bug仓库中提取词干、去除停用词、拆分合成词、词汇归一化等方法提取出commit信息和bug信息。

最优选的,LDA模型进行计算还包括以下步骤:

步骤2.1:将bug信息模型上的每个bug信息映射在LDA模型上,得到bug映射向量p(zi|z-i,w),且满足:

Figure BDA0002211470700000021

其中,α,β分别为多维变量相互之间权重关系的两个向量,且满足:α=β=1/K;wi为bug信息中的第i个单词;zi为bug信息中单词的主题;T和V分别为bug信息中主题zi的个数和bug信息中不同单词w的总数;d为第i个单词wi所在的文档;

Figure BDA0002211470700000031

为单词w分配给主题z的次数;表示所有单词w分配给z的总次数;

Figure BDA0002211470700000033

为bug信息中文档d中的单词w分配给z的次数;nd是文档d包含的单词w总数;

步骤2.2:对bug映射向量进行多次采样迭代,获得bug信息中每个单词w所属的主题概率分布向量;主题概率分布向量为θd,z,且满足:

Figure BDA0002211470700000034

其中,为bug信息中文档d中的主题为z的单词数量,nd为bug信息中文档d中的单词总数;

步骤2.3:选取bug信息中主题概率分布向量θd,z的最优解,与bug映射向量p(zi|z-i,w)一一对应,得到bug信息模型的bug-topic列表。

最优选的,进行相似度匹配还包括以下步骤:

步骤3.1:分析与bug信息最相似的commit信息模型中commit信息,得出相似commit信息,并统计出相似commit信息中开发人员修改过的源代码文件的数量N和相似commit提交时间TC

步骤3.2:根据相似commit信息和bug信息进行计算,得到相似度权重w(b,c),且满足:

Figure BDA0002211470700000036

其中,b为bug信息,c为commit信息;WB为bug信息中的bug描述信息,WC为所述commit信息中的commit描述信息;N为相似commit信息中开发人员修改过的源代码文件的数量,TB为bug信息中提交的时间,TC表示与bug相关的commit描述提交时间;

步骤3.3:选取相似度权重w(b,c)的最优解与bug信息一一对应,从而得出与bug信息模型对应的bug-fixer列表。

本发明还提供了一种基于版本提交信息的软件缺陷自动分派系统,该系统是基于一种基于版本提交信息的软件缺陷自动分派方法实现的,该系统包括:信息提取模块,与版本控制工具仓库和软件bug仓库连接,分别提取commit信息和bug信息,并分别建立commit信息模型和bug信息模型;列表构建模块,与信息提取模块连接,构建bug信息模型的bug-topic列表和bug-fixer列表;映射模块,与列表构建模块连接,将bug-topic列表和bug-fixer列表相互映射,获得bug信息模型的fixer-topic列表;分派对比模块,与列表构建模块和映射模块连接,将bug信息对应的bug-topic列表与fixer-topic列表进行分派比对。

最优选的,该系统还包括显示模块,与分派对比模块连接,显示出匹配的合适的软件缺陷修复者。

最优选的,信息提取模块包括commit信息提取模块和bug信息提取模块;commit信息提取模块的第一端与版本控制工具仓库连接,第二端与列表构建模块连接,提取并构建commit信息模型;bug信息提取模块的第一端与软件bug仓库连接,第二端与列表构建模块连接,提取并构建bug信息。

最优选的,列表构建模块包括主题列表构建模块和关系列表构建模块;主题列表构建模块的第一端与bug信息提取模块连接,第二端与映射模块连接,第三端与分派对比模块连接,构建bug信息模型的bug-topic列表;关系列表构建模块的第一端与commit信息提取模块连接,第二端与映射模块连接,构建与bug信息模型对应的bug-fixer列表。

最优选的,主题列表构建模块中还设置有LDA模型;bug信息模型基于LDA模型计算得到bug-topic列表。

运用此发明,解决了源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。

相对于现有技术,本发明具有以下有益效果:

1、本发明方法采用commit库来挖掘开发者的实际情况,然后再利用LDA模型消除了向量空间模型维度高的问题,克服了bug信息里bug描述的文本较短、构成的向量空间过于稀疏、不利于衡量距离、数据稀疏且包含噪音的缺点,从而提高的软件缺陷分派的准确率。

2、本发明方法实现了软件缺陷的自动分派,减小了修复者的工作量。

附图说明

图1为本发明提供的软件缺陷自动分派方法的流程示意图;

图2为本发明提供的软件缺陷自动分派系统的结构示意图。

具体实施方式

以下结合附图通过具体实施例对本发明作进一步的描述,这些实施例仅用于说明本发明,并不是对本发明保护范围的限制。

本发明是一种基于版本提交信息的软件缺陷自动分派方法,如图1所示,该方法包括以下步骤:

步骤1:从版本控制工具仓库1中提取版本提交信息(commit信息),从软件缺陷追踪系统的软件缺陷仓库(软件bug仓库)2中提取缺陷信息(bug信息),并分别建立commit信息模型和缺陷信息模型(bug信息模型),以分别记录不同的commit信息和不同的bug信息。

提取commit信息和提取bug信息是通过自然语言处理(NaturalLanguageProcessing,NLP)技术对版本控制工具仓库1和软件bug仓库2中的缺陷文本特征进行预处理,从而分别得到commit信息和bug信息。

预处理包括对版本控制工具仓库1中和软件缺陷追踪系统的软件bug仓库2中提取词干、去除停用词、拆分合成词、词汇归一化等方法提取出bug信息和commit信息。

其中,软件bug仓库2中的停用词是自然语言处理(NLP)中不包含实际语义的单词,比如单个的字母和一些常用的助词,这些词出现的频率往往较高,不具有明显的区分性,所以在提取信息时需要去除停用词;拆分合成词是将软件bug仓库2中的文本特征信息被切分为若干词汇;文本噪声的一种类型就是关于单个单词的多个表示形式,例如:“use”,“using”,“used”是“use”的多种表现形式,但是在上下文的含义是相似的,词汇归一化就是将单词的不同形态统一起来;调整大小写是将所有单词调整为小写(或者大写)状态,比如:Stop,stop,STOP,这样三种状态的词,可以写成stop的形式,统一单词的大小写。

commit信息包括commit描述信息、commit提交日期、开发人员修改过的源代码文件和commit提交者;bug信息包括bug摘要、bug描述信息、bug评论和bug提交时间;这4种bug信息的特征涵盖了开发者对缺陷的认知信息;前3种信息的特征为缺陷的文本特征。

步骤2:bug信息模型基于文档主题生成模型(Latent Dirichlet Allocation,LDA模型)进行计算,得到bug信息模型的缺陷主题(bug-topic)列表;LDA模型进行计算还包括以下步骤:

步骤2.1:将bug信息模型上的每个bug信息映射在LDA模型上,得到bug映射向量p(zi|z-i,w),且满足:

Figure BDA0002211470700000061

其中,α,β分别为多维变量相互之间权重关系的两个向量,且满足:α=β=1/K;wi为bug信息中的第i个单词;zi为bug信息中单词的主题;T和V分别为bug信息中主题zi的个数和bug信息中不同单词w的总数;d为第i个单词wi所在的文档;

Figure BDA0002211470700000062

为单词w分配给主题z的次数;

Figure BDA0002211470700000063

表示所有单词w分配给z的总次数;

Figure BDA0002211470700000064

为bug信息中文档d中的单词w分配给z的次数;nd是文档d包含的单词w总数。

步骤2.2:对bug映射向量进行多次采样迭代,获得bug信息中每个单词w所属的主题概率分布向量;主题概率分布向量为θd,z,且满足:

Figure BDA0002211470700000065

其中,

Figure BDA0002211470700000066

为bug信息中文档d中的主题为z的单词数量,nd为bug信息中文档d中的单词总数。

步骤2.3:选取bug信息中主题概率分布向量θd,z的最优解,与bug映射向量p(zi|z-i,w)一一对应,得到bug信息模型的bug-topic列表。

选取最优解还包括设定K的值,将每个bug信息一一对应到一个或者多个bug映射向量上,选取该bug信息可能性最大的主题z,得到bug信息模型的bug-topic列表。

步骤3:对commit信息模型和bug信息模型进行相似度匹配,得出与bug信息模型对应的缺陷关系(bug-fixer)列表;进行相似度匹配还包括以下步骤:

步骤3.1:分析与bug信息最相似的commit信息模型中commit信息,得出相似commit信息,并统计出相似commit信息中开发人员修改过的源代码文件的数量N和相似commit提交时间TC;统计出相似commit信息中开发人员修改过的源代码文件的数量N,修改的源码文件的数量N越多,修复bug的能力越强;commit提交时间与bug提交时间的差值越小,该commit提交者修复bug的可能性越大。

步骤3.2:根据相似commit信息和bug信息进行计算,得到相似度权重w(b,c),且满足:

其中,b为bug信息,c为commit信息;WB为bug信息中的bug描述信息,WC为所述commit信息中的commit描述信息;N为相似commit信息中开发人员修改过的源代码文件的数量,TB为bug信息中提交的时间,TC表示与bug相关的commit描述信息提交时间。

步骤3.3:选取相似度权重w(b,c)的最优解与bug信息一一对应,从而得出与bug信息模型对应的bug-fixer列表。

步骤4:将bug-topic列表与bug-fixer列表相互映射,得到bug信息模型的关系主题(fixer-topic)列表。

步骤5:bug信息模型中的任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。

本发明还提供了一种基于版本提交信息的软件缺陷自动分派系统,该系统是基于一种基于版本提交信息的软件缺陷自动分派方法实现的,如图2所示,该系统包括信息提取模块、列表构建模块、映射模块3、分派对比模块4和显示模块5;信息提取模块1,与版本控制工具仓库1和软件bug仓库2连接,分别提取commit信息和bug信息,并分别建立commit信息模型和bug信息模型;列表构建模块,与信息提取模块连接,构建bug信息模型的bug-topic列表和bug-fixer列表;映射模块3,与列表构建模块连接,将bug-topic列表和bug-fixer列表相互映射,获得bug信息模型的fixer-topic列表;分派对比模块4,与列表构建模块和映射模块3连接,将bug信息对应的bug-topic列表与fixer-topic列表进行分派比对;显示模块5,与分派对比模块4连接,显示出匹配的合适的软件缺陷修复者。

其中,信息提取模块包括commit信息提取模块6和bug信息提取模块7;commit信息提取模块6的第一端与版本控制工具仓库1连接,第二端与列表构建模块连接,提取并构建commit信息模型;bug信息提取模块7的第一端与软件bug仓库2连接,第二端与列表构建模块连接,提取并构建bug信息。

列表构建模块还包括主题列表构建模块9和关系列表构建模块8;主题列表构建模块9的第一端与bug信息提取模块7连接,第二端与映射模块3连接,第三端与分派对比模块4连接,构建bug信息模型的bug-topic列表;关系列表构建模块8的第一端与commit信息提取模块6连接,第二端与映射模块3连接,构建与bug信息模型对应的bug-fixer列表。

主题列表构建模块9中还设置有主题生成模型(Latent DirichletAllocation,LDA模型);bug信息模型基于LDA模型计算得到bug-topic列表。

本发明的工作原理:

从版本控制工具仓库中提取commit信息,从软件bug仓库中提取bug信息,并分别建立commit信息模型和bug信息模型;bug信息模型基于LDA模型进行计算,得到bug信息模型的bug-topic列表;对commit信息模型和bug信息模型进行相似度匹配,得出与bug信息模型对应的bug-fixer列表;将bug-topic列表与bug-fixer列表相互映射,得到bug信息模型的fixer-topic列表;bug信息模型中的任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。

综上所述,本发明解决了源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种确定安全级别的方法及装置、存储介质和设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!