首页 / 专利库 / 计算机网络 / 软件缺陷 / 一种跨项目软件缺陷预测方法

一种跨项目软件缺陷预测方法

阅读:418发布:2020-05-18

专利汇可以提供一种跨项目软件缺陷预测方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种跨项目 软件 缺陷 预测方法,涉及 数据处理 技术领域。针对 软件缺陷 预测过程经常受阻、且往往会出现类别分布 不平衡 的问题,采用方案基于TextCNN和Borderline-SMOTE 算法 ,包括训练阶段和预测阶段。在训练阶段,基于Java源文件的已知维度特征、语义信息特征、以及存在的软件缺陷,进行Word2vec模型、TextCNN、逻辑回归分类器的训练,在预测阶段,则直接利用训练好的Word2vec模型、TextCNN、逻辑回归分类器的进行目标Java源文件的预测,并最终预测输出目标Java源文件的软件缺陷数量。本发明的预测方法提高了预测的准确率和提高训练速度,不仅限于对同项目的软件缺陷进行预测,还可以用于跨项目的软件缺陷进行预测。,下面是一种跨项目软件缺陷预测方法专利的具体信息内容。

1.一种跨项目软件缺陷预测方法,其特征在于,其包括训练阶段和预测阶段;
所述训练阶段包括:
Ⅰ)提取Java源文件的原始多维特征,并对每一个Java源文件进行标记;
Ⅱ)将Java源文件解析成抽象语法树,抽取抽象语法树的相关节点形成单词文件;
Ⅲ)训练Word2vec模型,利用Word2vec模型对单词进行向量化,形成词向量;
Ⅳ)已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN;
Ⅴ)组合包含Java源文件语义信息的特征和Java源文件的原始多维特征,形成新特征向量
Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
Ⅶ)不平衡处理后的新特征向量和Java源文件具有的软件缺陷数量作为训练样本,利用训练样本训练逻辑回归分类器;
所述预测阶段包括:
Ⅰ)提取目标Java源文件的原始多维特征,并对每一个目标Java源文件进行标记;
Ⅱ)将目标Java源文件解析成抽象语法树,抽取抽象语法树的相关节点形成单词文件;
Ⅲ)利用Word2vec模型对单词进行向量化,形成词向量;
Ⅳ)利用TextCNN对词向量进行包含语义信息的特征提取;
Ⅴ)组合包含语义信息的特征和目标Java源文件的原始多维特征,形成新特征向量;
Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
Ⅶ)将不平衡处理后的新特征向量输入逻辑回归分类器,逻辑回归分类器输出预测目标Java源文件的软件缺陷数量。
2.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于,借助Ckjm、BugInfo工具提取Java源文件/目标Java源文件的多维特征,并对每一个Java源文件/目标Java源文件进行标记。
3.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于,利用Python中的Javalang工具包将Java源文件/目标Java源文件解析成抽象语法树,随后,抽取抽象语法树中相应的控制节点、函数调用节点、实例创建节点,进而形成一个以空格为分隔符的单词文件。
4.根据权利要求2所述的一种跨项目软件缺陷预测方法,其特征在于,利用gensim中的Word2vec模型对单词进行向量化,形成多维词向量,且多维词向量的维度大于所提取Java源文件的多维特征的维度。
5.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于,已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN,训练过程具体包括:
1)给定一个Java源文件的标记向量,其中标记向量中的每个单词xi∈Rk对应标记向量中的第i个节点的k维词向量;
2)把标记向量中的单词对应的词向量进行连接操作即 表示简
单的连接操作,更一般化的让 获得一个词向量矩阵;
3)假定有一个卷积核Filter w∈Rhk,利用公式A计算产生一个新的特征ci,ci=f(w·xi:i+h-1+b)                 公式A
其中,xi:i+h-1表示通过某个窗口的词,w表示卷积核,b是一个标量值,表示偏置f是个非线性函数;
4)基于卷积神经网络构建TextCNN,卷积神经网络的卷积核Filterw∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1];
5)利用Max-pooling操作,在产生的特征图上进行最大池化操作,分别得到一个对应特hk
征图中最具代表性的特征,该具有代表性的特征通常为卷积核Filter w∈R 所产生的特征图上的最大值
6)把所有最具代表性的特征进行concatenate操作,卷积核的输出层输出concatenate操作后的结果,与已知Java源文件所包含语义信息的特征进行比较,获得损失函数,借助反向传播算法对所构建TextCNN的参数进行迭代更新;
7)选取不同的Java源文件,重复步骤1)-6),多次训练得到TextCNN。
6.根据权利要求5所述的一种跨项目软件缺陷预测方法,其特征在于,在步骤6)中,把所有最具代表性的特征进行concatenate操作后,可以在卷积核的池化层和输出层添加一个Dropout层,Dropout层和Softmax层进行全连接,随后卷积核的输出层再输出结果与已知Java源文件所包含语义信息的特征进行比较。
7.根据权利要求5所述的一种跨项目软件缺陷预测方法,其特征在于,基于卷积神经网络构建TextCNN,卷积神经网络的多个卷积核Filterw∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1] 。
8.根据权利要求5所述的一种跨项目软件缺陷预测方法,其特征在于,所述TextCNN的卷积神经网络基于N种不完全相同的卷积核,并生成N个通道的feature map,每个卷积核的宽度相同,每个卷积核的长度不一定相同。

说明书全文

一种跨项目软件缺陷预测方法

技术领域

[0001] 本发明涉及数据处理技术领域,具体的说是一种跨项目软件缺陷预测方法。

背景技术

[0002] 软件缺陷在工业界和学术界,也被称为软件故障或软件错误等。NASA对软件缺陷的定义是:软件无法完成预期指定的功能。软件缺陷在软件开发过程中不可避免产生,根据微软研究院调查发现,每个应用软件在内部测试的时候平均1000行代码会存在10到20个软件缺陷,在已经发布的软件产品中,每1000行代码会存在0.5个软件缺陷,而为了修复已经发布软件产品中的一个软件缺陷,将花费50到200倍的成本。因此,如何帮助测试人员更快更早地发现软件中的缺陷变得更加重要。
[0003] 软件缺陷预测就是为了帮助测试人员进行缺陷测试,发现源代码文件中潜在的软件缺陷,从而更好分配人、物力进行缺陷修复。软件缺陷预测分为同项目软件缺陷预测和跨项目软件缺陷预测,它们的主要区别就是训练项目与预测项目是否是同一个软件项目。由于跨项目缺陷预测中,源项目和目标项目存在很大的差异性,所以预测性能受到阻碍。
[0004] 另外,在软件缺陷预测中,往往会出现类别分布不平衡问题,即不同类别的样本数量上相差很大。
[0005] 基于NLP技术的快速发展,为了获得更具有泛化能力的包含语义信息的特征,解决软件缺陷预测中出现的类别分布不平衡,提出一种跨项目软件缺陷预测方法。
[0006] TextCNN,即将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似于多窗口大小的ngram),从而能够更好地捕捉局部相关性。
[0007] Borderline-SMOTE算法,其计算速度明显优于SMOTE算法,其先从少数类样本中选择种子样本,然后在种子样本上采用SMOTE算法。

发明内容

[0008] 本发明针对软件缺陷预测过程经常受阻、且往往会出现类别分布不平衡的问题,提供一种跨项目软件缺陷预测方法,其基于TextCNN和Borderline-SMOTE算法,进行软件缺陷数量的预测,预测结果的准确率高。
[0009] 本发明的一种跨项目软件缺陷预测方法,解决上述技术问题采用的技术方案如下:
[0010] 一种跨项目软件缺陷预测方法,其包括训练阶段和预测阶段;
[0011] 训练阶段包括:
[0012] Ⅰ)提取Java源文件的原始多维特征,并对每一个Java源文件进行标记;
[0013] Ⅱ)将Java源文件解析成抽象语法树,抽取抽象语法树的相关节点形成单词文件;
[0014] Ⅲ)训练Word2vec模型,利用Word2vec模型对单词进行向量化,形成词向量;
[0015] Ⅳ)已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN;
[0016] Ⅴ)组合包含Java源文件语义信息的特征和Java源文件的原始多维特征,形成新特征向量
[0017] Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
[0018] Ⅶ)不平衡处理后的新特征向量和Java源文件具有的软件缺陷数量作为训练样本,利用训练样本训练逻辑回归分类器;
[0019] 预测阶段包括:
[0020] Ⅰ)提取目标Java源文件的原始多维特征,并对每一个目标Java源文件进行标记;
[0021] Ⅱ)将目标Java源文件解析成抽象语法树,抽取抽象语法树的相关节点形成单词文件;
[0022] Ⅲ)利用Word2vec模型对单词进行向量化,形成词向量;
[0023] Ⅳ)利用TextCNN对词向量进行包含语义信息的特征提取;
[0024] Ⅴ)组合包含语义信息的特征和目标Java源文件的原始多维特征,形成新特征向量;
[0025] Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
[0026] Ⅶ)将不平衡处理后的新特征向量输入逻辑回归分类器,逻辑回归分类器输出预测目标Java源文件的软件缺陷数量。
[0027] 可选的,本方法的训练阶段或预测阶段,借助Ckjm、BugInfo工具提取Java源文件/目标Java源文件的多维特征,并对每一个Java源文件/目标Java源文件进行标记。
[0028] 可选的,本方法的训练阶段或预测阶段,利用Python中的Javalang工具包将Java源文件/目标Java源文件解析成抽象语法树,随后,抽取抽象语法树中相应的控制节点、函数调用节点、实例创建节点,进而形成一个以空格为分隔符的单词文件。
[0029] 可选的,本方法的训练阶段或预测阶段,利用gensim中的Word2vec模型对单词进行向量化,形成多维词向量,且多维词向量的维度大于所提取Java源文件的多维特征的维度。
[0030] 可选的,已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN,训练过程具体包括:
[0031] 1)给定一个Java源文件的标记向量,其中标记向量中的每个单词xi∈Rk对应标记向量中的第i个节点的k维词向量;
[0032] 2)把标记向量中的单词对应的词向量进行连接操作即 表示简单的连接操作,更一般化的让 获得一个词向量矩阵;
[0033] 3)假定有一个卷积核Filter w∈Rhk,利用公式A计算产生一个新的特征ci,[0034] ci=f(w·xi:i+h-1+b)   公式A
[0035] 其中,xi:i+h-1表示通过某个窗口的词,w表示卷积核,b是一个标量值,表示偏置f是个非线性函数;
[0036] 4)基于卷积神经网络构建TextCNN,卷积神经网络的卷积核Filter w∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1];
[0037] 5)利用Max-pooling操作,在产生的特征图上进行最大池化操作,分别得到一个对应特征图中最具代表性的特征,该具有代表性的特征通常为卷积核Filter w∈Rhk所产生的特征图上的最大值
[0038] 6)把所有最具代表性的特征进行concatenate操作,卷积核的输出层输出concatenate操作后的结果,与已知Java源文件所包含语义信息的特征进行比较,获得损失函数,借助反向传播算法对所构建TextCNN的参数进行迭代更新;
[0039] 7)选取不同的Java源文件,重复步骤1)-6),多次训练得到TextCNN。
[0040] 进一步可选的,在步骤6)中,把所有最具代表性的特征进行concatenate操作后,可以在卷积核的池化层和输出层添加一个Dropout层,Dropout层和Softmax层进行全连接,随后卷积核的输出层再输出结果与已知Java源文件所包含语义信息的特征进行比较。
[0041] 进一步可选的,基于卷积神经网络构建TextCNN,卷积神经网络的多个卷积核Filter w∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1];
[0042] 进一步可选的,TextCNN的卷积神经网络基于N种不完全相同的卷积核,并生成N个通道的feature map,每个卷积核的宽度相同,每个卷积核的长度不一定相同。
[0043] 本发明的一种跨项目软件缺陷预测方法,与现有技术相比具有的有益效果是:
[0044] 1)本发明的预测方法,基于TextCNN和Borderline-SMOTE算法,包括训练阶段和预测阶段,在训练阶段,基于Java源文件的已知维度特征、语义信息特征、以及存在的软件缺陷,进行Word2vec模型、TextCNN、逻辑回归分类器的训练,在预测阶段,则直接利用训练好的Word2vec模型、TextCNN、逻辑回归分类器的进行目标Java源文件的预测,并最终预测输出目标Java源文件的软件缺陷数量,预测结果的准确率高;
[0045] 2)本发明通过TextCNN可以很好的用于从抽象语法树中获得更加泛化的表示信息,通过Borderline-SMOTE算法可以很好的解决样本不平衡问题,从而提高预测的准确率和提高训练速度;
[0046] 3)本发明的预测方法不仅限于对同项目的软件缺陷进行预测,还可以用于跨项目的软件缺陷进行预测。附图说明
[0047] 附图1是本发明实施例一中训练阶段的流程示意图;
[0048] 附图2是本发明实施例一中预测阶段的流程示意图;
[0049] 附图3是本发明中将Java源文件解析成抽象语法树的示意图;
[0050] 附图4是本发明中基于Java源文件的标记向量训练TextCNN的流程图

具体实施方式

[0051] 为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。
[0052] 实施例一:
[0053] 本实施例提出一种跨项目软件缺陷预测方法,其包括训练阶段和预测阶段。
[0054] 结合附图1,训练阶段包括:
[0055] Ⅰ)借助Ckjm、BugInfo工具提取Java源文件,并对每一个Java源文件进行标记;
[0056] Ⅱ)结合附图3,利用Python中的Javalang工具包将Java源文件解析成抽象语法树,抽取抽象语法树中相应的控制节点、函数调用节点、实例创建节点,进而形成一个以空格为分隔符的单词文件;
[0057] Ⅲ)训练gensim中的Word2vec模型,利用Word2vec模型对单词进行向量化,形成多维词向量,且多维词向量的维度大于所提取Java源文件的多维特征的维度;
[0058] Ⅳ)已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN;
[0059] Ⅴ)组合包含Java源文件语义信息的特征和Java源文件的原始多维特征,形成新特征向量;
[0060] Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
[0061] Ⅶ)不平衡处理后的新特征向量和Java源文件具有的软件缺陷数量作为训练样本,利用训练样本训练逻辑回归分类器。
[0062] 结合附图2,预测阶段包括:
[0063] Ⅰ)借助Ckjm、BugInfo工具提取目标Java源文件的多维特征,并对每一个目标Java源文件进行标记;
[0064] Ⅱ)结合附图3,利用Python中的Javalang工具包将目标Java源文件解析成抽象语法树,抽取抽象语法树中相应的控制节点、函数调用节点、实例创建节点,进而形成一个以空格为分隔符的单词文件;
[0065] Ⅲ)利用Word2vec模型对单词进行向量化,形成多维词向量,且多维词向量的维度大于所提取Java源文件的多维特征的维度;
[0066] Ⅳ)利用TextCNN对词向量进行包含语义信息的特征提取;
[0067] Ⅴ)组合包含语义信息的特征和目标Java源文件的原始多维特征,形成新特征向量;
[0068] Ⅵ)利用Borderline-SMOTE算法对组合后的新特征向量进行不平衡处理;
[0069] Ⅶ)将不平衡处理后的新特征向量输入逻辑回归分类器,逻辑回归分类器输出预测目标Java源文件的软件缺陷数量。
[0070] 在本实施例的训练阶段,已知Java源文件包含的语义信息,提取Java源文件所包含语义信息的特征,基于词向量和提取的特征训练TextCNN,结合附图4,训练过程具体包括:
[0071] 1)给定一个Java源文件的标记向量,其中标记向量中的每个单词xi∈Rk对应标记向量中的第i个节点的k维词向量;
[0072] 2)把标记向量中的单词对应的词向量进行连接操作即 表示简单的连接操作,更一般化的让 获得一个词向量矩阵;
[0073] 3)假定有一个卷积核Filter w∈Rhk,利用公式A计算产生一个新的特征ci,[0074] ci=f(w·xi:i+h-1+b)   公式A
[0075] 其中,xi:i+h-1表示通过某个窗口的词,w表示卷积核,b是一个标量值,表示偏置f是个非线性函数;
[0076] 4)基于卷积神经网络构建TextCNN,卷积神经网络的卷积核Filter w∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1];
[0077] 5)利用Max-pooling操作,在产生的特征图上进行最大池化操作,分别得到一个对应特征图中最具代表性的特征,该具有代表性的特征通常为卷积核Filter w∈Rhk所产生的特征图上的最大值
[0078] 6)把所有最具代表性的特征进行concatenate操作;
[0079] 7)在卷积核的池化层和输出层添加一个Dropout层,Dropout层和Softmax层进行全连接,随后卷积核的输出层输出结果,输出结果与已知Java源文件所包含语义信息的特征进行比较,获得损失函数,借助反向传播算法对所构建TextCNN的参数进行迭代更新;
[0080] 8)选取不同的Java源文件,重复步骤1)-7),多次训练得到TextCNN。
[0081] 在本实施例的步骤4)中,基于卷积神经网络构建TextCNN,卷积神经网络基于6种不完全相同的卷积核Filter w∈Rhk在词向量矩阵一步一步下滑,从而产生一个特征图c=[c1,c2,...,cn-h+1]。其中6种不完全相同的卷积核生成6个通道的feature map,每个卷积核的宽度都是50,长度分比为3,3,5,5,7,7。
[0082] 本实施例中,预测一个具体Java源文件的过程为:
[0083] Ⅰ)借助Ckjm、BugInfo工具提取目标Java源文件的20维特征WMC、LOC、IC等,并对每一个目标Java源文件进行标记;
[0084] Ⅱ)利用Python中的Javalang工具包,将目标Java源文件解析成抽象语法树,抽取抽象语法树中相应的控制节点、函数调用节点、实例创建节点,进而形成一个以空格为分隔符的单词文件;
[0085] Ⅲ)利用gensim中的Word2vec模型对单词进行向量化,形成50维的词向量;
[0086] Ⅳ)利用TextCNN对词向量进行包含语义信息的特征提取,得到15维的语义特征;
[0087] Ⅴ)组合15维的语义特征和Java源文件的20维特征,形成一个既包含结构信息又包含语义特征的新特征向量;
[0088] Ⅵ)利用Borderline-SMOTE算法对新特征向量进行不平衡处理;
[0089] Ⅶ)将不平衡处理后的新特征向量输入逻辑回归分类器,逻辑回归分类器输出预测目标Java源文件的软件缺陷数量,当输出预测结果为0时,代表软件无缺陷,当输出预测结果为n时,其中n为自然数,代表软件缺陷有n个。
[0090] 综上可知,采用本发明的一种跨项目软件缺陷预测方法,可以很好的用于从抽象语法树中获得更加泛化的表示信息,还可以很好的解决样本不平衡问题,提高预测的准确率和提高训练速度,解决了现有软件缺陷预测过程经常受阻、且往往会出现类别分布不平衡的问题。
[0091] 上述具体对本发明的原理及实施方式进行了详细阐述,基于上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈