一种基于深度迁移的软件缺陷预测方法技术

技术编号:21952151 阅读:61 留言:0更新日期:2019-08-24 17:36
本发明专利技术公开了一种基于深度迁移的软件缺陷预测方法,包括:(1)采用可视化方法将源项目和目标项目的源代码文件转化为图像文件;(2)构建深度迁移网络,其中,所述深度迁移网络包含提取单元和软件缺陷预测单元,并在特征提取单元采用自注意力机制;(3)根据采用自注意力机制提取的训练样本特征和测试样本特征之间的最大均值差异,和深度迁移网络的预测输出与样本的真值标签自检的交叉熵构建损失函数,并以损失函数收敛为目标,对深度迁移网络进行训练,以获得软件缺陷预测模型;(4)应用时,采用可视化方法将待检测源代码文件转化为图像,并将图像输入至软件缺陷预测模型,经计算,输出待检测源代码文件的缺陷预测结果。

A Software Defect Prediction Method Based on Deep Migration

【技术实现步骤摘要】
一种基于深度迁移的软件缺陷预测方法
本专利技术属于软件缺陷预测领域,具体涉及一种基于深度迁移的软件缺陷预测方法。
技术介绍
软件缺陷预测可分为项目内缺陷预测和跨项目缺陷预测。项目内缺陷预测需要大量该项目内已知是否有缺陷的样本,如文件、类和函数等,将其作为训练集,结合机器学习的方法生成分类器后对目标样本进行预测。跨项目缺陷预测则能够根据其他相关项目的样本对目标项目进行缺陷预测。现实开发过程中由于目标项目太新或者获取标签的成本过高,导致目标项目内训练样本过少,常常需要进行跨项目缺陷预测。目前缺陷预测方法主要有基于传统机器学习和基于深度学习这两种,前者需要利用特征工程对源代码文件进行特征提取后进一步采用机器学习分类模型进行预测,后者直接将源代码文件作为深度学习模型的输入从而端到端地输出缺陷预测结果。其中由于深度学习在许多领域的出色表现,如何利用深度学习进行软件缺陷预测成为了当前的研究热点。利用深度学习进行缺陷预测的难点在于:一是如何将缺陷文件输入到深度模型中;二是由于目标项目与源项目开发过程的不同,两者样本分布往往存在差异,直接影响预测效果,怎样减少这方面的障碍。为了将缺陷样本输入到深度模型中,目前最主要的方法是利用语法分析树(AST)对源代码文件进行关键词提取,将代码文件转换为语法序列输入到深度模型中。Wang等人利用深度置信网络对语法序列进行特征提取,然后构建基于机器学习的分类器进行分类从而进行缺陷预测;相似地,Li等人利用基于卷积神经网络的深度模型对语法序列提取特征后与原传统的人工提取特征一起作为机器学习模型的输入进行缺陷预测;Dam等人利用长短记忆网络作为深度模型,将语法序列作为输入后直接获得预测结果。以上方法都基于利用AST提取的语法序列进行缺陷预测操作,获得AST信息需要额外的工具,增加操作的困难并且降低了效率。另外,为了解决跨域样本分布差异较大的问题,迁移学习被引入到深度学习中,称为深度迁移学习。深度迁移学习方法主要可以分为基于映射和基于对抗两种,前者将源项目和目标项目的样本通过深度模型映射到同一个潜在的特征空间使得两者样本分布变得相似,后者通过样本生成器和判别器的对抗学习策略使得最终的样本分布相似,两者都可以解决源项目与目标项目样本分布不同的问题。Long等人利用最大均值差异(MMD)来衡量两个域之间样本分布的差异并在已有深度网络结构上根据计算MMD的策略不同提出了DAN和JAN两种深度迁移模型;Ajakan等人通过在损失函数中添加域适应正则化项提出了一种基于对抗的深度迁移学习方法。但是上述方法均未被用与软件缺陷的预测。总的来说,目前的软件缺陷预测方法存在以下几个问题:在软件缺陷预测中,如何发挥深度学习强大的表征能力,从而提升对缺陷预测问题更好的解决;迁移学习对于跨项目缺陷预测十分重要,如何使得迁移学习方法充分利用源项目的有用信息,从而提升对目标项目的缺陷预测性能。
技术实现思路
鉴于上述,本专利技术提出了一种基于深度迁移的软件缺陷预测方法,该方法能够较准确地实现端到端的软件缺陷预测。本专利技术的技术方案为:一种基于深度迁移的软件缺陷预测方法,包括以下步骤:(1)采用可视化方法将源项目和目标项目的源代码文件转化为图像文件,转化时,针对源项目的源代码文件,采用三原色排列组合策略对图像进行扩充,形成训练集;将目标项目的源代码文件转化为图像文件作为测试集;(2)构建深度迁移网络,其中,所述深度迁移网络包含用于提取特征的特征提取单元和用于软件缺陷预测的软件缺陷预测单元,并在特征提取单元采用自注意力机制;(3)根据采用自注意力机制提取的训练样本特征和测试样本特征之间的最大均值差异,和深度迁移网络的预测输出与样本的真值标签自检的交叉熵构建损失函数,并以损失函数收敛为目标,采用训练集和测试集对深度迁移网络进行训练,当满足训练截止条件时,网络参数确定,将获得软件缺陷预测模型;(4)应用时,采用可视化方法将待检测源代码文件转化为图像,并将图像输入至软件缺陷预测模型,经计算,输出待检测源代码文件的缺陷预测结果。与现有技术相比,本专利技术具有的有益效果为:本专利技术采用可视化方法将源代码文件转化为图像文件,并采用三原色排列组合策略实现对图像的扩充,巧妙地实现了对源代码文件的转化,并采用注意力机制集中提取有效特征,提升了数据的准确性,同时引入测试集进行比对训练,进一步提升了软件缺陷预测模型的准确性。利用该软件缺陷预测模型能够准确地实现对软件缺陷的预测。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。图1是实施例提供的基于深度迁移的软件缺陷预测方法的流程图;图2是实施例提供的可视化方法的流程图;图3是深度迁移网络的训练及利用训练好的深度迁移网络进行软件缺陷检测的流程示意图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本专利技术进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不限定本专利技术的保护范围。参见图1,本实施例提供的基于深度迁移的软件缺陷预测方法包括模型建立阶段和应用阶段。模型建立阶段主要是构建深度迁移网络,并构建训练集和测试集,利用训练集和测试集对深度迁移网络进行训练,以获得软件缺陷预测模型。具体过程如下:S101,采用可视化方法将源项目和目标项目的源代码文件转化为图像文件。本实施例中,源项目和目标项目对应的源代码文件均作为样本用于对深度迁移网络的训练,具体地,采用可视化方法将源代码文件转化为图像文件的过程包括:首先,将源代码转化为二进制表达序列,并将二进制表达序列转换为八进制向量,再将八进制向量转化为0~255之间的文件向量file(x0,x1,…,xn),(0≤xi≤255,0≤i≤n),其中,n为索引号,取决于源代码文件的大小;然后,将R、G、B三原色按照不同的排列顺序形成RGB、RBG、GBR、GRB、BGR和BRG六种排列方式,命名为三原色排列组合策略;最后,按照三原色排列组合策略中至少一种排列方式将文件向量转化为预测尺寸的图像。按照三原色排列组合策略中的排列方式将文件向量转化为图像时,是将文件向量file(x0,x1,…,xn)中以三个相邻数字为一组,该组中的三个数字赋值给R、G、B,三个相邻数字构成一个像素点,这样即将源代码文件转化为了图像。举例说明,假设文件向量file=(1,74,85,46,56,32,85,……),按照三原色排列组合策略中的BGR排列方式进行转化,则第一个像素点的B、G、R分别为1,74,85,即第一个像素点为(1,74,85),第二个像素点为(46,56,32)。为了扩充训练样本的数量,本专利技术中,针对源项目的源代码文件,采用三原色排列组合策略中六种排列方式将文件向量转化为预测尺寸的图像,以实现对图像的扩充。这样可以将同一个源代码文件转化为六张不同的彩色图像,达到对原数据集进行扩充。本专利技术选取六种不同的三原色排列组合作为代码文件向量转换为彩色图像时的输入顺序,扩充了训练集,丰富了源项目数据的信息表达。正常应用时和不本文档来自技高网
...

【技术保护点】
1.一种基于深度迁移的软件缺陷预测方法,包括以下步骤:(1)采用可视化方法将源项目和目标项目的源代码文件转化为图像文件,转化时,针对源项目的源代码文件,采用三原色排列组合策略对图像进行扩充,形成训练集;将目标项目的源代码文件转化为图像文件作为测试集;(2)构建深度迁移网络,其中,所述深度迁移网络包含用于提取特征的特征提取单元和用于软件缺陷预测的软件缺陷预测单元,并在特征提取单元采用自注意力机制;(3)根据采用自注意力机制提取的训练样本特征和测试样本特征之间的最大均值差异,和深度迁移网络的预测输出与样本的真值标签自检的交叉熵构建损失函数,并以损失函数收敛为目标,采用训练集和测试集对深度迁移网络进行训练,当满足训练截止条件时,网络参数确定,将获得软件缺陷预测模型;(4)应用时,采用可视化方法将待检测源代码文件转化为图像,并将图像输入至软件缺陷预测模型,经计算,输出待检测源代码文件的缺陷预测结果。

【技术特征摘要】
1.一种基于深度迁移的软件缺陷预测方法,包括以下步骤:(1)采用可视化方法将源项目和目标项目的源代码文件转化为图像文件,转化时,针对源项目的源代码文件,采用三原色排列组合策略对图像进行扩充,形成训练集;将目标项目的源代码文件转化为图像文件作为测试集;(2)构建深度迁移网络,其中,所述深度迁移网络包含用于提取特征的特征提取单元和用于软件缺陷预测的软件缺陷预测单元,并在特征提取单元采用自注意力机制;(3)根据采用自注意力机制提取的训练样本特征和测试样本特征之间的最大均值差异,和深度迁移网络的预测输出与样本的真值标签自检的交叉熵构建损失函数,并以损失函数收敛为目标,采用训练集和测试集对深度迁移网络进行训练,当满足训练截止条件时,网络参数确定,将获得软件缺陷预测模型;(4)应用时,采用可视化方法将待检测源代码文件转化为图像,并将图像输入至软件缺陷预测模型,经计算,输出待检测源代码文件的缺陷预测结果。2.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,采用可视化方法将源代码文件转化为图像文件的过程包括:首先,将源代码转化为二进制表达序列,并将二进制表达序列转换为八进制向量,再将八进制向量转化为0~255之间的文件向量file(x0,x1,…,xn),(0≤xi≤255,0≤i≤n),其中,n为索引号,取决于源代码文件的大小;然后,将R、G、B三原色按照不同的排列顺序形成RGB、RBG、GBR、GRB、BGR和BRG六种排列方式,命名为三原色排列组合策略;最后,按照三原色排列组合策略中至少一种排列方式将文件向量转化为预测尺寸的图像。3.如权利要求2所述的基于深度迁移的软件缺陷预测方法,其特征在于,针对源项目的源代码文件,采用三原色排列组合策略中六种排列方式将文件向量转化为预测尺寸的图像,以实现对图像的扩充。4.如权利要求2所述的基于深度迁移的软件缺陷预测方法,其特征在于,针对目标项目的源代码文件和待检测源代码文件,采用三原色排列组合策略中任意一种排列方式将文件向量转化为预测尺寸的图像。5.如权利要求2~4任一项所述的基于深度迁移的软件缺陷预测方法,其特征在于,预测尺寸设定规则为:其中,生成图像长度取决于根据源代码文件大小。6.如权利要求1所述的基于深度迁移的软件缺陷预测方法,其特征在于,所述深度迁移网络包括:特征提取单元,其包括依次连接...

【专利技术属性】
技术研发人员:陈晋音胡可科刘毅宣琦
申请(专利权)人:浙江工业大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1