首页> 中国专利> 结合句嵌入和粒子群优化算法的软件缺陷定位方法

结合句嵌入和粒子群优化算法的软件缺陷定位方法

摘要

本发明公开了一种结合句嵌入和粒子群优化算法的软件缺陷定位方法。本发明提出使用句嵌入技术构建软件缺陷报告与源代码文件之间的相似度计算模型,同时计算平滑逆频率分数、表面词汇相似度分数、缺陷修复记录分数、缺陷修复频率分数以及协同过滤分数,最后用粒子群优化算法计算出五种分数的线性组合权重,从而获得缺陷报告与所有源代码文件的最终积分。本发明利用句嵌入技术(SIF)获取软件缺陷报告与源代码文件之间的语义信息,使得相似度的计算更加合理;本发明使用粒子群优化算法优化线性权重得到最优综合分值能够提高软件缺陷定位的准确性。

著录项

  • 公开/公告号CN112286799A

    专利类型发明专利

  • 公开/公告日2021-01-29

    原文格式PDF

  • 申请/专利权人 杭州电子科技大学;

    申请/专利号CN202011118127.5

  • 发明设计人 陈信;俞东进;范旭麟;郭世明;

    申请日2020-10-19

  • 分类号G06F11/36(20060101);G06F40/211(20200101);G06F40/284(20200101);G06N3/00(20060101);

  • 代理机构33240 杭州君度专利代理事务所(特殊普通合伙);

  • 代理人朱月芬

  • 地址 310018 浙江省杭州市下沙高教园区2号大街

  • 入库时间 2023-06-19 09:43:16

说明书

技术领域

本发明涉及软件维护领域,尤其涉及一种结合句嵌入和粒子群优化算法的软件缺陷定位方法。

背景技术

软件缺陷指的是软件或程序在运行的过程中出现了异常行为,这些行为可能会破坏软件或程序的正常运行,甚至出现崩溃现象。在软件开发中,缺陷是不可避免的,缺陷管理与求解是软件维护中一项十分重要的活动。为了有效的管理和维护软件缺陷,许多公司或组织采用缺陷追踪系统(如Bugzilla和JIRA)来收集终端用户、软件测试者或开发者提交的缺陷报告。通常,一个缺陷报告中会包含缺陷相关信息,主要涉及软件在特定场景下出现的异常的行为,能够有效地帮助开发者理解软件缺陷并进行修复。

缺陷定位是缺陷修复过程中一个重要环节。通常,开发者需要审查缺陷报告并根据缺陷报告中的描述信息重现揭露的缺陷,从而定位软件中可能出现缺陷的位置。然而,人工地审查缺陷报告,可能会花费大量时间和精力。其主要原因在于开发人员可能需要检查大量的源代码文件以找到目标缺陷。通过自动化技术定位缺陷可能出现的位置,能够加快缺陷定位的过程,帮助开发者提高软件维护的效率,降低软件维护代价。当前,许多研究者尝试借助缺陷报告中的缺陷信息,通过对源程序进行对比分析,找到可能出现缺陷的位置。但是由于缺陷报告中的文本信息与源代码文件中的单词之间存在词汇差异,增加了缺陷定位的难度。

近来,许多研究聚焦在通过缺陷报告来实现软件缺陷定位,通过利用软件缺陷报告的摘要和描述信息来找到相关源代码文件。现有的基于缺陷报告的软件缺陷定位方法可以分为两类:第一类是基于信息检索(Information Retrieval)的方法,这些方法计算给定的软件缺陷报告与源代码文件内容之间的文本相似度并对源代码文件进行排序,找到最相似的源代码文件。第二类,就是基于机器学习或深度学习方法进行软件缺陷定位,这些方法首先利用数据(缺陷报告和源代码文件)来训练模型,然后再利用训练完成的模型来匹配缺陷报告与源代码文件的主题或计算缺陷报告-源代码对的相似度以进行排序推荐。

发明内容

为了克服现有技术的不足,本发明提供一种结合句嵌入和粒子群优化算法的软件缺陷定位方法,可有效解决上述问题。

本发明具体采用的技术方案如下:

步骤(1)给定n个软件缺陷报告集合R=(R

步骤(2)给定m个源代码文件集合S=(S

步骤(3)对每一个缺陷报告R

首先对R

然后基于停用词列表移除其中的停用词,将初步区分后单词中的组合词再次进行分离,得到最终的单词集合;

最后将单词集合中的每个单词转为原型;

经过预处理后,每个缺陷报告为R

步骤(4)将经过预处理后所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R

步骤(5)构建平滑逆频率(Smooth Inverse Frequency,SIF)模型:

首先使用GloVe词嵌入技术对语料库Q中的单词进行训练,得到每个单词W

步骤(6)计算表面词汇相似度分数:

首先利用TF-IDF(Term Frequency-Inverse Document Frequency)计算每一个R

然后计算每一组句向量对

步骤(7)计算缺陷的修复历史记录分数RScore:

由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:

步骤(8)计算缺陷修复频率分数:

一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;

步骤(9)计算协同过滤分数CFScore:

如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRS

步骤(10)有了多个不同层面的缺陷报告与源代码文件的分数,将他们进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序,其中线性组合公式如下所示:

finalScore=α

其中,α

步骤(11)利用粒子群优化算法优化5个分数的线性权重α

首先确定粒子群优化算法的适应度函数ObjectFun=MAP+MRR,其中MAP是广泛用于信息检索的标准度量,即平均准确率,MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;

然后设置种群数量P,随机初始化每个个体的速度V

之后,在第t次迭代时,更新每个粒子的速度和位置,并更新每个个体的当前最优位置pbest

重复执行上述操作,直至达到最大迭代次数MaxIter,设定为1000,获得最优的权重组合α

步骤(12)根据得到的最优权重α

本发明提出使用句嵌入技术构建软件缺陷报告与源代码文件之间的相似度计算模型,同时计算平滑逆频率分数、表面词汇相似度分数、缺陷修复记录分数、缺陷修复频率分数以及协同过滤分数,最后用粒子群优化算法计算出五种分数的线性组合权重,从而获得缺陷报告与所有源代码文件的最终积分。相比于传统的软件缺陷定位方法,本发明具有如下收益:

1、利用句嵌入技术(SIF)获取软件缺陷报告与源代码文件之间的语义信息,使得相似度的计算更加合理;

2、使用粒子群优化算法优化线性权重得到最优综合分值能够提高软件缺陷定位的准确性。

附图说明

图1为本发明结合句嵌入技术和粒子群优化算法的缺陷定位方法的流程图;

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。

为叙述方便,定义相关符号如下:

S:源代码文件集合。

R:缺陷报告集合。

Q:源代码文件和缺陷报告组成的语料库。

pair:软件缺陷报告与源代码文件对组成的集合。

P:初始种群大小。

MaxIter:迭代次数大小。

c

w:线性权重。

数据源获取:本实验所用的原始数据来自由Ye整理的公开数据集。该数据集是从三个开源项目Tomcat、JDT和SWT中提取的,并根据相关操作获取相应的源代码文件。每个缺陷报告由以下几部分组成:缺陷报告编号、缺陷报告的详细描述信息、缺陷报告的摘要信息以及缺陷报告所对应的源代码文件等等。

以下结合附图1,对本发明专利提供的结合一种句嵌入和粒子群优化算法的软件缺陷报告定位方法进行详细说明,包括以下步骤:

步骤(1)给定n个软件缺陷报告集合R=(R

步骤(2)给定m个源代码文件集合S=(S

步骤(3)对每一个缺陷报告R

首先对R

然后基于停用词列表移除其中的停用词,并将组合词进行分离,最后将每个单词转为原型;经过预处理后每个缺陷报告表示为R

步骤(4)将所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R

步骤(5)构建平滑逆频率(Smooth Inverse Frequency,SIF)模型:

5-1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词W

5-2.计算每个单词W

其中,α为常数,通常设置为0.0001,p(W

5-3.句向量计算,分别计算R

其中,

5-4.计算每一组句向量

步骤(6)计算表面词汇相似度分数:

6-1.利用TF-IDF(Term Frequency-Inverse Document Frequency)计算语料库中每一个R

tfidf

其中,tf

6-2.计算每一组句向量

步骤(7)计算缺陷的修复历史记录分数RScore:由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:

步骤(8)计算缺陷修复频率分数:一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;

步骤(9)计算协同过滤分数CFScore:如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRS

其中,

步骤(10)有了多个不同层面的缺陷报告与源代码文件的分数,将他们进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序,其中线性组合公式如下所示:

finalScore=α

步骤(11)利用粒子群优化算法优化五个分数的线性权重α

11-1.确定粒子群优化算法的适应度函数,使用两个评估指标:

ObjectFun=MAP+MRR 公式11

其中MAP是广泛用于信息检索的标准度量,即平均准确率;MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;

11-2.设置种群数量P(P=20),随机初始化每个个体的速度V

11-3.在第t+1次迭代时,更新每个粒子的速度和位置,公式如下:

其中w为惯性权重w∈[0.1,0.9],c

11-4.计算每个个体的适应度函数值,并更新每个个体的当前最优位置pbest

11-5.重复执行上述操作,直至达到最大迭代次数MaxIter,设定为1000;最后,获得最优的权重组合α

步骤(12)根据得到的最优权重α

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号