CN112667492B - 一种软件缺陷报告修复人推荐方法 - Google Patents

一种软件缺陷报告修复人推荐方法 Download PDF

Info

Publication number
CN112667492B
CN112667492B CN202011226363.9A CN202011226363A CN112667492B CN 112667492 B CN112667492 B CN 112667492B CN 202011226363 A CN202011226363 A CN 202011226363A CN 112667492 B CN112667492 B CN 112667492B
Authority
CN
China
Prior art keywords
defect report
model
defect
developers
report
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011226363.9A
Other languages
English (en)
Other versions
CN112667492A (zh
Inventor
张文
赵江鹏
李健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN202011226363.9A priority Critical patent/CN112667492B/zh
Publication of CN112667492A publication Critical patent/CN112667492A/zh
Application granted granted Critical
Publication of CN112667492B publication Critical patent/CN112667492B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种软件缺陷报告修复人推荐方法,本方法使用结构化深度学习模型,将缺陷报告的描述、缺陷报告的产品、组件、开发者进行匹配后,作为结构化深度学习模型的输入。通过模型的输出来判断某一开发者与该缺陷报告是否适合修复该缺陷报告,从而得出推荐的开发者。本方法首次提出通过结构化深度学习模型的方式来改进缺陷报告修复人推荐的效果。并且充分利用了软件缺陷数据库中的历史数据,利用历史缺陷报告和开发者进行匹配组成样本,用于训练模型,能够减少人工分配的工作量,提高分配效率。

Description

一种软件缺陷报告修复人推荐方法
技术领域
本发明涉及一种软件缺陷报告修复人推荐方法,属于计算机软件开发技术领域。
背景技术
随着软件开发技术的不断更新,软件系统功能日益多样化,软件系统的复杂度也不 断提高。而软件缺陷能否得到高效的解决,是衡量软件质量管理水平的重要指标,软件缺陷管理在学术界和工业界也受到越来越多的关注。对于软件开发团队来说,在软件的 生命周期中,及时地发现和解决软件缺陷能够有效地提高软件产品质量,降低软件开发成本。对于用户来说,高效的解决软件缺陷能够提升用户体验,提高软件开发团队的知 名度。
为了有效地管理软件缺陷,软件缺陷跟踪系统,如Bugzilla、JIRA等软件被广泛地应用于现代软件开发过程中。在软件开发和维护的过程中,软件测试人员或者用户在发 现缺陷后,通过缺陷跟踪系统提交缺陷报告。然后由负责缺陷分派的质量管理人员将缺 陷报告分派给缺陷修复开发者。现代软件系统由于规模庞大、开发团队人员众多,以及 分布式团队的兴起,使得软件缺陷分配所需的工作量迅速增长,因此人工为软件缺陷分配开发者非常耗时费力。软件缺陷分配需要综合考量该缺陷的特点以及开发者的经验和 通常,所以如何将缺陷报告分配给合适的开发人员也对质量管理人员的经验和能力提出 了较高的要求。
面对软件缺陷数量的快速增长和缺陷复杂度的提升,传统的软件缺陷分配方式暴露 出分配效率低、耗费成本大等不足。需要一种自动化的方式将缺陷报告与开发者个性化匹配,减少人工分配的工作量,提高分配效率。
发明内容
鉴于目前软件复杂度逐步提高,软件开发的方法和团队日益多样化,软件缺陷修复 对于软件的开发、使用和维护有着重要的意义。而目前的人工方法存在着分配效率低、耗费成本高等问题。本发明提供了一种软件缺陷报告修复人推荐方法。本发明的目的是 将新增的软件缺陷报告推荐给适合的开发者进行修复。
本发明的技术内容为:
一种软件缺陷报告修复人推荐方法,其步骤为:
1)从软件缺陷报告数据库中选取此前已经完成修复的缺陷报告,从缺陷报告中提取该缺 陷的描述信息和元信息。描述信息包括摘要和详细描述。元信息包括产品、组件、部署平台、操作系统、危险等级。并提取出参与评论该缺陷报告的开发人员;
2)将1)中提取的摘要和描述的文本内容组合在一起,并且对文本内容进行自然语言处 理,将文本转换为数字序列表示,称为描述序列;
3)将1)中提取出的缺陷报告中涉及的元信息,即产品、组件、部署平台、操作系统、危险等级分别进行编号。并为每个开发者指定唯一的编号。对所有的缺陷报告根据其 所属的产品进行分类,分成若干个子集。选取历史缺陷报告中前80%的缺陷报告作为 训练数据集,后20%的缺陷报告作为测试数据集;
4)将2)、3)中得到的每一个缺陷报告的描述序列、组件编号、部署平台编号、操作系 统编号、危险等级编号、与参与评论该缺陷报告的每一名开发者编号组成分别组成正样本,并附加标签1,构建正样本集合;
5)对于训练数据集的每一个缺陷报告,随机选取与参与评论该缺陷报告的开发者数量相 同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并打乱后组成第一组训练集 TrainSet1
6)将训练数据集中所有的开发者按照参与缺陷报告的数量降序排列,从中选取前30%的 开发者作为高频开发者集合。对于每一个缺陷报告,从高频开发者集合中选取与参与 评论该缺陷报告的开发者数量相同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并打乱后组成第一组训练集TrainSet2
7)将测试数据集中所有的缺陷报告与所有的开发者一一匹配,组建测试集TestSet;
8)构建多输入的结构化深度学习模型,模型接收6个输入,分别是:描述序列、组件编 号、部署平台编号、操作系统编号、危险等级编号、开发者编号。模型输出一个(0,1) 之间的值;
9)将5)、6)中得到的训练集数据分别输入模型,对模型分别进行若干轮训练,由训练 集TrainSet1训练得到的模型为model1,由训练集TrainSet2训练得到的模型为model2。由model1和model2得到的结果进行加权组合后得到最终结果。并在测试集TestSet上通 过对评价指标的观测评估的性能,对模型的结构和参数进行优化;
10)将未分配修复推荐人的缺陷报告提取其摘要和描述,采用与2)相同的方法进行自然 语言处理,转换为描述序列。采用与3)相同的方法将报告中的产品、组件、部署平台、操作系统、危险等级转换为对应的编号。并根据该缺陷等报告的产品编号对其进 行分类。最后将该缺陷报告的信息与所有的开发者分别配对组成样本;
11)对于9)中提及的由未分配推荐人的缺陷报告和所有开发者分别组成的样本,输入8) 训练所得模型,获得每组样本对应的模型输出,并对输出值进行降序排序,选择排名 靠前的Q名开发者作为该缺陷报告的推荐修复人;
进一步的,所述相关的开发者指所有参与评论该缺陷报告的开发者。
进一步的,将缺陷报告摘要和描述组合在一起,并进行自然语言处理,包括英文分词、 去除停用词及提取词干。并根据数据集中的文本中出现的所有词组建词典,根据词出现的词 频进行降序排列,将每个词对应一个唯一的整数,从而将文本转换成数字序列。
进一步的,提取历史缺陷报告数据集中所有出现的产品,将每个产品对应到一个唯一的 整数。对于数据集中出现的组件、部署平台、操作系统、危险等级,以及参与缺陷报告的开 发者做相同的处理,使它们分别对应一个整数。
进一步的,将所有的缺陷报告集合{br1,br2,...,brM}(其中M历史数据库中缺陷报告的数 量,M>0)根据其所属的产品进行分类,分为若干个子集。
进一步的,构建正样本集合时,将每一个历史缺陷报告bri与所有参与该缺陷报告的开发 者进行配对(其中devi,j表示参与缺陷报告bri的第j名开发者, 0<i≤M,M为所有历史缺陷报告的数量,1≤j≤Hi,Hi为参与缺陷报告bri的所有开发者的数量。),分别组成Hi个正样本,并附加标签1。
进一步的,构建训练集1时,从所有的开发者里未参与该缺陷报告的开发者中,随机选 取Hi名开发者,与该缺陷报告bri配对成Hi个负样本,并附加标签0。组成第一组训练集TrainSet1
进一步的,构建训练集2时,对于每个bri,从高频开发者中选取Hi名开发者,与每个缺陷报告bri组成Hi个负样本,并与正样本组成第二组训练集TrainSet2
进一步的,构建多输入的结构化深度学习模型,该模型接收6个输入,输入1接收等长 的描述序列,并将其转换为一个向量。输入2,输入3,输入4,输入5,输入6分别接收由 一个整数代表的组件、部署平台、操作系统、危险等级、开发者,分别将其转换为对应的向 量。然后对6个向量进行组合,输入全连接神经网络并得到一个(0,1)内的输出。输出值越接 近1,则说明该开发者越适合处理该缺陷报告,输出值越接近0,则说明该开发者越不适合 处理该缺陷报告。
进一步的,采用两组训练集TrainSet1、TrainSet2分别对模型进行训练,将得到的两个模 型model1和model2采用集成学习的方式对模型输出结果进行加权组合,作为最终的结果。并 根据模型在测试集TestSet上的表现对模型的结构、参数和训练轮次等进行调整,从而选择合 适的集成学习模型用于预测。
进一步的,对新的缺陷报告做2),3)的处理后,与所有的开发者分别配对组合成样本, 并将组合后的样本输入模型,输出的值作为该组样本的评分。
进一步的,根据模型对于输入样本的输出值,对样本中的开发者进行降序排序,选取排 名靠前的前Q名开发者做为该未分配修复推荐人缺陷报告的修复人对其进行修复,其中1≤Q≤N,N为所有开发人员的数目。
下面说明本发明的核心内容。
本发明方法的整体框架如附图所示。
首先从历史缺陷报告数据库中提取已有的缺陷报告数据,对历史缺陷报告数据进行筛 选、分类、文本预处理等步骤后,组成用于训练和测试模型的数据集。然后构建结构化深度 学习模型,并通过不同的训练集对模型进行训练,得到具备不同偏好的两个模型,采用集成学习的方法对两个模型进行组合,用于对新的缺陷报告进行预测。最后对于每个新的缺陷报 告,提取模型预测所需的元信息和描述信息,并采用相同的分类、文本预处理等方法对缺陷 报告进行处理并输入模型进行预测。
具体地,一种基于结构化深度学习的软件缺陷修复人推荐方法,其步骤为:
1.构建历史数据集合
此阶段目的是为提取历史缺陷报告的数据,并构建历史缺陷报告集合和开发人员集合。 首先需要从数据库中提取历史缺陷报告数据,包括每个缺陷报告的摘要、描述、产品、组件、 部署平台、操作性系统、危险等级和参与其中的开发人员。其次需要对每个缺陷报告的摘要和描述的文本内容进行文本预处理,包括英文分词、去除停用词和词干提取。最后为经过文 本预处理后的历史缺陷报告构建缺陷报告集合和开发人员集合。具体的步骤如下:
(1)英文分词
对于英文缺陷报告,分词较为简单,采用空格和标点符号对句子进行分割,如果是对于 中文描述的缺陷报告,应使用中文分词工具包或相应的软件。
(2)去除停用词
采用停用词表去除停用词
(3)词干提取
采用Porter算法提取词干,获得能代表文档的标引词集合。
(4)构建历史缺陷报告集合
将自然语言处理后的文本与缺陷报告编号对应组成历史缺陷报告集合。
将所有经过文本预处理之后的缺陷报告构成一个集合B={br1,br2,...,brM},其中为M历 史缺陷报告的数目。所有开发人员构成一个集合D={dev1,dev2,...,devN},其中N为开发人 员的总数目。每个缺陷报告可以表示为bri={pi,ci,si,plai,sysi,dsi},其中,pi表示该缺陷报 告涉及的产品编号,ci表示该缺陷报告涉及的组件编号,si表示该缺陷报告的危险等级编号。 plai表示该缺陷报告部署的平台编号,sysi表示该缺陷报告出现的操作系统编号。dsi为该缺 陷报告的描述序列,由缺陷报告的摘要和详细描述经过自然语言处理后得到,dsi可以表示为 dsi={sdi,ldi},其中sdi为该缺陷报告的摘要,ldi为该缺陷报告的详细描述。把缺陷报告根 据其所属的产品pi进行分类,将历史缺陷报告划分为若干个子集。
2.组建训练样本
采用pairwise算法组建训练样本,对于每个缺陷报告bri,将其中的组件编号ci、危险等 级编号si、描述序列dsi、部署平台编号plai、操作系统编号sysi、参与该缺陷报告的一名开 发者devi,j组成一个正样本{ci,si,plai,sysi,dsi,devi,j}(devi,j表示参与bri的第j名开发者,其 中1≤i≤N,N为所有缺陷报告的数量,1≤j≤Hi,Hi为评论缺陷报告bri的开发者数量), 并附加标签1,从而组成正样本集合。
对于每个缺陷报告bri,从所有的开发者集合D随机选取Hi名未参与该缺陷报告的开发 者与之组成Hi个负样本,并附加标签0。从而由等量的正样本和负样本共同组成均衡数据集, 打乱数据集构成训练数据集TrainSet1
对集合D中的每一名开发者,根据其评论过的缺陷报告的数量,对开发者进行降序排序, 选取其中排名最靠前的30%开发者组成高频开发者集合。对于每个缺陷报告bri,从高频开发 者集合中选取Hi名未参与该缺陷报告的开发者与之组成Hi个负样本,并附加标签1。从而由 等量的正样本和负样本共同组成均衡数据集,打乱数据集构成训练数据集TrainSet2
3.构建结构化深度学习模型
结构化深度学习模型将接收到的缺陷报告bri中的描述信息和元信息分别转换成对应的 向量,将组件编号ci转换为对应的向量Vi c,将危险等级编号si转换为对应的向量Vi s,将部 署平台编号plai转换为对应的向量Vi pla,将操作系统编号sysi转换为对应的向量Vi sys,将描 述序列dsi转换为对应的向量Vi ds,从而将一个缺陷报告转换成由一组向量表示bri={Vi c,Vi s,Vi pla,Vi sys,Vi ds}。将开发者devk转换为对应的向量Vk dev。并将所得的6个向量拼 接起来,输入全连接层进行处理,并在最后一个单节点的全连接层通过sigmoid激活函数得 到一个(0,1)内的输出。
4.训练和评估模型
将步骤2中组建的两组训练样本TrainSet1、TrainSet2分别输入到步骤3中构建的结构化 深度学习模型中,对模型进行训练,得到两个具有不同偏好的模型model1和model2,通过集 成学习的方法将两个模型的输出结果进行加权组合,作为最终的模型输出结果。在测试集中 通过对推荐系统常用评价指标Recall、MAP、MRR的观察,调节模型的参数,选择合适的模 型作为推荐模型。
其中,模型评价指标Recall为回报率,Recall的值越接近1,说明模型的效果越好。。用 {devi,1,devi,2,...,devi,Q}表示对于缺陷报告bri,模型推荐的Q名开发者。用{devi,1,devi,2,...,devi,S}表示实际参与了缺陷报告bri的开发者。则汇报率Recall可以表示为:
其中,模型评价指标MAP为平均准确率,测试集的平均准确率是每个缺陷报告的平均 准确率的平均值,MAP值越接近1,则模型效果越好。测试集可以表示为 BT={br1 T,br2 T,...,brL T},其中L为测试集的数量。若bri T实际上有Hi名开发者参与,则参与 的开发者可以表示为而模型推荐的Q名开发者中,有A名开 发者属于Di T,其中A≤Hi。且这A名开发者在推荐的Q名开发者中,排名从小到大分别为{r1,r2,...,rA}。则该缺陷报告的MAP值为:/>则整个测试集上的MAP值为:/>模型评价指标MRR可以表示为/>整个测试集上的MRR 值为/>MRR的值越接近1,表明模型的效果越好。
5.排序并推荐开发人员
对于未分配修复人员的缺陷报告brnew,采用步骤1的方法对brnew做相同的处理,得到 brnew={pnew,cnew,snew,planew,sysnew,dsnew}。将处理后的缺陷报告brnew分别与所有的开发者 D={dev1,dev2,...,devN}分别进行组合。并将组合后的样本输入到步骤5训练后得到的模型中。 得到每一组样本的输出,对所有样本的输出降序排列,然后选择排名靠前的Q名开发人员, 并将他们推荐为修复该新缺陷报告的修复人员。
与现有技术相比,本发明的积极效果为:
本发明使用结构化深度学习模型,将缺陷报告的描述、缺陷报告的产品、组件、开发者进行匹配后,作为结构化深度学习模型的输入。通过模型的输出来判断某一开发者 与该缺陷报告是否适合修复该缺陷报告,从而得出推荐的开发者。本发明首次提出通过 结构化深度学习模型的方式来改进缺陷报告修复人推荐的效果。并且充分利用了软件缺陷数据库中的历史数据,利用历史缺陷报告和开发者进行匹配组成样本,用于训练模型。 对于结构化深度学习模型的构建等技术采用的使相关领域的研究成果,不属于本发明对 现有技术的改进内容,因此本说明书不在对其进行详细描述。
附图说明
图1位为发明一种软件缺陷报告分配方法框架图。
图中缺陷报告表示为:bri={pi,ci,si,plai,sysi,dsi}
其中:
pi表示产品;
ci表示组件;
si表示风险等级;
plai表示平台;
sysi表示操作系统;
dsi表示描述序列,dsi={sdi,ldi},其中:sdi表示摘要,ldi表示描述;
具体实施方式
下面通过具体实施方式对本方法作进一步说明
1.提取历史缺陷报告数据
连接软件项目的缺陷数据库,从中获取历史缺陷报告数据。一般地,每个缺陷报告的在 缺陷数据内存储的信息会包括缺陷报告的标题、缺陷报告的摘要、缺陷报告的详细描述、缺 陷报告的预定义字段(如:提交人、创建时间、状态、所属产品和模块等)、开发者对缺陷报告的评论、缺陷报告的修改历史等。
本方法从历史缺陷报告库中选择已经被修复的历史缺陷报告,以Elclipse软件缺陷数 据库为例,在bugs表单中选择字段bug_resolution=“FIXED”并且字段bug_status=“VERIFIED”or“CLOSED”or“RESOLVED”的所有缺陷报告的缺陷报告编号、产品、 组件、部署平台、操作系统、危险等级、摘要和详细描述;根据选取出的所有的缺陷报告编号,从评论表单longdescs中选出参与该缺陷报告的开发者。
2.预处理缺陷报告数据
(1)步骤1提取了缺陷报告的摘要部分、详细描述部分,这两部分均属于文本内容,需要对内容进行文本预处理。本方法将摘要部分和详细描述部分进行拼接,共同组成缺陷报 告的描述信息。然后对文本内容进行自然语言处理,包括英文分词、取出停用词、提取词干 等步骤转换成离散的词集合。本文处理的是英文缺陷报告,已有成熟的分词工具,采用空格和标点符号对句子进行分割,随后采用停用词表去除停用词,然后采用Porter算法提取词 干,获得能够代表文档的标引词集合,并且将描述文本转换成由数字组成的列表,称为“描 述序列”。
(2)步骤1提取了每个软件缺陷报告中的产品、组件、部署平台、操作系统、危险等级组成的元信息,并对其逐个进行编号,使每个产品、组件、部署平台、操作系统、危险等级均有一个唯一的整数编号,从而将原本的英文单词表示转换为数值表示。
(3)步骤1还提取了每个缺陷报告的所有参与的开发者,将所有缺陷报告中的开发者 全部提取出来,并对其逐个进行编号,将每个开发者映射到唯一的一个整数编号,从而将开 发者转换为数值表示。
3.组建训练、测试样本
(1)将1中从历史缺陷报告数据库中提取的缺陷报告根据其创建时间排列,将前80% 的数据作为训练数据,最后20%的数据作为测试数据。
(2)步骤2中将每个缺陷报告bri转换成由数值表示的bri={pi,ci,si,plai,sysi,dsi},其中 pi表示缺陷报告bri中的产品;ci表示缺陷报告bri中的组件,plai表示缺陷报告bri中的平台, sysi表示缺陷报告bri中的操作系统,dsi表示缺陷报告bri的描述序列,由缺陷报告摘要sdi和 详细描述ldi组成,可以表示为dsi={sdi,ldi}。参与缺陷报告bri的开发者集合表示为其中devi,j表示参与缺陷报告bri的第j名开发者,Hi表示参与 该缺陷报告的开发者的总数。历史缺陷报告集合{br1,br2,...,br}所有的开发者表示为 D={dev1,dev2,...,devN},其中devk表示每一位开发者,N表示开发者的总数。
(3)利用pairwise算法将训练数据中缺陷报告bri与参与该缺陷报告的所有开发者Di中 的每个开发者分别配对组成正样本,并为正样本添加1作为标签。
(4)对于训练数据中的每个缺陷报告bri,从未参与该缺陷报告的所有开发者D\Di中随 机选取Hi名开发者与缺陷报告bri组成等量的负样本,并为负样本添加0作为标签。将(2) 中正样本和负样本随机混合后组成第一组训练样本TrainSet1
(5)对于所有的开发者,根据其参与的缺陷报告数量从高到低进行排序,选择排名靠 前的30%的开发者作为高频开发者。对于训练数据中的每个缺陷报告bri,从中随机选取Hi名 未参与该缺陷报告的开发者与之组成负样本。并为负样本添加0作为标签。将(2)中正样 本和负样本随机混合后组成第一组训练样本TrainSet2
(6)对于测试数据中的每个缺陷报告bri,分别于所有的开发者组成样本,组成测试集 TestSet。
4.构建结构化深度学习模型
构建多输入的结构化深度学习模型,该模型接收4个输入,并且分别对接收的输入进行 处理,转换为向量。然后由全连接层处理,并输出(0,1)之间的值。
(1)输入1由Input层、Embedding层、LSTM层组成,Input层输入等长的描述序列dsi, 由Embedding层将根据预训练的word2vec模型参数,将输入序列转换成对应的矩阵,并输 入LSTM层。由LSTM层对输入矩阵进行处理,从而将dsi转换为量Vi ds。输入2由Input层、Embedding层、Reshape层组成,Input层输入产品对应的编号ci,将输入数值转换为对应的向量,并输入到Reshape层,将产品编号ci转换为向量Vi c。输入3、输入4、输入5、输入6 的结构与输入2的结构类似,分别将危险等级编号si转换成向量Vi s,将部署平台编号plai转 换成向量Vi pla,将操作系统编号sysi转换成向量Vi sys,将开发者编号devj转换为向量Vj dev
(2)模型中的Concatenate层将(1)中得到的6个向量Vi c、Vi s、Vi ds、Vi pla、Vi sys、Vj dev组合成一个新的的向量。并将这个向量作为后续Dense层的输入。
(3)模型中包含两个Dense层,分别为Dense_1和Dense_2,Dense_1中包含256个节点,采用rule激活函数,对输入的信息进行处理。Dense_2中包含1个节点,采用sigmoid 激活函数,将输出调整到(0,1)的范围内。
5.训练深度学习模型
将步骤3中组建的训练样本集合TrainSet1、TrainSet2分别输入步骤4中组建的结构化深 度学习模型,分别训练得到两个具有不同偏好的模型model1、model2。将这两个模型的输出 结果加权后组合,作为模型的最终输出。通过观察模型在测试集上的评价指标Recall、MAP、 MRR,来评估模型的性能,并选择合适的模型用于后续的预测。
6.为新的缺陷报告推荐合适的开发者对其进行修复
(1)对于新的缺陷报告brnew,采用与步骤2相同的方法,对其中的摘要和详细描述部 分的文本内容,通过自然语言处理技术,包括分词、去除停用词、提取词干。将其转换为由 整数组成的描述序列dsnew。对于brnew中涉及的产品和组件,分别将他们转换为对应的编号 pnew和cnew,从而将新的缺陷报告表示为brnew={pnew,cnew,snew,planew,sysnew,dsnew}。
(2)将新的缺陷报告brnew与所有的开发者{dev1,dev2,...,devN}分别配对,组成N组样本, 并将这N组样本输入步骤5中得到的模型,并得到模型的输出。
(3)根据(2)中得到的输出,对样本进行降序排序,选择排名最高前Q组样本中的开发者作为推荐开发者来对该缺陷报告brnew进行修复。
以上内容对本发明所述基于结构化深度学习的软件缺陷修复人推荐方法进行了详细的 说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说, 在不背离本发明的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。

Claims (10)

1.一种软件缺陷报告修复人推荐方法,其特征在于:该方法的具体实施步骤为,
1)从软件缺陷报告数据库中选取此前已经完成修复的缺陷报告,从缺陷报告中提取该缺陷的描述信息和元信息;描述信息包括摘要和详细描述;元信息包括产品、组件、部署平台、操作系统、危险等级;并提取出参与评论该缺陷报告的开发人员;
2)将1)中提取的摘要和描述的文本内容组合在一起,对文本内容进行自然语言处理,将文本转换为数字序列表示,称为描述序列;
3)将1)中提取出的缺陷报告中涉及的元信息,即产品、组件、部署平台、操作系统、危险等级分别进行编号;并为每个开发者指定唯一的编号;对所有的缺陷报告根据其所属的产品进行分类,分成若干个子集;选取历史缺陷报告中前80%的缺陷报告作为训练数据集,后20%的缺陷报告作为测试数据集;
4)将2)、3)中得到的训练数据集中每一个缺陷报告的描述序列、组件编号、部署平台编号、操作系统编号、危险等级编号、与参与评论缺陷报告的每一名开发者编号组成分别组成正样本,并附加标签1,构建正样本集合;
5)对于训练数据集每一个缺陷报告,随机选取与参与评论该缺陷报告的开发者数量相同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并打乱后组成第一组训练集TrainSet1
6)将训练数据集中所有的开发者按照参与bug的数量降序排列,从中选取前30%的开发者作为高频开发者集合;对于每一个缺陷报告,从高频开发者集合中选取与参与评论该缺陷报告的开发者数量相同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并打乱后组成第一组训练集TrainSet2
7)将测试数据集中所有的缺陷报告与所有的开发者一一匹配,组建测试集TestSet;
8)构建多输入的结构化深度学习模型,模型接收6个输入,分别是:描述序列、组件编号、部署平台编号、操作系统编号、危险等级编号、开发者编号;模型输出一个(0,1)之间的值;
9)将5)、6)中得到的训练集数据分别输入模型,对模型分别进行若干轮训练,由训练集TrainSet1训练得到的模型为model1,由训练集TrainSet2训练得到的模型为model2;由model1和model2得到的结果进行加权组合后得到最终结果;并在测试集TestSet上通过对评价指标的观测评估的性能,对模型的结构和参数进行优化;
10)将未分配修复推荐人的缺陷报告提取其摘要和描述,采用与2)相同的方法进行自然语言处理,转换为描述序列;采用与3)相同的方法将报告中的产品、组件、部署平台、操作系统、危险等级转换为对应的编号;并根据该缺陷等报告的产品编号对其进行分类;最后将该缺陷报告的信息与所有的开发者分别配对组成样本;
11)对于9)中提及的由未分配推荐人的缺陷报告和所有开发者组成的样本,根据其所属的产品类别输入8)训练所得的对应模型,获得每组样本对应的模型输出,并对输出值进行降序排序,选择排名靠前的Q名开发者作为该缺陷报告的推荐修复人。
2.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,相关的开发者指所有参与评论该缺陷报告的开发者。
3.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,所述的文本内容为历史缺陷报告的文本内容包含摘要和详细描述。
4.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,所述的自然语言处理包括英文分词、去除停用词及提取词干。
5.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,要对所有的缺陷报告根据其产品进行分类,细分为若干个子集。
6.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,构建正样本集合时,将每一个历史缺陷报告与所有参与缺陷报告的开发者进行配对,并附加标签1。
7.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,从所有的开发者里未参与该缺陷报告的开发者中,随机选取开发者,与该缺陷报告配对成负样本,并附加标签0;组成第一组训练集TrainSet1
8.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于,构建训练集2时,从高频开发者中选取Hi名开发者,与每个缺陷报告bri组成Hi个负样本,并与正样本组成第二组训练集TrainSet2
9.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于:采用两组训练集TrainSet1、TrainSet2分别对模型进行训练,将得到的两个模型model1和model2采用集成学习的方式对模型输出结果进行加权组合,作为最终的结果;并根据模型在测试集TestSet上的表现对模型的结构、参数和训练轮次等进行调整,从而选择合适的集成学习模型用于预测。
10.如权利要求1所述的一种软件缺陷报告修复人推荐方法,其特征在于:对新的缺陷报告做2),3)的处理后,与所有的开发者分别配对组合成样本,并将组合后的样本输入模型,输出的值作为该组样本的评分;
根据模型对于输入样本的输出值,对样本中的开发者进行降序排序,选取排名靠前的前Q名开发者做为该未分配修复推荐人缺陷报告的修复人对其进行修复,其中1≤Q≤N,N为所有开发人员的数目。
CN202011226363.9A 2020-11-06 2020-11-06 一种软件缺陷报告修复人推荐方法 Active CN112667492B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011226363.9A CN112667492B (zh) 2020-11-06 2020-11-06 一种软件缺陷报告修复人推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011226363.9A CN112667492B (zh) 2020-11-06 2020-11-06 一种软件缺陷报告修复人推荐方法

Publications (2)

Publication Number Publication Date
CN112667492A CN112667492A (zh) 2021-04-16
CN112667492B true CN112667492B (zh) 2024-03-08

Family

ID=75402992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011226363.9A Active CN112667492B (zh) 2020-11-06 2020-11-06 一种软件缺陷报告修复人推荐方法

Country Status (1)

Country Link
CN (1) CN112667492B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114862863B (zh) * 2022-07-11 2022-09-20 四川大学 一种样本可均衡的曲轴表面缺陷检测方法及检测系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262663A (zh) * 2011-07-25 2011-11-30 中国科学院软件研究所 一种软件缺陷报告修复方法
CN103246603A (zh) * 2013-03-21 2013-08-14 中国科学院软件研究所 一种缺陷跟踪系统的软件缺陷报告自动分发方法
KR20160088737A (ko) * 2015-01-16 2016-07-26 서울시립대학교 산학협력단 토픽 모델과 다중 특성 기반의 버그 정정 개발자 추천 및 버그 심각성 예측 시스템 및 방법
CN109299007A (zh) * 2018-09-18 2019-02-01 哈尔滨工程大学 一种缺陷修复者自动推荐方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262663A (zh) * 2011-07-25 2011-11-30 中国科学院软件研究所 一种软件缺陷报告修复方法
CN103246603A (zh) * 2013-03-21 2013-08-14 中国科学院软件研究所 一种缺陷跟踪系统的软件缺陷报告自动分发方法
KR20160088737A (ko) * 2015-01-16 2016-07-26 서울시립대학교 산학협력단 토픽 모델과 다중 특성 기반의 버그 정정 개발자 추천 및 버그 심각성 예측 시스템 및 방법
CN109299007A (zh) * 2018-09-18 2019-02-01 哈尔滨工程大学 一种缺陷修复者自动推荐方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OSDR:一种开源软件的缺陷修复人推荐方法;张文;李自强;杜宇航;赵博扬;;计算机应用与软件(08);全文 *

Also Published As

Publication number Publication date
CN112667492A (zh) 2021-04-16

Similar Documents

Publication Publication Date Title
CN104536881B (zh) 基于自然语言分析的众测错误报告优先级排序方法
CN109299271A (zh) 训练样本生成、文本数据、舆情事件分类方法及相关设备
CN112597038B (zh) 软件缺陷预测方法及系统
Utari et al. Implementation of data mining for drop-out prediction using random forest method
CN108733838B (zh) 基于多极情感分析的用户行为预测系统及其方法
CN113537807A (zh) 一种企业智慧风控方法及设备
CN112667492B (zh) 一种软件缺陷报告修复人推荐方法
Fong et al. Applying a hybrid model of neural network and decision tree classifier for predicting university admission
CN110310012B (zh) 数据分析方法、装置、设备及计算机可读存储介质
CN115796312A (zh) 一种多变量时间序列预测方法及系统
CN114519508A (zh) 基于时序深度学习和法律文书信息的信用风险评估方法
Müller et al. An interactive explanatory AI system for industrial quality control
CN111666748B (zh) 一种自动化分类器的构造方法以及识别决策的方法
Jayanti et al. Application of Predictive Analytics To Improve The Hiring Process In A Telecommunications Company
CN113313470B (zh) 一种基于大数据的就业类型评估方法及系统
CN112256869B (zh) 一种基于题意文本的同知识点试题分组系统和方法
CN114638499A (zh) 一种基于犹豫模糊四阶段dea的公共文化效能评估方法
CN114519092A (zh) 一种面向中文领域大规模复杂关系数据集构建框架
CN113835739A (zh) 一种软件缺陷修复时间的智能化预测方法
Astuti et al. Product Review Sentiment Analysis by Artificial Neural Network Algorithm
CN112200474A (zh) 教学质量评价方法、终端设备及计算机可读存储介质
CN111915216B (zh) 基于二次注意力机制的开源软件项目开发人员推荐方法
Chen et al. A competition model for prediction of admission scores of colleges and universities in Chinese college entrance examination
CN116258574B (zh) 一种基于混合效应逻辑回归的违约率预测方法及系统
CN116595973B (zh) 一种基于自然语言处理分类技术的岗位职能识别方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant