首页 / 专利库 / 计算机网络 / 软件缺陷 / 一种基于版本提交信息的软件缺陷自动分派方法及系统

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

阅读:354发布:2020-05-15

专利汇可以提供一种基于版本提交信息的软件缺陷自动分派方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于版本提交信息的 软件 缺陷 自动分派方法,包括以下步骤:步骤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库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。,下面是一种基于版本提交信息的软件缺陷自动分派方法及系统专利的具体信息内容。

1.一种基于版本提交信息的软件缺陷自动分派方法,其特征在于,包括以下步骤:
步骤1:从版本控制工具仓库中提取commit信息,从软件bug仓库中提取bug信息,并分别建立commit信息模型和bug信息模型;
步骤2:所述bug信息模型基于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列表进行分派比对,匹配出合适的软件缺陷修复者。
2.如权利要求1所述的基于版本提交信息的软件缺陷自动分派方法,其特征在于,所述提取commit信息和提取bug信息是通过NLP技术对版本控制工具仓库和软件bug仓库中的缺陷文本特征进行预处理,从而分别得到所述commit信息和所述bug信息;所述commit信息包括commit描述信息、commit提交日期、开发人员修改过的源代码文件和commit提交者;所述bug信息包括bug摘要、bug描述信息、bug评论和bug提交时间。
3.如权利要求2所述的基于版本提交信息的软件缺陷自动分派方法,其特征在于,所述预处理包括对版本控制工具仓库中和软件bug仓库中提取词干、去除停用词、拆分合成词、词汇归一化方法提取出所述commit信息和所述bug信息。
4.如权利要求3所述的基于版本提交信息的软件缺陷自动分派方法,其特征在于,所述LDA模型进行计算还包括以下步骤:
步骤2.1:将所述bug信息模型上的每个所述bug信息映射在所述LDA模型上,得到bug映射向量p(zi|z-i,w),且满足:
其中,α,β分别为多维变量相互之间权重关系的两个向量,且满足:α=β=1/K;wi为所述bug信息中的第i个单词;zi为所述bug信息中单词的主题;T和V分别为所述bug信息中主题zi的个数和所述bug信息中不同单词w的总数;d为第i个单词wi所在的文档; 为单词w分配给主题z的次数; 表示所有单词w分配给z的总次数; 为所述bug信息中文档d中的单词w分配给z的次数;nd是文档d包含的单词w总数;
步骤2.2:对所述bug映射向量进行多次采样迭代,获得所述bug信息中每个单词w所属的主题概率分布向量;所述主题概率分布向量为θd,z,且满足:
其中, 为所述bug信息中文档d中的主题为z的单词数量,nd为所述bug信息中文档d中的单词总数;
步骤2.3:选取所述bug信息中所述主题概率分布向量θa,z的最优解,与所述bug映射向量p(zi|z-i,w)一一对应,得到所述bug信息模型的bug-topic列表。
5.如权利要求4所述的基于版本提交信息的软件缺陷自动分派方法,其特征在于,所述进行相似度匹配还包括以下步骤:
步骤3.1:分析与所述bug信息最相似的所述commit信息模型中commit信息,得出相似commit信息,并统计出所述相似commit信息中开发人员修改过的源代码文件的数量N和相似commit提交时间TC;
步骤3.2:根据所述相似commit信息和所述bug信息进行计算,得到相似度权重w(bc),且满足:
其中,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列表。
6.一种基于版本提交信息的软件缺陷自动分派系统,其特征在于,该系统是基于权利要求1-5中任意一项所述的基于版本提交信息的软件缺陷自动分派方法实现的,该系统包括:
信息提取模,与版本控制工具仓库和软件bug仓库连接,分别提取commit信息和bug信息,并分别建立commit信息模型和bug信息模型;
列表构建模块,与所述信息提取模块连接,构建所述bug信息模型的bug-topic列表和bug-fixer列表;
映射模块,与所述列表构建模块连接,将所述bug-topic列表和所述bug-fixer列表相互映射,获得所述bug信息模型的fixer-topic列表;
分派对比模块,与所述列表构建模块和所述映射模块连接,将所述bug信息对应的bug-topic列表与所述fixer-topic列表进行分派比对。
7.如权利要求6所述的基于版本提交信息的软件缺陷自动分派系统,其特征在于,该系统还包括显示模块,与所述分派对比模块连接,显示出匹配的合适的软件缺陷修复者。
8.如权利要求7所述的基于版本提交信息的软件缺陷自动分派系统,其特征在于,所述信息提取模块包括commit信息提取模块和bug信息提取模块;所述commit信息提取模块的第一端与版本控制工具仓库连接,第二端与所述列表构建模块连接,提取并构建所述commit信息模型;所述bug信息提取模块的第一端与软件bug仓库连接,第二端与所述列表构建模块连接,提取并构建所述bug信息。
9.如权利要求8所述的基于版本提交信息的软件缺陷自动分派系统,其特征在于,所述列表构建模块包括主题列表构建模块和关系列表构建模块;所述主题列表构建模块的第一端与所述bug信息提取模块连接,第二端与所述映射模块连接,第三端与所述分派对比模块连接,构建所述bug信息模型的bug-topic列表;所述关系列表构建模块的第一端与所述commit信息提取模块连接,第二端与所述映射模块连接,构建与所述bug信息模型对应的bug-fixer列表。
10.如权利要求9所述的基于版本提交信息的软件缺陷自动分派系统,其特征在于,所述主题列表构建模块中还设置有LDA模型;所述bug信息模型基于所述LDA模型计算得到所述bug-topic列表。

说明书全文

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

技术领域

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

背景技术

[0002] 随着软件行业的发展,开源软件的规模和复杂性也在不断地增加,因此会有更多的缺陷不断产生。由于缺陷数量的不断增大,如果开发人员对其修复不及时,这将会给用户对软件的使用带来更多的不便。大规模缺陷的及时修复成为软件工程研究与实践的一大难题,这也给软件的维护增加了挑战性,严重影响了软件的可靠性和可用性。软件维护需要投入较高的成本和精。在开源软件的早期,由于项目规模和复杂度较小,整个项目会产生较少的缺陷,人工地将缺陷分配给开发者进行修复完全是可以的。但是,对于现阶段的开源软件项目,缺陷数量大幅度增加,缺陷分配的任务量繁重,缺陷分配的任务大大超过了一个人所承受的工作量。
[0003] 在版本控制工具仓库的commit库可以比较好的反映出开发人员的各种信息,而现在大部分技术都使用相关源码文件来提取相关开发者和分析开发者经验,没有充分挖掘commit库中有价值的信息。
[0004] 原有的软件缺陷分派技术,即从缺陷的文本内容中抽取关键字和开发者信息,并通过信息检索技术得出开发者在源码文件中对这些关键字的贡献率,进而得出最佳的缺陷修复者。但此类方法在定位源码文件时,准确率往往不是很理想。
[0005] 由于目前得主流缺陷分派方法是推荐与bug相关的源码文件,然后创建bug与源码文件开发者的对应关系,但这种方式没有考虑源码文件中大量的干扰信息且源码文件定位准确率不高,从而降低源码文件推荐的精度,找出了开发者不熟悉的源码文件,加大了修复者的工作量。

发明内容

[0006] 本发明的目的是提供一种基于版本提交信息的软件缺陷自动分派方法及系统。此系统和方法旨在解决源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高缺陷分派的准确度,实现软件缺陷的自动分派,减小修复者的工作量。
[0007] 为达到上述目的,本发明提供了一种基于版本提交信息的软件缺陷自动分派方法,该方法包括以下步骤:
[0008] 步骤1:从版本控制工具仓库中提取版本提交信息(commit信息),从软件缺陷仓库(软件bug仓库)中提取缺陷信息(bug信息),并分别建立commit信息模型和bug信息模型;
[0009] 步骤2:bug信息模型基于文档主题生成模型(Latent Dirichlet Allocation,LDA模型)进行计算,得到bug信息模型的缺陷主题(bug-topic)列表;
[0010] 步骤3:对commit信息模型和bug信息模型进行相似度匹配,得出与bug信息模型对应的缺陷关系(bug-fixer)列表;
[0011] 步骤4:将bug-topic列表与bug-fixer列表相互映射,得到bug信息模型的关系主题(fixer-topic)列表;
[0012] 步骤5:bug信息模型中的任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。
[0013] 最优选的,提取commit信息和提取bug信息是通过自然语言处理(Natural Language Processing,NLP)技术对版本控制工具仓库和软件bug仓库中的缺陷文本特征进行预处理,从而分别得到commit信息和bug信息;commit信息包括commit描述信息、commit提交日期、开发人员修改过的源代码文件和commit提交者;bug信息包括bug摘要、bug描述信息、bug评论和bug提交时间。
[0014] 最优选的,预处理包括对版本控制工具仓库中和软件bug仓库中提取词干、去除停用词、拆分合成词、词汇归一化等方法提取出commit信息和bug信息。
[0015] 最优选的,LDA模型进行计算还包括以下步骤:
[0016] 步骤2.1:将bug信息模型上的每个bug信息映射在LDA模型上,得到bug映射向量p(zi|z-i,w),且满足:
[0017]
[0018] 其中,α,β分别为多维变量相互之间权重关系的两个向量,且满足:α=β=1/K;wi为bug信息中的第i个单词;zi为bug信息中单词的主题;T和V分别为bug信息中主题zi的个数和bug信息中不同单词w的总数;d为第i个单词wi所在的文档; 为单词w分配给主题z的次数; 表示所有单词w分配给z的总次数; 为bug信息中文档d中的单词w分配给z的次数;nd是文档d包含的单词w总数;
[0019] 步骤2.2:对bug映射向量进行多次采样迭代,获得bug信息中每个单词w所属的主题概率分布向量;主题概率分布向量为θd,z,且满足:
[0020]
[0021] 其中, 为bug信息中文档d中的主题为z的单词数量,nd为bug信息中文档d中的单词总数;
[0022] 步骤2.3:选取bug信息中主题概率分布向量θd,z的最优解,与bug映射向量p(zi|z-i,w)一一对应,得到bug信息模型的bug-topic列表。
[0023] 最优选的,进行相似度匹配还包括以下步骤:
[0024] 步骤3.1:分析与bug信息最相似的commit信息模型中commit信息,得出相似commit信息,并统计出相似commit信息中开发人员修改过的源代码文件的数量N和相似commit提交时间TC;
[0025] 步骤3.2:根据相似commit信息和bug信息进行计算,得到相似度权重w(b,c),且满足:
[0026]
[0027] 其中,b为bug信息,c为commit信息;WB为bug信息中的bug描述信息,WC为所述commit信息中的commit描述信息;N为相似commit信息中开发人员修改过的源代码文件的数量,TB为bug信息中提交的时间,TC表示与bug相关的commit描述提交时间;
[0028] 步骤3.3:选取相似度权重w(b,c)的最优解与bug信息一一对应,从而得出与bug信息模型对应的bug-fixer列表。
[0029] 本发明还提供了一种基于版本提交信息的软件缺陷自动分派系统,该系统是基于一种基于版本提交信息的软件缺陷自动分派方法实现的,该系统包括:信息提取模,与版本控制工具仓库和软件bug仓库连接,分别提取commit信息和bug信息,并分别建立commit信息模型和bug信息模型;列表构建模块,与信息提取模块连接,构建bug信息模型的bug-topic列表和bug-fixer列表;映射模块,与列表构建模块连接,将bug-topic列表和bug-fixer列表相互映射,获得bug信息模型的fixer-topic列表;分派对比模块,与列表构建模块和映射模块连接,将bug信息对应的bug-topic列表与fixer-topic列表进行分派比对。
[0030] 最优选的,该系统还包括显示模块,与分派对比模块连接,显示出匹配的合适的软件缺陷修复者。
[0031] 最优选的,信息提取模块包括commit信息提取模块和bug信息提取模块;commit信息提取模块的第一端与版本控制工具仓库连接,第二端与列表构建模块连接,提取并构建commit信息模型;bug信息提取模块的第一端与软件bug仓库连接,第二端与列表构建模块连接,提取并构建bug信息。
[0032] 最优选的,列表构建模块包括主题列表构建模块和关系列表构建模块;主题列表构建模块的第一端与bug信息提取模块连接,第二端与映射模块连接,第三端与分派对比模块连接,构建bug信息模型的bug-topic列表;关系列表构建模块的第一端与commit信息提取模块连接,第二端与映射模块连接,构建与bug信息模型对应的bug-fixer列表。
[0033] 最优选的,主题列表构建模块中还设置有LDA模型;bug信息模型基于LDA模型计算得到bug-topic列表。
[0034] 运用此发明,解决了源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。
[0035] 相对于现有技术,本发明具有以下有益效果:
[0036] 1、本发明方法采用commit库来挖掘开发者的实际情况,然后再利用LDA模型消除了向量空间模型维度高的问题,克服了bug信息里bug描述的文本较短、构成的向量空间过于稀疏、不利于衡量距离、数据稀疏且包含噪音的缺点,从而提高的软件缺陷分派的准确率。
[0037] 2、本发明方法实现了软件缺陷的自动分派,减小了修复者的工作量。附图说明
[0038] 图1为本发明提供的软件缺陷自动分派方法的流程示意图;
[0039] 图2为本发明提供的软件缺陷自动分派系统的结构示意图。

具体实施方式

[0040] 以下结合附图通过具体实施例对本发明作进一步的描述,这些实施例仅用于说明本发明,并不是对本发明保护范围的限制。
[0041] 本发明是一种基于版本提交信息的软件缺陷自动分派方法,如图1所示,该方法包括以下步骤:
[0042] 步骤1:从版本控制工具仓库1中提取版本提交信息(commit信息),从软件缺陷追踪系统的软件缺陷仓库(软件bug仓库)2中提取缺陷信息(bug信息),并分别建立commit信息模型和缺陷信息模型(bug信息模型),以分别记录不同的commit信息和不同的bug信息。
[0043] 提取commit信息和提取bug信息是通过自然语言处理(Natural LanguageProcessing,NLP)技术对版本控制工具仓库1和软件bug仓库2中的缺陷文本特征进行预处理,从而分别得到commit信息和bug信息。
[0044] 预处理包括对版本控制工具仓库1中和软件缺陷追踪系统的软件bug仓库2中提取词干、去除停用词、拆分合成词、词汇归一化等方法提取出bug信息和commit信息。
[0045] 其中,软件bug仓库2中的停用词是自然语言处理(NLP)中不包含实际语义的单词,比如单个的字母和一些常用的助词,这些词出现的频率往往较高,不具有明显的区分性,所以在提取信息时需要去除停用词;拆分合成词是将软件bug仓库2中的文本特征信息被切分为若干词汇;文本噪声的一种类型就是关于单个单词的多个表示形式,例如:“use”,“using”,“used”是“use”的多种表现形式,但是在上下文的含义是相似的,词汇归一化就是将单词的不同形态统一起来;调整大小写是将所有单词调整为小写(或者大写)状态,比如:Stop,stop,STOP,这样三种状态的词,可以写成stop的形式,统一单词的大小写。
[0046] commit信息包括commit描述信息、commit提交日期、开发人员修改过的源代码文件和commit提交者;bug信息包括bug摘要、bug描述信息、bug评论和bug提交时间;这4种bug信息的特征涵盖了开发者对缺陷的认知信息;前3种信息的特征为缺陷的文本特征。
[0047] 步骤2:bug信息模型基于文档主题生成模型(Latent Dirichlet Allocation,LDA模型)进行计算,得到bug信息模型的缺陷主题(bug-topic)列表;LDA模型进行计算还包括以下步骤:
[0048] 步骤2.1:将bug信息模型上的每个bug信息映射在LDA模型上,得到bug映射向量p(zi|z-i,w),且满足:
[0049]
[0050] 其中,α,β分别为多维变量相互之间权重关系的两个向量,且满足:α=β=1/K;wi为bug信息中的第i个单词;zi为bug信息中单词的主题;T和V分别为bug信息中主题zi的个数和bug信息中不同单词w的总数;d为第i个单词wi所在的文档; 为单词w分配给主题z的次数; 表示所有单词w分配给z的总次数; 为bug信息中文档d中的单词w分配给z的次数;nd是文档d包含的单词w总数。
[0051] 步骤2.2:对bug映射向量进行多次采样迭代,获得bug信息中每个单词w所属的主题概率分布向量;主题概率分布向量为θd,z,且满足:
[0052]
[0053] 其中, 为bug信息中文档d中的主题为z的单词数量,nd为bug信息中文档d中的单词总数。
[0054] 步骤2.3:选取bug信息中主题概率分布向量θd,z的最优解,与bug映射向量p(zi|z-i,w)一一对应,得到bug信息模型的bug-topic列表。
[0055] 选取最优解还包括设定K的值,将每个bug信息一一对应到一个或者多个bug映射向量上,选取该bug信息可能性最大的主题z,得到bug信息模型的bug-topic列表。
[0056] 步骤3:对commit信息模型和bug信息模型进行相似度匹配,得出与bug信息模型对应的缺陷关系(bug-fixer)列表;进行相似度匹配还包括以下步骤:
[0057] 步骤3.1:分析与bug信息最相似的commit信息模型中commit信息,得出相似commit信息,并统计出相似commit信息中开发人员修改过的源代码文件的数量N和相似commit提交时间TC;统计出相似commit信息中开发人员修改过的源代码文件的数量N,修改的源码文件的数量N越多,修复bug的能力越强;commit提交时间与bug提交时间的差值越小,该commit提交者修复bug的可能性越大。
[0058] 步骤3.2:根据相似commit信息和bug信息进行计算,得到相似度权重w(b,c),且满足:
[0059]
[0060] 其中,b为bug信息,c为commit信息;WB为bug信息中的bug描述信息,WC为所述commit信息中的commit描述信息;N为相似commit信息中开发人员修改过的源代码文件的数量,TB为bug信息中提交的时间,TC表示与bug相关的commit描述信息提交时间。
[0061] 步骤3.3:选取相似度权重w(b,c)的最优解与bug信息一一对应,从而得出与bug信息模型对应的bug-fixer列表。
[0062] 步骤4:将bug-topic列表与bug-fixer列表相互映射,得到bug信息模型的关系主题(fixer-topic)列表。
[0063] 步骤5:bug信息模型中的任意一种bug信息对应的bug-topic列表通过fixer-topic列表进行分派比对,匹配出合适的软件缺陷修复者。
[0064] 本发明还提供了一种基于版本提交信息的软件缺陷自动分派系统,该系统是基于一种基于版本提交信息的软件缺陷自动分派方法实现的,如图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连接,显示出匹配的合适的软件缺陷修复者。
[0065] 其中,信息提取模块包括commit信息提取模块6和bug信息提取模块7;commit信息提取模块6的第一端与版本控制工具仓库1连接,第二端与列表构建模块连接,提取并构建commit信息模型;bug信息提取模块7的第一端与软件bug仓库2连接,第二端与列表构建模块连接,提取并构建bug信息。
[0066] 列表构建模块还包括主题列表构建模块9和关系列表构建模块8;主题列表构建模块9的第一端与bug信息提取模块7连接,第二端与映射模块3连接,第三端与分派对比模块4连接,构建bug信息模型的bug-topic列表;关系列表构建模块8的第一端与commit信息提取模块6连接,第二端与映射模块3连接,构建与bug信息模型对应的bug-fixer列表。
[0067] 主题列表构建模块9中还设置有主题生成模型(Latent DirichletAllocation,LDA模型);bug信息模型基于LDA模型计算得到bug-topic列表。
[0068] 本发明的工作原理:
[0069] 从版本控制工具仓库中提取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列表进行分派比对,匹配出合适的软件缺陷修复者。
[0070] 综上所述,本发明解决了源码文件定位准确率低和修复者工作量巨大的问题,充分挖掘commit库中有价值的信息,精准定位源码文件及其开发者,有效的提高了缺陷分派的准确度,实现了软件缺陷的自动分派,减小了修复者的工作量。
[0071] 尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈