CN117056226A - 基于迁移学习的跨项目软件缺陷数量预测方法 - Google Patents
基于迁移学习的跨项目软件缺陷数量预测方法 Download PDFInfo
- Publication number
- CN117056226A CN117056226A CN202311043463.1A CN202311043463A CN117056226A CN 117056226 A CN117056226 A CN 117056226A CN 202311043463 A CN202311043463 A CN 202311043463A CN 117056226 A CN117056226 A CN 117056226A
- Authority
- CN
- China
- Prior art keywords
- project
- features
- cross
- defects
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007547 defect Effects 0.000 title claims abstract description 110
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013526 transfer learning Methods 0.000 title claims abstract description 31
- 239000013598 vector Substances 0.000 claims abstract description 54
- 238000003062 neural network model Methods 0.000 claims abstract description 27
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims abstract description 14
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 238000013508 migration Methods 0.000 claims description 16
- 230000005012 migration Effects 0.000 claims description 16
- 238000011156 evaluation Methods 0.000 claims description 15
- 238000012549 training Methods 0.000 claims description 15
- 238000012417 linear regression Methods 0.000 claims description 8
- 238000009826 distribution Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 7
- 238000012216 screening Methods 0.000 claims description 5
- 238000000513 principal component analysis Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims 1
- 238000013135 deep learning Methods 0.000 abstract description 5
- 230000018109 developmental process Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000002474 experimental method Methods 0.000 description 7
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000007637 random forest analysis Methods 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/096—Transfer learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了基于迁移学习的跨项目软件缺陷数量预测方法,包括步骤:S1、源代码解析和向量映射:通过对Java项目源码进行转换,得到由抽象语法树转化的数字向量;S2、神经网络模型构建与特征提取:将数字向量输入到神经网络模型中,并引入迁移学习算法来提取不同项目间可迁移的语义特征;S3、构造缺陷数量预测模型;S4、使用目标项目对跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量。本发明结合迁移学习和深度学习方法来进行跨项目缺陷数量预测,通过使用神经网络模型来提取语义特征,然后使用迁移学习方法匹配项目间相似度高的特征,并和度量元特征进行联合,提高了模型在跨项目缺陷数量预测方面的性能。
Description
技术领域
本发明属于软件缺陷数量预测领域,特别涉及基于迁移学习的跨项目软件缺陷数量预测方法。
背景技术
随着信息技术的飞速发展,人们的日常生活离不开各种应用软件。但由于软件的功能多样化,程序开发的复杂性随之增加,导致软件中存在的缺陷越来越多。而这些缺陷严重影响了软件质量的可靠性,并且会带来不可估量的经济损失,因此,及时的发现软件中存在的缺陷,并合理的分配资源去修复潜在的缺陷,能帮助提升软件的可靠性。
为了确保软件的质量,需要提前检测出软件中存在的缺陷。因此,可以建立一个软件缺陷数量预测模型,为测试人员提供辅助决策。在软件开发过程中这是一项必不可少的步骤,它能帮助开发团队在软件开发的早期阶段及时发现和纠正缺陷,以减少软件发布后可能出现的问题和维护成本。在软件缺陷数量预测领域,按照数据的特征分布,可以将其分为项目内缺陷数量预测,跨项目缺陷数量预测和跨公司缺陷数量预测。在此主要讨论跨项目软件缺陷数量预测的相关内容,它是指在拥有大量数据集的项目上进行训练,然后使用迁移学习方法来应用到训练样本不足的软件项目中。
目前,深度学习在各个领域都表现出了显著的效果,因此考虑将深度学习的网络模型应用到跨项目软件缺陷数量预测方法中,用来提升缺陷数量预测模型的性能。本发明中主要使用深度学习模型来提取程序中与缺陷数量相关的语义特征,然后使用迁移学习对不同项目间的特征进行匹配。目前的研究中存在着以下问题仍需解决:
1.在基于迁移学习的跨项目缺陷数量预测方法的研究中,大多数选择的神经网络都不适用于处理与软件缺陷相关的特征。例如卷积神经网络,这主要用来处理图像数据,不适合处理文本信息,无法保证提取特征的有效性。
2.在基于迁移学习的跨项目缺陷数量预测方法的研究中,很少有人在跨项目缺陷数量的研究中同时考虑语义特征和度量元特征。导致模型没办法充分学习与缺陷数量相关的特征,构建出来的模型在进行数量预测时性能不够优异。
发明内容
针对上述现有技术存在的问题,本发明的目的在于提供了一种基于迁移学习的跨项目软件缺陷数量预测方法,该方法能够准确预测软件项目中每个模块存在的缺陷数量。本发明方法结合深度学习与迁移学习的优点,解决了传统机器学习无法有效提取语义特征的问题,并且联合语义特征和度量元特征来提升跨项目缺陷数量预测模型的准确性。本发明方法能为软件测试人员提供理论指导,在软件开发的早期阶段及时发现潜在的缺陷并分配资源进行修复。
为了实现上述目的,本发明采用了如下技术方案:
本发明的第一方面提供了一种基于迁移学习的跨项目软件缺陷数量预测方法,包括以下步骤:
S1、源代码解析和向量映射:通过对PROMISE储存库中的项目源代码进行解析,将源项目转化成抽象语法树(AST)的形式,然后将抽象语法树的节点转化为令牌流向量,再通过构造字典将令牌流向量映射为整数(数字)向量;
S2、神经网络模型构建与特征提取:构建神经网络模型,然后将得到的整数(数字)向量输入到构建的神经网络模型中,并引入迁移学习算法对不同项目间可迁移的语义特征进行提取,再将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征;
S3、构造缺陷数量预测模型:将联合特征和缺陷数量标签输入到线性回归模型中进行训练,构建跨项目缺陷数量预测模型,预测软件项目中每个模块存在的缺陷数量;
S4、模型评估:使用目标项目对构建的跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量,并使用回归模型的评价指标比较不同模型的性能。
优选地,步骤S1中,所述对PROMISE储存库的项目源代码进行解析,将源项目转换成抽象语法树形式,具体步骤为:使用Java的解析方法将PROMISE储存库的项目源代码转化成抽象语法树形式,然后按照抽象语法树结构对抽象语法树(AST)的节点进行遍历,将AST的节点转化为令牌流向量;其中,所述抽象语法树的节点由每个模块当中的方法名称、变量名称等组成。
优选地,步骤S1中,所述通过构造字典将令牌流向量映射为整数(数字)向量,具体步骤为:按照令牌流向量的节点内容,构造一个字典,其中,所述字典的作用是将节点和数字作为键值对进行对应,通过构造的字典将令牌流向量转化为对应的整数(数字)向量,作为神经网络模型的输入。
优选地,步骤S2中,所述将得到的数字向量输入到构建的神经网络模型中,对不同项目间可迁移的语义特征进行提取,具体步骤为:将得到的整数(数字)向量输入到可迁移的双向长短期记忆(TBiLSTM)神经网络模型中,首先通过嵌入层,将整数(数字)向量映射到同一维度,然后经过双向长短期记忆(BiLSTM)单元层,通过门控单元筛选与缺陷数量相关的语义特征,最后经过匹配层,使用迁移学习算法将跨项目间可迁移的特征进行匹配,迁移不同项目间相似度高的特征。
优选地,所述门控单元包括输入门、遗忘门和输出门三种,用于负责对输入的信息进行筛选,保留与缺陷数量相关的特征。
优选地,所述使用迁移学习算法将跨项目间可迁移的特征进行匹配,具体步骤为:使用迁移学习中的最大均值差异来度量跨项目间可迁移的特征之间的相似度,使用迁移学习中的最大均值差异来度量跨项目特征之间的相似度,通过网络模型的迭代训练,减小不同项目间特征分布的差异,以此来匹配项目间可迁移的特征。
优选地,所述将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征,具体步骤为:使用迁移主成分分析(TCA)对度量元特征进行迁移,并使用concatenate函数对可迁移的语义特征和度量元特征进行联合,构造可迁移的联合特征。
优选地,步骤S4中,所述使用目标项目对构建的跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量,使用回归模型的评价指标来比较不同模型的性能,具体步骤为:使用目标项目对构建的预测模型进行评估,将预测的结果和真实结果进行对比,计算预测值和真实值间的平均绝对误差(MAE)和均方误差(MSE),使用回归模型的评估指标来评价不同模型间的性能。
本发明具备如下有益效果:
本发明结合迁移学习和深度学习方法来进行跨项目缺陷数量预测,通过使用神经网络模型来提取语义特征,然后使用迁移学习方法匹配项目间相似度高的特征,并和度量元特征进行联合,提高了模型在跨项目缺陷数量预测方面的性能。其中,将可迁移的双向LSTM网络模型应用到跨项目缺陷数量预测领域,即在BiLSTM网络模型的基础上引入了迁移学习算法,用于提取不同项目间可迁移的语义特征;然后将语义特征和度量元特征进行联合,进一步提升了模型在跨项目缺陷数量预测时的性能;并使用真实的开源软件作为目标项目,对模型进行评估,通过确定每个模块中含有的缺陷数量,给软件测试人员提供指导,按照缺陷数量来决定处理的先后顺序,帮助合理分配测试资源,大幅度提高软件开发效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为基于迁移学习的跨项目软件缺陷数量预测方法的流程示意图;
图2为基于迁移学习的跨项目软件缺陷数量预测方法的流程框架图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。
实施例1
参照图1和图2,一种基于迁移学习的跨项目软件缺陷数量预测方法,包括以下步骤:
S1、源代码解析和向量映射:通过对收集的PROMISE储存库中的项目源代码进行解析,将源项目转化成抽象语法树的形式,然后将抽象语法树的节点转化为令牌流向量,再通过构造字典将令牌流向量映射为整数向量;
源代码解析是指对程序的源代码进行分析和理解的过程。源代码解析可以通过词法分析,语法分析,语义分析等方法来实现。向量映射是指将一个向量空间映射到另一个向量空间的过程。向量映射常用于将高维的特征向量映射到低维的表示空间,或者将不同的向量表示映射到同一表示空间中。
具体地,对收集的PROMISE储存库的项目源代码进行解析,将源项目转换成抽象语法树形式,具体步骤为:使用Java的解析方法,具体使用名为JavaLang的开源代码库将PROMISE储存库的项目源代码转化成抽象语法树形式,然后按照抽象语法树结构对抽象语法树(AST)的节点进行遍历,将AST的节点(抽象语法树的节点由每个模块当中的方法名称、变量名称等组成)转化为令牌流向量。此时的令牌流向量是由代码中的方法名称组成,由于网络模型要求输入是数字向量形式,所以要通过构造字典将令牌向量映射为整数(数字)向量,具体地,按照令牌流向量的节点内容,构造一个字典,所述字典的作用是将节点和数字作为键值对进行对应,通过构造的字典将令牌流向量转化为对应的整数(数字)向量,作为神经网络模型的输入。
S2、神经网络模型构建与特征提取:构建神经网络模型,然后将得到的整数(数字)向量输入到构建的神经网络模型中,并引入迁移学习算法对不同项目间可迁移的语义特征进行提取,再将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征;
具体地,构建可迁移的双向长短期记忆(TBiLSTM)神经网络模型,然后将得到的整数(数字)向量输入到构建的可迁移的双向长短期记忆(TBiLSTM)神经网络模型中,但在输入可迁移的双向长短期记忆(TBiLSTM)神经网络模型之前,先采用集成学习方法对类不平衡问题进行预处理,本发明采用集成学习方法中的Bagging对类不平衡问题进行预处理,通过训练多个分类器取平均值,用以提高分类的准确率。具体地,通过imblearn.ensemble中导入Bagging分类器,使得数据集中的正负样本达到平衡。
集成学习模型的建立过程如下:首先选择用于划分的特征,然后确定划分的阈值;超过该阈值的为一组,未超过的划为另一组,而划分过程中使用的指标是信息增益和基尼系数。
信息增益衡量的是划分前后信息不确定性程度的减小,计算公式如下:
H(Y)=-∑pilog pi
其中,i表示样本的标签;p表示该样本出现的概率;样本划分后,可以得到样本的信息熵,计算公式如下:
H(Y|X)=-∑x∈Xp(X=x)H(Y|X=x)
其中,x表示当前所划分的特征取值;信息增益定义为信息熵与条件熵的差值,其公式如下:
IG=H(Y)-H(Y|X)
信息增益越大,说明该特征划分数据所获得的信息量变化越大,子节点的样本纯度越高。
本发明这里选择BiLSTM网络模型来提取源代码的(关键)语义特征。通过在BiLSTM网络模型中加入迁移学习方法,构造TBiLSTM模型,使得模型能够提取出不同项目之间可迁移的语义特征。
具体地,将得到的整数(数字)向量输入到可迁移的双向长短期记忆(TBiLSTM)神经网络模型中,对不同项目间可迁移的语义特征进行提取:首先通过嵌入层,在该嵌入层中将整数(数字)向量映射到同一维度;然后经过双向长短期记忆(BiLSTM)单元层,在BiLSTM单元层中对输入的特征向量进行分析,并通过门控单元筛选提取出与缺陷数量相关的语义特征,其中,门控单元包括输入门、遗忘门和输出门三种,用于负责对输入的信息进行筛选,保留与缺陷数量相关的特征;最后经过匹配层,在该匹配层中使用迁移学习算法将跨项目间可迁移的特征进行匹配,通过使用迁移学习中的最大均值差异来度量跨项目特征之间的相似度,通过网络模型的迭代训练,减小不同项目间特征分布的差异,以此来匹配项目间可迁移的特征,迁移不同项目之间相似度高的特征。具体地,将不同项目的特征映射到再生核希尔伯特空间中,度量源项目和目标项目之间不同特征分布曲线间的最大均值差异(MMD),对网络进行迭代训练,不断缩小最大均值差异(MMD)距离,达到迁移不同项目间相似度高的特征的效果。
本发明这里选择迁移学习当中最常用的最大均值差异(MMD)来度量源项目和目标项目间不同特征的距离,其主要用来度量两个不同但相关的分布的距离,具体来说,首先将不同特征映射到再生核希尔伯特空间中,然后在该空间中使用MMD来计算特征分布曲线之间的距离,通过网络模型的不断迭代训练,最小化不同特征间的距离,对于相似的特征进行迁移。
MMD的计算公式如下:
其中,σ(·)表示映射,用于把原变量映射到再生核希尔伯特空间(RKHS)中;X={x1,x2,Λxi}为源项目软件的实体数据集;为目标项目软件的实体数据集;H代表核空间,在该空间中内积可以转换成核函数,此时MMD就可以直接通过核函数进行计算。
另外,本发明中通过设置bidirectional为True,将单向LSTM变成双向LSTM。另外,还需要使用线性层把数据维度进行转换,保证模型在训练时的数据维度一致。
本发明中选择sigmoid作为激活函数,该函数将输入变换为(0,1)上的输出,具体公式表示如下:
在训练模型时,设置批量大小(batch size)为32,迭代次数(epoch)为15,学习率为1e-5。另外,本发明选择随机梯度下降和Adam优化器对模型进行调优。
S3、构造缺陷数量预测模型:将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征,然后将构造的可迁移联合特征和缺陷数量输入线性回归模型中进行训练,构建跨项目缺陷数量预测模型;
具体地,将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征,具体步骤为:使用迁移主成分分析(TCA)对度量元特征进行迁移,并使用concatenate函数对可迁移的语义特征和度量元特征进行联合,构造可迁移的联合特征。
不同于缺陷预测中的二分类问题,即预测模块有无缺陷。缺陷数量预测是在缺陷预测的基础上进行更加深入的研究,旨在预测出每个模块中具体含有的缺陷数量。本质上是一个回归问题,因此在训练时选择回归模型,并以数据集中的缺陷数量作为标签进行训练。将TCA提取出的可迁移度量元特征和TBiLSTM提取的可迁移语义特征进行联合,输入到训练器中构建模型。另外,本发明选择线性回归模型作为训练器,并将其与支持向量机回归和随机森林回归模型作对比,通过实验结果发现线性回归相比于其他模型在部分项目上预测更准确。
S4、模型评估:使用目标项目对构建的跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量,并使用回归模型的评价指标比较不同模型的性能。
具体地,使用目标项目对构建的跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量,使用回归模型的评价指标来比较不同模型的性能,具体步骤为:使用目标项目对构建的预测模型进行评估,将预测的结果和真实结果进行对比,计算预测值和真实值间的平均绝对误差(MAE)和均方误差(MSE),使用回归模型的评估指标来评价不同模型间的性能。
本实施例中,所使用的神经网络模型均是基于Pytorch框架进行编写,并且实验的硬件环境如下:处理器,为AMD Ryzen R7-5800HCPU@3.20GHz,内存为16G RAM,操作系统为Microsoft Windows 10专业版,开发环境为Pytorch。本实施例使用的数据集是PROMISE储存库中公开的Java项目的源码以及度量元特征构成的软件缺陷数据集,该数据集包含多个由Java语言编写的真实软件项目,并且已经标注好每个模块当中存在的缺陷数量,可以作为模型的训练标签。另外,本发明使用源项目作为训练集,然后选择目标项目进行测试,来验证模型的有效性。
在实施过程中,使用目标项目来对训练后的模型进行评估,并选择回归模型中常用的评价指标平均绝对误差(MAE)和均方误差(MSE)来对提出的模型进行评估,判断其在跨项目缺陷数量预测时的性能。MAE和MSE的计算公式如下:
其中,ypred为模型预测的缺陷数量值;ytrue为模块中真实存在的缺陷数量;并且MAE和MSE越小,证明该模型在进行跨项目软件缺陷数量预测的结果越准确。
对比试验例
本发明采用对比实验来验证所提出方法在跨项目缺陷数量预测时具有更好的性能。具体地,采用传统的机器学习方法和常用的神经网络模型分别进行实验,然后对比上述模型的实验结果。这里主要选取了不同的模型(逻辑回归算法(LR),近邻过滤算法(NNFilter),迁移主成分分析(TCA),扩展的TCA(TCA+)以及神经网络模型中的深度信念网(DBN),卷积神经网络(CNN),可迁移的卷积神经网络(TCNN))和本发明所提出的TBiLSTM进行比较。
同样,我们联合语义特征和度量元特征,训练的模型称为“DP+神经网络模型名称”。
在PROMISE库中的多个Java软件项目(分别是:Camel-1.6,Forrest-0.8,Ivy-2.0,Lucene-2.4,Poi-3.0,Synapse-1.2,Velocity-1.6.1以及Xerces-1.4.4)进行实验,软件项目的详细信息例如模块数、缺陷率(有缺陷的模块占总模块数的比例)以及模块中最大的缺陷数如下表1所示。
表1.PROMISE储存库中开源项目的缺陷信息
项目名称及版本号 | 模块数量 | 缺陷率 | 最大缺陷数 |
Camel-1.6 | 965 | 19.48% | 28 |
Forrest-0.8 | 32 | 6.3% | 4 |
Ivy-2.0 | 352 | 11.36% | 3 |
Lucene-2.4 | 340 | 59.7% | 30 |
Poi-3.0 | 442 | 63.57% | 19 |
Synapse-1.2 | 256 | 33.59% | 9 |
Velocity-1.6.1 | 229 | 34.34% | 12 |
Xerces-1.4.4 | 588 | 72.95% | 62 |
对以上数据集进行预处理,按照前述的流程进行实验,得到的结果如下表2所示。
表2不同模型在跨项目缺陷数量预测时的MAE值
表2显示了不同模型在进行跨项目缺陷数量预测时的MAE对比结果,从表2可以看出在进行CPDNP时,所提出的模型在大部分的项目上具有最小的MAE值。在Java的多个真实软件项目中,所提出的模型在大部分项目上都比其他模型取得了更优异的结果。例如模型在Forrest-0.8项目上具有最小的MAE值,TBiLSTM和DPTBiLSTM的值分别为0.132和0.114。这一结果意味着TBiLSTM模型在CPDNP时预测的缺陷数量与真实数量之间的误差很小,结果接近真实值。
另外,由于单使用一个评价指标来评价模型的优劣往往是不够充分的。因此,我们还选用了均方误差(MSE)作为MAE的补充,通过多方面评价指标来验证所提出模型在CPDNP的优势。各个模型的MSE值如表3所示。
表3不同模型在跨项目缺陷数量预测时的MSE值
由表3中的MSE值,发现所提出的模型在大部分软件项目上具有最小的MSE;证明所提出的模型在进行数量预测时的结果和真实缺陷数量最接近,这和前者得出的结论一致。两者都证明了TBiLSTM模型适用于跨项目缺陷数量预测领域。
另外,本发明还验证了为何选择线性回归作为缺陷数量的预测模型。通过选择线性回归、随机森林回归和支持向量机回归这三种模型进行对比实验,并在Java的多个开源项目上进行实验,MAE和MSE的实验结果如下表4、表5所示:
表4三种回归模型在进行跨项目缺陷数量预测时的MAE值
表5三种回归模型在进行跨项目缺陷数量预测时的MSE值
通过表4、5可见,不同回归算法对模型的预测结果有一定的影响。在不同的项目上,不同回归模型的表现不尽相同。通过实验结果发现在大部分情况下,线性回归模型取得了较好的预测结果。
需要在此说明,术语“度量元特征”指的是通过静态代码分析工具计算出来的属性值。本文中选取了20个度量元属性,包括加权方法数(wmc),继承树深度(dit),子节点数(noc),对象类间耦合度(cbo),类相应(rfc),内聚缺乏度(lcom),传入耦合(ca),传出耦合(ce),公开方法数(npm),改进的内聚缺乏度(lcom3),代码行数(loc),数据访问度量(dam),聚合度量(moa),功能抽象度量(mfa),方法间的内聚度(cam),继承耦合(ic),方法间耦合(cbm),平均方法复杂度(amc),最大环形复杂度(max_cc),平均环形复杂度(avg_cc)等属性。
相比于现有的机器学习算法和神经网络模型,本发明所提出的TBiLSTM方法在缺陷数量预测时能产生更好的性能。并且在部分项目上进行数量预测时,将可迁移语义特征和度量元特征结合能有效提升预测效果。这种改进将更有效地帮助软件质量保证团队找到容易出现缺陷的模块或文件,并指出具体的缺陷数量,从而使团队能够更有效地分配资源,及时的解决软件中存在的隐患。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发,不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。
Claims (9)
1.基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,包括以下步骤:
S1、源代码解析和向量映射:通过对PROMISE储存库中的项目源代码进行解析,将源项目转化成抽象语法树的形式,然后将抽象语法树的节点转化为令牌流向量,再通过构造字典将令牌流向量映射为整数向量;
S2、神经网络模型构建与特征提取:构建神经网络模型,然后将得到的整数向量输入到构建的神经网络模型中,并引入迁移学习算法对不同项目间可迁移的语义特征进行提取,再将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征;
S3、构造缺陷数量预测模型:将联合特征和缺陷数量标签输入到线性回归模型中进行训练,构建跨项目缺陷数量预测模型,预测软件项目中每个模块存在的缺陷数量;
S4、模型评估:使用目标项目对构建的跨项目缺陷数量预测模型进行评估,判断每个模块中存在的缺陷数量,并使用回归模型的评价指标比较不同模型的性能。
2.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,步骤S1中,所述对PROMISE储存库的项目源代码进行解析,将源项目转换成抽象语法树形式,具体步骤为:使用Java的解析方法将PROMISE储存库的项目源代码转化成抽象语法树形式,然后按照抽象语法树结构对抽象语法树的节点进行遍历,将抽象语法树的节点转化为令牌流向量。
3.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,步骤S1中,所述通过构造字典将令牌流向量映射为整数向量,具体步骤为:按照令牌流向量的节点内容,构造一个字典,通过构造的字典将令牌流向量转化为对应的整数向量。
4.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,步骤S2中,所述将得到的数字向量输入到构建的神经网络模型中,对不同项目间可迁移的语义特征进行提取,具体步骤为:将得到的整数向量输入到可迁移的双向长短期记忆神经网络模型中,首先通过嵌入层,将整数向量映射到同一维度,然后经过双向长短期记忆单元层,通过门控单元筛选提取出与缺陷数量相关的语义特征,最后经过匹配层,使用迁移学习算法将跨项目间可迁移的特征进行匹配,迁移不同项目之间相似度高的特征。
5.根据权利要求4所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,所述门控单元包括输入门、遗忘门和输出门三种,用于负责对输入的信息进行筛选,保留与缺陷数量相关的特征。
6.根据权利要求4所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,所述使用迁移学习算法将跨项目间可迁移的特征进行匹配,具体步骤为:使用迁移学习中的最大均值差异来度量跨项目特征之间的相似度,通过网络模型的迭代训练,减小不同项目间特征分布的差异,以此来匹配项目间可迁移的特征。
7.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,步骤S2中,所述将可迁移的度量元特征和语义特征进行联合,构造可迁移的联合特征,具体步骤为:使用迁移主成分分析对度量元特征进行迁移,并使用concatenate函数对可迁移的语义特征和度量元特征进行联合,构造可迁移的联合特征。
8.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,步骤S4中,所述使用目标项目对构建的跨项目缺陷数量预测模型进行评估,使用回归模型的评价指标来比较不同模型的性能,具体步骤为:使用目标项目对构建的跨项目缺陷数量预测模型进行评估,将预测的结果和真实结果进行对比,计算预测值和真实值间的平均绝对误差和均方误差,使用回归模型的评估指标来评价不同模型间的性能。
9.根据权利要求1所述的基于迁移学习的跨项目软件缺陷数量预测方法,其特征在于,所述抽象语法树的节点包括每个模块当中的方法名称、变量名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311043463.1A CN117056226A (zh) | 2023-08-18 | 2023-08-18 | 基于迁移学习的跨项目软件缺陷数量预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311043463.1A CN117056226A (zh) | 2023-08-18 | 2023-08-18 | 基于迁移学习的跨项目软件缺陷数量预测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117056226A true CN117056226A (zh) | 2023-11-14 |
Family
ID=88665868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311043463.1A Pending CN117056226A (zh) | 2023-08-18 | 2023-08-18 | 基于迁移学习的跨项目软件缺陷数量预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117056226A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421244A (zh) * | 2023-11-17 | 2024-01-19 | 北京邮电大学 | 多源跨项目软件缺陷预测方法、装置及存储介质 |
-
2023
- 2023-08-18 CN CN202311043463.1A patent/CN117056226A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421244A (zh) * | 2023-11-17 | 2024-01-19 | 北京邮电大学 | 多源跨项目软件缺陷预测方法、装置及存储介质 |
CN117421244B (zh) * | 2023-11-17 | 2024-05-24 | 北京邮电大学 | 多源跨项目软件缺陷预测方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
CN112541180B (zh) | 一种基于语法特征和语义特征的软件安全漏洞检测方法 | |
CN110597735A (zh) | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 | |
CN112560432A (zh) | 基于图注意力网络的文本情感分析方法 | |
CN114816997B (zh) | 一种基于图神经网络与双向gru特征抽取的缺陷预测方法 | |
CN109857457B (zh) | 一种在双曲空间中学习源代码中的函数层次嵌入表示方法 | |
CN113312447A (zh) | 基于概率标签估计的半监督日志异常检测方法 | |
CN110442523B (zh) | 一种跨项目软件缺陷预测方法 | |
CN113961241A (zh) | 一种基于gat图神经网络模型的代码克隆检测方法 | |
CN113591971B (zh) | 基于dpi时间序列词嵌入向量的用户个性行为预测方法 | |
CN117056226A (zh) | 基于迁移学习的跨项目软件缺陷数量预测方法 | |
Kumar et al. | Software fault proneness prediction using genetic based machine learning techniques | |
CN109376797B (zh) | 一种基于二进制编码器和多哈希表的网络流量分类方法 | |
CN113420868A (zh) | 一种基于深度强化学习的旅行商问题求解方法及求解系统 | |
Mittal et al. | A COMPARATIVE STUDY OF ASSOCIATION RULE MINING TECHNIQUES AND PREDICTIVE MINING APPROACHES FOR ASSOCIATION CLASSIFICATION. | |
CN117131449A (zh) | 面向数据治理的具有传播学习能力的异常识别方法及系统 | |
CN115269870A (zh) | 一种基于知识图谱实现数据中台数据链路故障分类预警的方法 | |
CN116010619A (zh) | 一种复杂装备知识图谱构建过程中的知识抽取方法 | |
CN113920379B (zh) | 一种基于知识辅助的零样本图像分类方法 | |
CN114564410A (zh) | 基于类级别源代码相似度的软件缺陷预测方法 | |
KR20080097753A (ko) | 다중 클래스 svm을 이용한 영역 기반 이미지 검색 방법 | |
CN117453764A (zh) | 一种数据挖掘分析方法 | |
CN111339258A (zh) | 基于知识图谱的大学计算机基础习题推荐方法 | |
CN116663010A (zh) | 一种基于gpt模型的智能合约漏洞检测系统构建方法 | |
CN115982037A (zh) | 一种基于抽象语法树的软件缺陷预测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |