基于开源社区知识的软件缺陷预测装置及方法制造方法及图纸

技术编号:26375855 阅读:21 留言:0更新日期:2020-11-19 23:44
一种基于开源社区知识的软件缺陷预测装置及方法,其装置包括开源社区知识采集模块、数据预处理模块、代码度量模块、缺陷预测模块、向量化模块、缺陷类型判别模块、结果输出模块。本发明专利技术的步骤包括:1、采集开源软件信息,2、生成缺陷预测数据集,3、构建BP神经网络,4、训练BP神经网络,5、构建LSTM神经网络,6、训练LSTM神经网络,7、软件缺陷预测。本发明专利技术分别构建并利用开源社区代码训练BP神经网络以及LSTM神经网络,先通过训练好的BP神经网络进行软件缺陷预测,若预测为有缺陷,再通过训练好的LSTM神经网络进一步进行软件缺陷类型预测,提高了代码缺陷预测结果的准确性。

【技术实现步骤摘要】
基于开源社区知识的软件缺陷预测装置及方法
本专利技术属于软件工程
,更进一步涉及智能化软件研发和人工智能、数据挖掘等
中的一种基于开源社区知识的软件缺陷预测装置及方法。本专利技术用于提高软件开发的质量,通过对开源社区中的海量代码知识的分析、运用,实现对代码特征的准确度量,提升代码缺陷预测结果的准确性。
技术介绍
现有软件缺陷预测主要指通过度量元对代码模块进行分析,再以此为基础建立缺陷预测模型以预测代码模块是否含有缺陷并指导缺陷分类。因此要想准确地预测代码模块是否具有缺陷,需建立一个精准的软件缺陷预测模型,然而由于软件缺陷预测模型输入的各种度量数据的计算方法不同,取值范围和含义也各不相同,会导致质量评价方法产生偏向性,这些因素都会严重影响软件缺陷预测模型的准确性。并且当前软件缺陷预测主要集中在判断代码模块是否存在缺陷的二分类问题,这一分类结果不能满足如今对软件缺陷修复工作的需要。中国电子产品可靠性与环境试验研究所在其申请的专利文献“软件缺陷预测方法及装置”(公开号:106919505A,申请号:201710090097.3,申本文档来自技高网...

【技术保护点】
1.一种基于开源社区知识的软件缺陷预测装置,包括开源软件信息采集模块、预处理模块、代码块提取模块、特征度量模块、缺陷预测模块、缺陷类型判别模块、结果输出模块,其中:/n所述的开源软件信息采集模块,用于采集至少500条开源社区的开源软件信息,每条开源软件信息包括软件源代码、修复描述和项目基础信息;/n所述的预处理模块,用于根据采集到的每个软件源代码对应的同一条开源软件信息中的修复描述和项目基础信息确定该软件源代码是否存在缺陷;并分别将存在缺陷的源代码标注为有缺陷,不存在缺陷的源代码标注为无缺陷;将标注映射为数值,若标注为有缺陷,则映射为1,若标注为无缺陷,则映射为-1;/n所述的代码块提取模块,...

【技术特征摘要】
1.一种基于开源社区知识的软件缺陷预测装置,包括开源软件信息采集模块、预处理模块、代码块提取模块、特征度量模块、缺陷预测模块、缺陷类型判别模块、结果输出模块,其中:
所述的开源软件信息采集模块,用于采集至少500条开源社区的开源软件信息,每条开源软件信息包括软件源代码、修复描述和项目基础信息;
所述的预处理模块,用于根据采集到的每个软件源代码对应的同一条开源软件信息中的修复描述和项目基础信息确定该软件源代码是否存在缺陷;并分别将存在缺陷的源代码标注为有缺陷,不存在缺陷的源代码标注为无缺陷;将标注映射为数值,若标注为有缺陷,则映射为1,若标注为无缺陷,则映射为-1;
所述的代码块提取模块,用于利用缺陷代码块提取方法,从每个标注为有缺陷的源代码中提取一个缺陷代码块;利用有效代码块提取方法,从每个标注为无缺陷的源代码中提取一个有效代码块;
所述的特征度量模块,用于利用CK度量元,分别对每个缺陷代码块、每个有效代码块的特征进行度量,将每个度量后的代码块及度量后的特征组成一个训练样本,将所有训练样本组成缺陷预测数据集;
所述的缺陷预测模块,用于搭建一个包含输入层、隐藏层以及输出层的BP神经网络;将BP神经网络输入层的神经元设置为6个,隐藏层的个数设置为3,隐藏层神经元设置为10个,每个神经元的激活函数设置为sigmoid(x);将缺陷预测数据集中的每个训练样本依次输入到BP神经网络中,采用误差进行反向传播的多层前馈型训练算法,对BP神经网络进行迭代训练,直至损失函数Cost(target,out)收敛为止,得到训练好的BP神经网络;判断每个训练样本的输出值,如果输出值大于0,则预测训练样本中的代码块存在缺陷,若小于0,则预测训练样本中的代码块不存在缺陷,将所有被预测有缺陷的代码块组成缺陷判别数据集;
所述的缺陷类型判别模块,用于搭建一个包含输入层、隐藏层、Pooling层以及Softmax层的LSTM神经网络;设置LSTM神经网络输入层的神经元设置为6个,隐藏层的神经元设置为5个,设置隐藏层后连接MeanPooling层和Softmax层,将隐藏层激活函数设置为tanh(x);对缺陷判别数据集中每个代码块中的每行代码进行向量化,得到对应的代码行向量,将所有代码行向量输入到LSTM神经网络中,采用误差进行反向传播的多层前馈型的训练算法,对LSTM神经网络进行迭代训练,直至损失函数收敛为止,得到训练好的LSTM神经网络;将所有代码行向量经LSTM神经网络输出的类别分布概率向量,按照概率值从大到小进行排序,将排序后向量中前三个概率值分别对应的缺陷类别组成缺陷类别预测列表;
所述的结果输出模块,用于输出待预测代码块是否具有缺陷,若具有缺陷,则进一步输出缺陷类别。


2.根据权利要求1所述预测装置的一种基于开源社区知识的软件缺陷预测方法,其特征在于,分别构建并利用开源社区代码训练BP神经网络以及LSTM神经网络,先通过训练好的BP神经网络进行软件缺陷预测,若预测为有缺陷,再通过训练好的LSTM神经网络进一步进行软件缺陷类型预测,该方法具体包括以下步骤:
(1)采集开源软件信息:
开源软件信息采集模块采集至少500条开源社区的开源软件信息,每条开源软件信息包括软件源代码、修复描述和项目基础信息;
(2)生成缺陷预测数据集:
(2a)预处理模块根据采集到的每个软件源代码对应的同一条开源软件信息中的修复描述和项目基础信息确定该软件源代码是否存在缺陷;并分别将存在缺陷的源代码标注为有缺陷,不存在缺陷的源代码标注为无缺陷;将标注映射为数值,若标注为有缺陷,则映射为1,若标注为无缺陷,则映射为-1;
(2b)代码块提取模块利用缺陷代码块提取方法,从每个标注为有缺陷的源代码中提取一个缺陷代码块;
(2c)代码块提取模块利用有效代码块提取方法,从每个标注为无缺陷的源代码中提取一个有效代码块;
(2d)特征度量模块利用CK度量元,分别对每个缺陷代码块、每个有效代码块的特征进行度量,将每个度量后的代码块及度量后的特征组成一个训练样本,将所有训练样本组成缺陷预测数据集;
(3)构建BP神经网络:
(3a)缺陷预测模块搭建一个包含输入层、隐藏层以及输出层的BP神经网络;
(3b)将BP神经网络输入层的神经元设置为6个,隐藏层的...

【专利技术属性】
技术研发人员:王璐李青山罗文龙曹壮吕文琪李昊张河
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

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

1