基于代价敏感宽度学习的软件缺陷预测方法及处理装置制造方法及图纸

技术编号:38670035 阅读:10 留言:0更新日期:2023-09-02 22:48
本申请提供了基于代价敏感宽度学习的软件缺陷预测方法及处理装置,属于软件缺陷预测领域,所述方法包括:构建软件缺陷预测数据集,采用代价敏感学习算法将软件缺陷预测数据集划分为有缺陷实例与无缺陷实例,引入脉冲神经网络,对数据集归一化预处理和线性编码,将数据集转化为脉冲序列,通过脉冲神经网络模型获取输出脉冲序列,然后进行反向解码,获取软件缺陷特征的连续输出值,将获取软件缺陷特征的连续输出值输入代价敏感宽度学习软件缺陷预测模型中进行训练,将待预测数据集输入代价敏感宽度学习软件缺陷预测模型,输出预测结果。本申请通过代价敏感宽度学习软件缺陷预测模型提高了软件缺陷预测的精度和可靠性,缩短了训练时间、提高了精度。提高了精度。提高了精度。

【技术实现步骤摘要】
基于代价敏感宽度学习的软件缺陷预测方法及处理装置


[0001]本申请涉软件缺陷预测
,具体说是一种基于代价敏感宽度学习的软件缺陷预测方法及处理装置。

技术介绍

[0002]在软件开发过程中,出现缺陷是无法避免的,软件规模越大,缺陷的数量就越多。面对功能需求的不断增加,动辄上万行代码的大中型程序成为主流,如何自动化寻找这些大规模程序中多个缺陷的缺陷位置,成为人们追求的目标。针对多缺陷定位问题,有研究提出根据测试数据的执行结果将缺陷程序划分为不同部分,随后通过开发人员人工检查代码,手动确定缺陷位置,该方法不仅消耗大量时间,而且需要花费较多的人力。在此基础上,有研究人员提出分解多缺陷定位问题,然后通过单缺陷定位方法来解决问题,但是仍需要技术人员全程交互指导识别缺陷。
[0003]为了提升定位方法的自动化,提高多缺陷定位效率,有研究人员通过借助遗传规划,在无技术人员参与指导情况下,针对Unix工具集中的92个缺陷,自行推导出30个不同的语句怀疑度计算公式,通过理论分析后,发现其中4个具有很好的缺陷定位效果。在此研究的基础上,有研究提出使用遗传算法来进行缺陷程序中多缺陷位置的定位,该算法将多缺陷定位问题转化为遗传算法能够处理的搜索优化问题,不仅实现了方法的自动化,而且提升了缺陷定位速度,提高了缺陷定位精度,整体性能优于之前的多缺陷定位方法,但是仍然存在诸如参数设置繁琐,算法规则复杂等问题。
[0004]软件缺陷预测通过设计一个鲁棒的机器学习模型,可准确判断待预测软件模块中是否存在缺陷程序,进而为合理分配测试资源以及提高软件可靠性提供指导。软件缺陷预测是一个代价敏感学习问题,即将有缺陷程序错判为无缺陷程序造成的代价大于将无缺陷程序错判为有缺陷程序造成的代价。
[0005]有研究指出,缺陷定位效果受缺陷位置以及缺陷类型的影响,已有的许多多缺陷定位方法在面对大型程序中多类型和多数量的缺陷时性能下降严重,无法得出有价值的缺陷定位信息,因此,寻求高效的定位多缺陷的方法成为亟待解决的问题。

技术实现思路

[0006]为了克服目前多缺陷定位方法在面对大型程序中多类型和多数量的缺陷时性能下降严重,无法得出有价值的缺陷定位信息的问题,本申请提供了基于代价敏感宽度学习的软件缺陷预测方法及处理装置,采用了如下的技术方案:
[0007]第一方面,本申请提供了基于代价敏感宽度学习的软件缺陷预测方法,包括:
[0008]步骤S1,构建软件缺陷预测数据集,构建软件缺陷预测数据集的方式为:从现有的软件历史仓库中抽取历史软件模块,从所述历史软件模块中提取程序代码的静态属性,设计出与类似软件缺陷具有强相关性的软件缺陷度量元,实现对软件缺陷预测数据集的构建;
[0009]步骤S2,采用代价敏感学习算法将软件缺陷预测数据集划分为有缺陷实例与无缺陷实例,获取第一数据集;
[0010]步骤S3,引入脉冲神经网络,对所述第一数据集的软件缺陷特征进行归一化预处理,获取第二数据集;
[0011]步骤S4,对所述第二数据集进行线性编码,把所述第二数据集转化为输入脉冲序列;
[0012]步骤S5,将所述输入脉冲序列输入脉冲神经网络模型中,通过脉冲神经元运算模型计算,获取输出脉冲序列;
[0013]步骤S6,对所述输出脉冲序列进行反向解码,获取软件缺陷特征的连续输出值,将所述软件缺陷特征的连续输出值作为第三数据;
[0014]步骤S7,将所述第三数据输入代价敏感宽度学习软件缺陷预测模型中,对所述代价敏感宽度学习软件缺陷预测模型进行训练,获取训练完成的代价敏感宽度学习软件缺陷预测模型;
[0015]步骤S8,将待预测数据集经过步骤S2

S6处理后输入训练完成的代价敏感宽度学习软件缺陷预测模型,输出软件缺陷预测结果。
[0016]进一步地,所述步骤S2中的采用代价敏感学习算法将软件缺陷预测数据集划分为有缺陷实例与无缺陷实例,具体表现为:
[0017]采用代价敏感学习算法对所述软件缺陷预测数据集中的有缺陷实例和无缺陷实例分配不一样的误分类代价,添加代价敏感矩阵,给予软件缺陷预测数据集中无缺陷实例与有缺陷实例不同的误分类惩罚力度,使用“0”和“1”分别指代无缺陷实例与有缺陷实例;
[0018]假设C
ij
表示将第i类实例分类为第j类的分类代价,C
ij
值越大,表明该错误分类所带来的损失越大;错误分类的损失代价大于正确分类的损失代价,由于正确的分类是不会带来损失的,所以C00=C11=0,各个分类代价之间存在着如下的大小关系:C10>C01>C00=C11=0,其中,C00为实际无缺陷、预测无缺陷,C11为实际有缺陷、预测有缺陷,C10为实际有缺陷、预测无缺陷,C01为实际无缺陷、预测有缺陷。
[0019]进一步地,所述步骤S3中的对所述第一数据集进行归一化预处理,采用z

score对所述第一数据集进行归一化预处理。
[0020]进一步地,对所述第一数据集进行归一化预处理是对数据进行标准化处理,消除软件缺陷特征不同特征数据集之间的差异,使得数据易于比较和处理。采用z

score对所述第一数据集进行归一化预处理,使得经过归一化处理后的软件缺陷特征不同特征数据集均值为0,标准差为1。
[0021]进一步地,所述步骤S4中的对所述第二数据集进行线性编码,把所述第二数据集转化为输入脉冲序列,具体表现为:
[0022]通过采用第二数据集中的实数向量映射到二进制脉冲序列的方式将第二数据集中的连续值转化为离散值,以适应脉冲神经网络模型的输入格式。
[0023]进一步地,所述步骤S5将所述输入脉冲序列输入脉冲神经网络模型中,通过脉冲神经元运算模型计算,获取输出脉冲序列,具体表现为:
[0024]脉冲响应神经元模型当中的神经元输入是沿着突触向神经元进行传输的脉冲序列,所有的脉冲在到达神经元之后都会在其内部完成突触后电位的产生,这部分突触后电
位在相应的突触权值影响下的总和就是膜电位值的重要组成部分;
[0025]假设神经元有N个输入突触,第i个突触有G
i
个脉冲输入,这些脉冲输入到达神经元的时间集合记为元的时间集合记为表示突触i的第g个脉冲的发放时间,神经元在时间t的膜电位V(t)可以表示为:
[0026][0027]其中,w
i
是神经元第i个输入突触的权值,t
f
表示第f个脉冲的发放时间,不应期函数ρ表示膜电位的复位过程,脉冲响应函数ε表示脉冲对突触后神经元膜电位的响应,t表示任意一个假定时间。
[0028]进一步地,所述步骤S7中的将所述第三数据集输入代价敏感宽度学习软件缺陷预测模型中,对所述代价敏感宽度学习软件缺陷预测模型进行训练,具体表现为:
[0029]给定一个训练集{X,Y},以及M
i
个特征节点;特征映射层中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于代价敏感宽度学习的软件缺陷预测方法,其特征在于,包括:步骤S1,构建软件缺陷预测数据集,构建软件缺陷预测数据集的方式为:从现有的软件历史仓库中抽取历史软件模块,从所述历史软件模块中提取程序代码的静态属性,设计出与类似软件缺陷具有强相关性的软件缺陷度量元,实现对软件缺陷预测数据集的构建;步骤S2,采用代价敏感学习算法将软件缺陷预测数据集划分为有缺陷实例与无缺陷实例,获取第一数据集;步骤S3,引入脉冲神经网络,对所述第一数据集的软件缺陷特征进行归一化预处理,获取第二数据集;步骤S4,对所述第二数据集进行线性编码,把所述第二数据集转化为输入脉冲序列;步骤S5,将所述输入脉冲序列输入脉冲神经网络模型中,通过脉冲神经元运算模型计算,获取输出脉冲序列;步骤S6,对所述输出脉冲序列进行反向解码,获取软件缺陷特征的连续输出值,将所述软件缺陷特征的连续输出值作为第三数据;步骤S7,将所述第三数据输入代价敏感宽度学习软件缺陷预测模型中,对所述代价敏感宽度学习软件缺陷预测模型进行训练,获取训练完成的代价敏感宽度学习软件缺陷预测模型;步骤S8,将待预测数据集经过步骤S2

S6处理后输入训练完成的代价敏感宽度学习软件缺陷预测模型,输出软件缺陷预测结果。2.根据权利要求1的基于代价敏感宽度学习的软件缺陷预测方法,其特征在于,所述步骤S2中的采用代价敏感学习算法将软件缺陷预测数据集划分为有缺陷实例与无缺陷实例,具体表现为:采用代价敏感学习算法对所述软件缺陷预测数据集中的有缺陷实例和无缺陷实例分配不一样的误分类代价,添加代价敏感矩阵,给予软件缺陷预测数据集中无缺陷实例与有缺陷实例不同的误分类惩罚力度,使用“0”和“1”分别指代无缺陷实例与有缺陷实例;假设C
ij
表示将第i类实例分类为第j类的分类代价,C
ij
值越大,表明该错误分类所带来的损失越大;错误分类的损失代价大于正确分类的损失代价,由于正确的分类是不会带来损失的,所以C00=C11=0,各个分类代价之间存在着如下的大小关系:C10>C01>C00=C11=0,其中,C00为实际无缺陷、预测无缺陷,C11为实际有缺陷、预测有缺陷,C10为实际有缺陷、预测无缺陷,C01为实际无缺陷、预测有缺陷。3.根据权利要求2的基于代价敏感宽度学习的软件缺陷预测方法,其特征在于,所述步骤S3中的对所述第一数据集进行归一化预处理,采用z

score对所述第一数据集进行归一化预处理。4.根据权利要求1的基于代价敏感宽度学习的软件缺陷预测方法,其特征在于,所述步骤S5将所述输入脉冲序列输入脉冲神经网络模型中,通过脉冲神经元运算模型计算,获取输出脉冲序列,具体表现为:脉冲响应神经元模型当中的神经元输入是沿着突触向神经元进行传输的脉冲序列,所有的脉冲在到达神经元之后都会在其内部完成突触后电位的产生,这部分突触后电位在相应的突触权值影响下的总和就是膜电位值的重要组成部分;假设神经元有N个输入突触,第i个突触有G
i
个脉冲输入,这些脉冲输入到达神经元的时
间集合记为间集合记为表示突触i的第g个脉冲的发放时间,神经元在时间t的膜电位V(t)可以表示为:其中,w
i
是神经元第i个输入突触的权值,t
f
表示第f个脉冲的发放时间,不应期函数ρ表示膜电位的复位过程,脉冲响应函数ε表示脉冲对突触后神经元膜电位的响应,t表示任意一个假定时间。5.根据权利要求1的基于代价敏感宽度学习的软件缺陷预测方法,其特征在于,所述步骤S7中的将所述第三数据输入代价敏感宽度学习软件缺陷预测模型中,对所述代价敏感宽度学习软件缺陷预测模型进行训练,具体表现为:给定一个训练集{X,Y},以及M
i
个特征节点;特征映射层中第i个特征节点Z
i
可以表示为:Z
i
=φ
i
...

【专利技术属性】
技术研发人员:曹鹤玲王兆龙贾俊亮廖天力楚永贺李磊赵晨阳刘广恩王峰王盼盼张硕李庆宇王兴亚
申请(专利权)人:河南金明源信息技术有限公司
类型:发明
国别省市:

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

1