首页> 中国专利> 一种软件缺陷报告修复人推荐方法

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

摘要

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

著录项

  • 公开/公告号CN112667492A

    专利类型发明专利

  • 公开/公告日2021-04-16

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN202011226363.9

  • 发明设计人 张文;赵江鹏;李健;

    申请日2020-11-06

  • 分类号G06F11/36(20060101);G06N20/20(20190101);

  • 代理机构11203 北京思海天达知识产权代理有限公司;

  • 代理人沈波

  • 地址 100124 北京市朝阳区平乐园100号

  • 入库时间 2023-06-19 10:38:35

说明书

技术领域

本发明涉及一种软件缺陷报告修复人推荐方法,属于计算机软件开发技术领域。

背景技术

随着软件开发技术的不断更新,软件系统功能日益多样化,软件系统的复杂度也不 断提高。而软件缺陷能否得到高效的解决,是衡量软件质量管理水平的重要指标,软件缺陷管理在学术界和工业界也受到越来越多的关注。对于软件开发团队来说,在软件的 生命周期中,及时地发现和解决软件缺陷能够有效地提高软件产品质量,降低软件开发 成本。对于用户来说,高效的解决软件缺陷能够提升用户体验,提高软件开发团队的知 名度。

为了有效地管理软件缺陷,软件缺陷跟踪系统,如Bugzilla、JIRA等软件被广泛地应用于现代软件开发过程中。在软件开发和维护的过程中,软件测试人员或者用户在发 现缺陷后,通过缺陷跟踪系统提交缺陷报告。然后由负责缺陷分派的质量管理人员将缺 陷报告分派给缺陷修复开发者。现代软件系统由于规模庞大、开发团队人员众多,以及 分布式团队的兴起,使得软件缺陷分配所需的工作量迅速增长,因此人工为软件缺陷分 配开发者非常耗时费力。软件缺陷分配需要综合考量该缺陷的特点以及开发者的经验和 通常,所以如何将缺陷报告分配给合适的开发人员也对质量管理人员的经验和能力提出 了较高的要求。

面对软件缺陷数量的快速增长和缺陷复杂度的提升,传统的软件缺陷分配方式暴露 出分配效率低、耗费成本大等不足。需要一种自动化的方式将缺陷报告与开发者个性化匹配,减少人工分配的工作量,提高分配效率。

发明内容

鉴于目前软件复杂度逐步提高,软件开发的方法和团队日益多样化,软件缺陷修复 对于软件的开发、使用和维护有着重要的意义。而目前的人工方法存在着分配效率低、耗费成本高等问题。本发明提供了一种软件缺陷报告修复人推荐方法。本发明的目的是 将新增的软件缺陷报告推荐给适合的开发者进行修复。

本发明的技术内容为:

一种软件缺陷报告修复人推荐方法,其步骤为:

1)从软件缺陷报告数据库中选取此前已经完成修复的缺陷报告,从缺陷报告中提取该缺 陷的描述信息和元信息。描述信息包括摘要和详细描述。元信息包括产品、组件、部署平台、操作系统、危险等级。并提取出参与评论该缺陷报告的开发人员;

2)将1)中提取的摘要和描述的文本内容组合在一起,并且对文本内容进行自然语言处 理,将文本转换为数字序列表示,称为描述序列;

3)将1)中提取出的缺陷报告中涉及的元信息,即产品、组件、部署平台、操作系统、危险等级分别进行编号。并为每个开发者指定唯一的编号。对所有的缺陷报告根据其 所属的产品进行分类,分成若干个子集。选取历史缺陷报告中前80%的缺陷报告作为 训练数据集,后20%的缺陷报告作为测试数据集;

4)将2)、3)中得到的每一个缺陷报告的描述序列、组件编号、部署平台编号、操作系 统编号、危险等级编号、与参与评论该缺陷报告的每一名开发者编号组成分别组成正样本,并附加标签1,构建正样本集合;

5)对于训练数据集的每一个缺陷报告,随机选取与参与评论该缺陷报告的开发者数量相 同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并打乱后组成第一组训练集 TrainSet

6)将训练数据集中所有的开发者按照参与缺陷报告的数量降序排列,从中选取前30%的 开发者作为高频开发者集合。对于每一个缺陷报告,从高频开发者集合中选取与参与 评论该缺陷报告的开发者数量相同的未评论该缺陷报告的开发者与之组成负样本,并附加标签0,组建负样本集合,并将该负样本集合与4)中得到的正样本集合混合并 打乱后组成第一组训练集TrainSet

7)将测试数据集中所有的缺陷报告与所有的开发者一一匹配,组建测试集TestSet;

8)构建多输入的结构化深度学习模型,模型接收6个输入,分别是:描述序列、组件编 号、部署平台编号、操作系统编号、危险等级编号、开发者编号。模型输出一个(0,1) 之间的值;

9)将5)、6)中得到的训练集数据分别输入模型,对模型分别进行若干轮训练,由训练 集TrainSet

10)将未分配修复推荐人的缺陷报告提取其摘要和描述,采用与2)相同的方法进行自然 语言处理,转换为描述序列。采用与3)相同的方法将报告中的产品、组件、部署平台、操作系统、危险等级转换为对应的编号。并根据该缺陷等报告的产品编号对其进 行分类。最后将该缺陷报告的信息与所有的开发者分别配对组成样本;

11)对于9)中提及的由未分配推荐人的缺陷报告和所有开发者分别组成的样本,输入8) 训练所得模型,获得每组样本对应的模型输出,并对输出值进行降序排序,选择排名 靠前的Q名开发者作为该缺陷报告的推荐修复人;

进一步的,所述相关的开发者指所有参与评论该缺陷报告的开发者。

进一步的,将缺陷报告摘要和描述组合在一起,并进行自然语言处理,包括英文分词、 去除停用词及提取词干。并根据数据集中的文本中出现的所有词组建词典,根据词出现的词 频进行降序排列,将每个词对应一个唯一的整数,从而将文本转换成数字序列。

进一步的,提取历史缺陷报告数据集中所有出现的产品,将每个产品对应到一个唯一的 整数。对于数据集中出现的组件、部署平台、操作系统、危险等级,以及参与缺陷报告的开 发者做相同的处理,使它们分别对应一个整数。

进一步的,将所有的缺陷报告集合{br

进一步的,构建正样本集合时,将每一个历史缺陷报告br

进一步的,构建训练集1时,从所有的开发者里未参与该缺陷报告的开发者中,随机选 取H

进一步的,构建训练集2时,对于每个br

进一步的,构建多输入的结构化深度学习模型,该模型接收6个输入,输入1接收等长 的描述序列,并将其转换为一个向量。输入2,输入3,输入4,输入5,输入6分别接收由 一个整数代表的组件、部署平台、操作系统、危险等级、开发者,分别将其转换为对应的向 量。然后对6个向量进行组合,输入全连接神经网络并得到一个(0,1)内的输出。输出值越接 近1,则说明该开发者越适合处理该缺陷报告,输出值越接近0,则说明该开发者越不适合 处理该缺陷报告。

进一步的,采用两组训练集TrainSet

进一步的,对新的缺陷报告做2),3)的处理后,与所有的开发者分别配对组合成样本, 并将组合后的样本输入模型,输出的值作为该组样本的评分。

进一步的,根据模型对于输入样本的输出值,对样本中的开发者进行降序排序,选取排 名靠前的前Q名开发者做为该未分配修复推荐人缺陷报告的修复人对其进行修复,其中 1≤Q≤N,N为所有开发人员的数目。

下面说明本发明的核心内容。

本发明方法的整体框架如附图所示。

首先从历史缺陷报告数据库中提取已有的缺陷报告数据,对历史缺陷报告数据进行筛 选、分类、文本预处理等步骤后,组成用于训练和测试模型的数据集。然后构建结构化深度 学习模型,并通过不同的训练集对模型进行训练,得到具备不同偏好的两个模型,采用集成 学习的方法对两个模型进行组合,用于对新的缺陷报告进行预测。最后对于每个新的缺陷报 告,提取模型预测所需的元信息和描述信息,并采用相同的分类、文本预处理等方法对缺陷 报告进行处理并输入模型进行预测。

具体地,一种基于结构化深度学习的软件缺陷修复人推荐方法,其步骤为:

1.构建历史数据集合

此阶段目的是为提取历史缺陷报告的数据,并构建历史缺陷报告集合和开发人员集合。 首先需要从数据库中提取历史缺陷报告数据,包括每个缺陷报告的摘要、描述、产品、组件、 部署平台、操作性系统、危险等级和参与其中的开发人员。其次需要对每个缺陷报告的摘要 和描述的文本内容进行文本预处理,包括英文分词、去除停用词和词干提取。最后为经过文 本预处理后的历史缺陷报告构建缺陷报告集合和开发人员集合。具体的步骤如下:

(1)英文分词

对于英文缺陷报告,分词较为简单,采用空格和标点符号对句子进行分割,如果是对于 中文描述的缺陷报告,应使用中文分词工具包或相应的软件。

(2)去除停用词

采用停用词表去除停用词

(3)词干提取

采用Porter算法提取词干,获得能代表文档的标引词集合。

(4)构建历史缺陷报告集合

将自然语言处理后的文本与缺陷报告编号对应组成历史缺陷报告集合。

将所有经过文本预处理之后的缺陷报告构成一个集合B={br

2.组建训练样本

采用pairwise算法组建训练样本,对于每个缺陷报告br

对于每个缺陷报告br

对集合D中的每一名开发者,根据其评论过的缺陷报告的数量,对开发者进行降序排序, 选取其中排名最靠前的30%开发者组成高频开发者集合。对于每个缺陷报告br

3.构建结构化深度学习模型

结构化深度学习模型将接收到的缺陷报告br

4.训练和评估模型

将步骤2中组建的两组训练样本TrainSet

其中,模型评价指标Recall为回报率,Recall的值越接近1,说明模型的效果越好。。用 {dev

其中,模型评价指标MAP为平均准确率,测试集的平均准确率是每个缺陷报告的平均 准确率的平均值,MAP值越接近1,则模型效果越好。测试集可以表示为 B

5.排序并推荐开发人员

对于未分配修复人员的缺陷报告br

与现有技术相比,本发明的积极效果为:

本发明使用结构化深度学习模型,将缺陷报告的描述、缺陷报告的产品、组件、开发者进行匹配后,作为结构化深度学习模型的输入。通过模型的输出来判断某一开发者 与该缺陷报告是否适合修复该缺陷报告,从而得出推荐的开发者。本发明首次提出通过 结构化深度学习模型的方式来改进缺陷报告修复人推荐的效果。并且充分利用了软件缺 陷数据库中的历史数据,利用历史缺陷报告和开发者进行匹配组成样本,用于训练模型。 对于结构化深度学习模型的构建等技术采用的使相关领域的研究成果,不属于本发明对 现有技术的改进内容,因此本说明书不在对其进行详细描述。

附图说明

图1位为发明一种软件缺陷报告分配方法框架图。

图中缺陷报告表示为:br

其中:

p

c

s

pla

sys

ds

具体实施方式

下面通过具体实施方式对本方法作进一步说明

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中将每个缺陷报告br

(3)利用pairwise算法将训练数据中缺陷报告br

(4)对于训练数据中的每个缺陷报告br

(5)对于所有的开发者,根据其参与的缺陷报告数量从高到低进行排序,选择排名靠 前的30%的开发者作为高频开发者。对于训练数据中的每个缺陷报告br

(6)对于测试数据中的每个缺陷报告br

4.构建结构化深度学习模型

构建多输入的结构化深度学习模型,该模型接收4个输入,并且分别对接收的输入进行 处理,转换为向量。然后由全连接层处理,并输出(0,1)之间的值。

(1)输入1由Input层、Embedding层、LSTM层组成,Input层输入等长的描述序列ds

(2)模型中的Concatenate层将(1)中得到的6个向量V

(3)模型中包含两个Dense层,分别为Dense_1和Dense_2,Dense_1中包含256个节点,采用rule激活函数,对输入的信息进行处理。Dense_2中包含1个节点,采用sigmoid 激活函数,将输出调整到(0,1)的范围内。

5.训练深度学习模型

将步骤3中组建的训练样本集合TrainSet

6.为新的缺陷报告推荐合适的开发者对其进行修复

(1)对于新的缺陷报告br

(2)将新的缺陷报告br

(3)根据(2)中得到的输出,对样本进行降序排序,选择排名最高前Q组样本中的开发者作为推荐开发者来对该缺陷报告br

以上内容对本发明所述基于结构化深度学习的软件缺陷修复人推荐方法进行了详细的 说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说, 在不背离本发明的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发 明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号