CN111506504A - 基于软件开发过程度量的软件安全性缺陷预测方法及装置 - Google Patents
基于软件开发过程度量的软件安全性缺陷预测方法及装置 Download PDFInfo
- Publication number
- CN111506504A CN111506504A CN202010286267.7A CN202010286267A CN111506504A CN 111506504 A CN111506504 A CN 111506504A CN 202010286267 A CN202010286267 A CN 202010286267A CN 111506504 A CN111506504 A CN 111506504A
- Authority
- CN
- China
- Prior art keywords
- file
- development process
- software
- graph
- modification
- 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.)
- Granted
Links
Images
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/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- 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/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于软件开发过程度量的软件安全性缺陷预测方法及装置。本发明通过构造文件开发者图和项目代码修改图,表达了软件开发过程中开发者活动和代码修改的信息;同时使用图神经网络训练嵌入模型对图结构分别进行嵌入操作,获取其对应的特征向量作为度量元,保留了图结构中的大量信息;将获得的文件开发者度量元和文件修改度量元这两种度量元作为特征,利用缺陷数据库中的数据进行数据标注,训练分类模型,获得最终的预测模型,利用该模型进行安全性缺陷预测,在文件粒度上给出预测结果,且预测准确度高。
Description
技术领域
本发明属于软件安全领域,特别是一种基于软件开发过程度量的软件安全性缺陷预测方法及装置。
背景技术
随着计算机技术的不断发展,软件的质量问题逐渐受到人们的重视。软件安全缺陷危害性很高,攻击者可以利用它破坏软件的机密性,损害软件的完整性,违反软件的可用性约束,从而造成严重的经济损失。当今信息安全是社会的焦点,因此提前发现软件系统中的潜在安全缺陷非常重要。目前的软件安全缺陷预测技术工作主要是从软件历史仓库中提取度量元作为特征,利用机器学习的方法进行预测。然而其中过程度量元的获取方式仅是单纯的计量代码的修改行数作为度量,这不可避免的遗漏了开发过程的大量信息,影响了度量元的可靠性。
目前,已有一些工作用来预测软件的安全性缺陷。现有软件度量元的方法中有产品度量元和过程度量元。论文《Automatic feature learning for predictingvulnerable software components》中通过计算软件的复杂度度量获得软件的产品度量元,计算自行设计的威胁度量元并对这两种度量元的大小进行排序处理,获得受威胁度排名进行安全性缺陷的预测,但其结果仅仅能作为安全专家进行代码审查与测试的参考,不够准确。论文《Evaluating Complexity,Code Churn,and Developer Activity Metricsas Indicators of Software Vulnerabilities》中对产品度量元中的复杂度度量和过程度量元中的开发人员度量和代码变更度量对缺陷预测的作用进行了验证,但其方法中仅仅是计算了代码的变更行数,没有包括开发过程中开发提交的时间对产生缺陷的影响。论文《Automatic feature learning for predicting vulnerable software components》中的方法使用了软件的代码变更行数和软件开发过程中代码提交的时间,利用这两种信息计算香农信息熵获得项目的变化熵和文件的变化熵并以其为特征训练线性回归模型进行缺陷预测,但其方法中没有考虑开发人员对于软件缺陷的影响。还有Hoa Khanh Dam等人的方法利用自然语言处理的方法处理代码,用长短期记忆网络(LSTM)计算代码的抽象语法树(AST)获得语义特征,用该特征训练分类器进行分类,但其方法忽略了开发过程的影响,LSTM也丢失了AST中的拓扑信息。
发明内容
本发明的目的在于针对上述现有技术存在的问题,提供一种基于过程度量元的软件安全缺陷预测方法,从软件开发者活动、文件代码修改两方面提取特征作为度量元,并提取软件开发过程相关信息以用于分类预测模型的训练。
实现本发明目的的技术解决方案为:基于软件开发过程度量的软件安全性缺陷预测方法,所述方法包括以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合所述软件安全性缺陷预测模型进行软件安全性缺陷预测。
进一步地,步骤1中所述代码提交记录的信息包括:提交的开发者名称、增加和减少的代码行数以及提交的时间信息;
所述安全缺陷信息包括:存在该安全缺陷的软件项目名称和文件名称,以及该安全缺陷报告发布的时间。
进一步地,步骤2中所述文件开发者图包括“文件”和“开发者”两种节点标签,“编辑”和“合作”两种边;所述开发者与其编辑过的文件之间通过“编辑”边连接,在同一个文件上编辑过的开发者之间通过“合作”边连接。
进一步地,步骤2中所述项目代码修改图包括项目代码修改总图和项目代码修改子图;
所述项目代码修改总图,以每个所述文件每次修改所添加和删除的代码行数作为节点标签;针对同一文件,节点标签之间有向连接,该“有向”的方向按修改时间先后顺序确定,由先修改的节点标签指向后修改的节点标签,且节点标签之间存在权重,权重值为两个节点标签之间的时间间隔;
每个所述文件对应一个项目代码修改子图,该图的生成方式为:从所述项目代码修改总图中去除该文件的信息。
进一步地,所述每次修改所添加和删除的代码行数可替换为每次代码修改的等级,所述代码修改的等级定义为:记修改的代码行数为l,l<n1表示代码修改为第一等级,n1≤l<n2表示代码修改为第二等级......,依此类推。
进一步地,步骤3所述根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量,具体包括:
对所述文件开发者图的所有节点进行嵌入向量化训练,获得各个文件的开发者特征向量,作为文件的开发者度量;
选取不同的时间段,并截取该时间段内的项目代码修改总图和各文件对应的项目代码修改子图;之后对这些图进行嵌入向量化训练,获得项目代码修改总图的嵌入向量和各个项目代码修改子图的嵌入向量;将项目代码修改总图的嵌入向量减去各文件对应的项目代码修改子图的嵌入向量,获得各个文件的文件修改特征向量,作为文件的修改度量。
进一步地,所述嵌入向量化训练均采用GGNN算法。
进一步地,步骤4所述基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型,具体包括:
步骤4-1,根据安全缺陷数据集对每个文件对应的开发过程度量元进行标记,标记开发过程度量元是否存在安全缺陷;
步骤4-2,将标注后的所有开发过程度量元划分为训练数据集和测试数据集;
步骤4-3,利用所述训练数据集分别对n种分类器进行训练,获得n种软件安全性缺陷预测模型;
步骤4-4,利用所述测试数据集对训练好的n种软件安全性缺陷预测模型进行测试,选取测试结果最优的模型作为最终的软件安全性缺陷预测模型。
进一步地,步骤4-3中所述n种分类器包括随机森林分类器、朴素贝叶斯分类器、决策树分类器和逻辑回归分类器。
基于软件开发过程度量的软件安全性缺陷预测装置,包括:
存储器,用于存储程序;
处理器,用于运行所述程序;
其中,所述程序在所述处理器中运行时,用于执行以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合所述软件安全性缺陷预测模型进行软件安全性缺陷预测。
本发明与现有技术相比,其显著优点包括:1)过程度量元表示:本发明避免了许多源代码变更度量元单纯计算代码改变行数而未考虑项目整体的开发进度的影响造成的不准确,同时通过图嵌入向量化避免了开发人员度量元计算时对图内信息的不完全提取,有效保留了图内的拓扑特征。①本发明同时利用了过程度量元中的开发人员度量元和代码修改度量元,在文件粒度上提取度量特征。通过同时采用两方面的过程度量,较好的保留了开发过程的信息,提高了获得的度量元的质量,从而提高安全性缺陷预测的准确性;②通过构造两种图结构表征开发过程中的信息,便于提取开发度量。图本身包含的信息较为丰富,提取的信息也更加完整。通过组合已有的开发人员合作和贡献图,保证了开发人员活动对文件影响的信息的丰富完整,通过原创代码修改过程图,将时间段内整个项目的修改特征与单个文件的修改特征结合,体现了单个文件在总体中对修改特征的贡献。时间边的权值也保留了时间段内代码修改的频率信息,利用时间的维度更好的表达了代码开发修改的过程,保证了提取出的特征的丰富准确。2)使用了图神经网络:利用图神经网络,可以有效提取非结构数据——图的特征信息,避免了图内拓扑依赖信息的丢失,降低了数据处理的难度。目前图神经网络研究进展较大,相较于传统的神经网络,对常见的图结构处理效果更好。使用图神经网络进行图嵌入(graph embedding)向量化操作,将图信息转换为向量,克服了传统单纯利用图的数学特征提取信息的低效不完整等问题,能保留下图内的拓扑依赖特征,从而提高提取的特征质量。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为一个实施例中基于软件开发过程度量的软件安全性缺陷预测方法的流程图。
图2为一个实施例中构造的文件开发者图。
图3为一个实施例中构造的项目代码修改总图。
图4为一个实施例中构造的项目代码修改子图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,结合图1,提供了一种基于软件开发过程度量的软件安全性缺陷预测方法,该方法包括以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
这里,从软件项目托管平台中采集代码提交记录的信息;从安全缺陷数据库中采集安全缺陷信息。
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合软件安全性缺陷预测模型进行软件安全性缺陷预测。
进一步地,在其中一个实施例中,上述步骤1中代码提交记录的信息包括:提交的开发者名称、增加和减少的代码行数以及提交的时间信息;
安全缺陷信息包括:存在该安全缺陷的软件项目名称和文件名称,以及该安全缺陷报告发布的时间。
进一步地,在其中一个实施例中,上述步骤2中文件开发者图包括“文件”和“开发者”两种节点标签,“编辑”和“合作”两种边;开发者与其编辑过的文件之间通过“编辑”边连接,在同一个文件上编辑过的开发者之间通过“合作”边连接。
进一步地,在其中一个实施例中,上述步骤2中项目代码修改图包括项目代码修改总图和项目代码修改子图;
项目代码修改总图,以每个文件每次修改所添加和删除的代码行数作为节点标签;针对同一文件,节点标签之间有向连接,该“有向”的方向按修改时间先后顺序确定,由先修改的节点标签指向后修改的节点标签,且节点标签之间存在权重,权重值为两个节点标签之间的时间间隔;
每个文件对应一个项目代码修改子图,该图的生成方式为:从项目代码修改总图中去除该文件的信息。
进一步地,在其中一个实施例中,上述每次修改所添加和删除的代码行数可替换为每次代码修改的等级,该代码修改的等级定义为:记修改的代码行数为l,l<n1表示代码修改为第一等级,n1≤l<n2表示代码修改为第二等级......,依此类推。
这里,等级也可以称为类别。
进一步地,在其中一个实施例中,上述步骤3根据文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量,具体包括:
对文件开发者图的所有节点进行嵌入向量化训练,获得各个文件的开发者特征向量,作为文件的开发者度量;
选取不同的时间段,并截取该时间段内的项目代码修改总图和各文件对应的项目代码修改子图;之后对这些图进行嵌入向量化训练,获得项目代码修改总图的嵌入向量和各个项目代码修改子图的嵌入向量;将项目代码修改总图的嵌入向量减去各文件对应的项目代码修改子图的嵌入向量,获得各个文件的文件修改特征向量,作为文件的修改度量。
进一步地,在其中一个实施例中,上述进行嵌入向量化训练均采用GGNN算法。
进一步地,在其中一个实施例中,上述步骤4基于安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型,具体包括:
步骤4-1,根据安全缺陷数据集对每个文件对应的开发过程度量元进行标记,标记开发过程度量元是否存在安全缺陷;
步骤4-2,将标注后的所有开发过程度量元划分为训练数据集和测试数据集;
步骤4-3,利用训练数据集分别对n种分类器进行训练,获得n种软件安全性缺陷预测模型;
步骤4-4,利用测试数据集对训练好的n种软件安全性缺陷预测模型进行测试,选取测试结果最优的模型作为最终的软件安全性缺陷预测模型。
进一步地,在其中一个实施例中,上述步骤4-3中n种分类器包括随机森林分类器、朴素贝叶斯分类器、决策树分类器和逻辑回归分类器。
作为一种具体示例,对本发明软件开发过程度量的软件安全性缺陷预测方法进行进一步说明,包括以下内容:
1、开发过程的数据准备。
收集软件项目托管平台中的数据,提取代码提交记录的信息,包括提交的开发者名称、增加和减少的代码行数以及提交的时间信息,构建软件开发过程数据集,结构如下表1所示。
表1软件开发过程数据集
提交时间 | 提交用户 | 修改总行数 |
Time(yyyy-mm-dd) | Username | Int |
收集安全缺陷数据库中的数据,提取存在该安全缺陷的软件项目名称和文件名称,以及该安全缺陷报告发布的时间,构建安全缺陷数据集,结构如下表2所示。
表2安全缺陷数据集
缺陷发布时间 | 项目名称 | 缺陷文件名称 |
Time(yyyy-mm-dd) | Name(char) | char |
2、数据图构建。
根据软件开发过程数据集构造文件开发者图,如图2所示。该图包括“文件”和“开发者”两种节点标签,“编辑”和“合作”两种边;开发者与其编辑过的文件之间通过“编辑”边连接,在同一个文件上编辑过的开发者之间通过“合作”边连接。具体标注标签如下表3所示。
表3标注标签表
根据软件开发过程数据集构造项目代码修改图,包括项目代码修改总图和项目代码修改子图。
其中,结合图3,项目代码修改总图以每个文件每次修改所添加和删除的代码行数作为节点标签;针对同一文件,节点标签之间有向连接,该“有向”的方向按修改时间先后顺序确定,由先修改的节点标签指向后修改的节点标签,且节点标签之间存在权重,权重值为两个节点标签之间的时间间隔。
每个文件对应一个项目代码修改子图,该图的生成方式为:从项目代码修改总图中去除该文件的信息,如图4所示为在图3的基础上获得的文件FileC对应的项目代码修改子图。
3、获取开发过程度量元。
利用GGNN算法对文件开发者图的所有顶点进行嵌入向量化训练,获得各个文件的开发者特征向量,作为文件的开发者度量;
选取不同的时间段,并截取该时间段内的项目代码修改总图和各文件对应的项目代码修改子图;之后利用GGNN算法对这些图进行嵌入向量化训练,获得项目代码修改总图的嵌入向量和各个项目代码修改子图的嵌入向量;将项目代码修改总图的嵌入向量减去各文件对应的项目代码修改子图的嵌入向量,获得各个文件的文件修改特征向量,作为文件的修改度量。
4、建立软件缺陷预测模型。
基于安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型,具体包括:
4-1,根据安全缺陷数据集对每个文件对应的开发过程度量元进行标记,标记开发过程度量元是否存在安全缺陷;
4-2,将标注后的所有开发过程度量元划分为训练数据集和测试数据集;
4-3,利用训练数据集分别对随机森林分类器、朴素贝叶斯分类器、决策树分类器和逻辑回归分类器4种分类器进行训练,获得4种软件安全性缺陷预测模型;
4-4,利用测试数据集对训练好的4种软件安全性缺陷预测模型进行测试,选取测试结果最优的模型作为最终的软件安全性缺陷预测模型。
5、提取待检测软件的文件开发者度量和该软件缺陷报告时间之前的时间段内的文件修改度量作为软件安全性缺陷预测模型的输入,输出为文件是否存在安全缺陷。输入输出如下所示:
模型输入:Xn为第n个文件的度量元:
[X1 X2 X3 … Xn]
模型输出:Yn为第n个文件的预测结果:
[Y1 Y2 Y3 … Yn]
在一个实施例中,提供了一种基于软件开发过程度量的软件安全性缺陷预测装置,包括:
存储器,用于存储程序;
处理器,用于运行所述程序;
其中,所述程序在所述处理器中运行时,用于执行以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合软件安全性缺陷预测模型进行软件安全性缺陷预测。
这里,关于每一步的具体限定可以参见上文中对于基于软件开发过程度量的软件安全性缺陷预测方法的限定,在此不再赘述。
在一个实施例中,还提供了一种存储介质,在所述存储介质上存储了程序指令,在说书程序指令被计算机或处理器运行时使得所述计算机或处理器执行本发明实施例的基于软件开发过程度量的软件安全性缺陷预测方法的相应步骤。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器、可擦除可编程只读存储器、便携式紧致盘只读存储器、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
本发明针对软件安全缺陷预测这一专业领域,提出了建立文件开发者图和项目代码修改图以及利用图神经网络提取图中信息的完整方法,改善了缺陷预测中过程度量元的提取方式。软件开发过程可以参照本发明提出的方法进行分析,得到形式统一的过程度量元作为特征,在文件粒度上给出预测结果。同时在此技术基础上可以继续研究软件安全缺陷的自动分类,乃至安全缺陷的自动修复和推荐,为研发更多的软件安全缺陷修复技术拓宽视野,从而减少安全缺陷给社会带来的巨大损失。
上述的对实施例的描述是为便于该技术领域的普通技术人员能理解和使用发明专利。熟悉本领域技术的人员显然可以容易地对这些实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明专利不限于上述实施例,本领域技术人员根据本发明专利的揭示,不脱离本发明专利范畴所做出的改进和修改都应该在本发明专利的保护范围之内。
Claims (10)
1.基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,所述方法包括以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合所述软件安全性缺陷预测模型进行软件安全性缺陷预测。
2.根据权利要求1所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤1中所述代码提交记录的信息包括:提交的开发者名称、增加和减少的代码行数以及提交的时间信息;
所述安全缺陷信息包括:存在该安全缺陷的软件项目名称和文件名称,以及该安全缺陷报告发布的时间。
3.根据权利要求1或2所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤2中所述文件开发者图包括“文件”和“开发者”两种节点标签,“编辑”和“合作”两种边;所述开发者与其编辑过的文件之间通过“编辑”边连接,在同一个文件上编辑过的开发者之间通过“合作”边连接。
4.根据权利要求1或2所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤2中所述项目代码修改图包括项目代码修改总图和项目代码修改子图;
所述项目代码修改总图,以每个所述文件每次修改所添加和删除的代码行数作为节点标签;针对同一文件,节点标签之间有向连接,该“有向”的方向按修改时间先后顺序确定,由先修改的节点标签指向后修改的节点标签,且节点标签之间存在权重,权重值为两个节点标签之间的时间间隔;
每个所述文件对应一个项目代码修改子图,该图的生成方式为:从所述项目代码修改总图中去除该文件的信息。
5.根据权利要求4所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,所述每次修改所添加和删除的代码行数可替换为每次代码修改的等级,所述代码修改的等级定义为:记修改的代码行数为l,l<n1表示代码修改为第一等级,n1≤l<n2表示代码修改为第二等级......,依此类推。
6.根据权利要求4所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤3所述根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量,具体包括:
对所述文件开发者图的所有节点进行嵌入向量化训练,获得各个文件的开发者特征向量,作为文件的开发者度量;
选取不同的时间段,并截取该时间段内的项目代码修改总图和各文件对应的项目代码修改子图;之后对这些图进行嵌入向量化训练,获得项目代码修改总图的嵌入向量和各个项目代码修改子图的嵌入向量;将项目代码修改总图的嵌入向量减去各文件对应的项目代码修改子图的嵌入向量,获得各个文件的文件修改特征向量,作为文件的修改度量。
7.根据权利要求6所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,所述嵌入向量化训练均采用GGNN算法。
8.根据权利要求6所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤4所述基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型,具体包括:
步骤4-1,根据安全缺陷数据集对每个文件对应的开发过程度量元进行标记,标记开发过程度量元是否存在安全缺陷;
步骤4-2,将标注后的所有开发过程度量元划分为训练数据集和测试数据集;
步骤4-3,利用所述训练数据集分别对n种分类器进行训练,获得n种软件安全性缺陷预测模型;
步骤4-4,利用所述测试数据集对训练好的n种软件安全性缺陷预测模型进行测试,选取测试结果最优的模型作为最终的软件安全性缺陷预测模型。
9.根据权利要求8所述的基于软件开发过程度量的软件安全性缺陷预测方法,其特征在于,步骤4-3中所述n种分类器包括随机森林分类器、朴素贝叶斯分类器、决策树分类器和逻辑回归分类器。
10.基于软件开发过程度量的软件安全性缺陷预测装置,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述程序;
其中,所述程序在所述处理器中运行时,用于执行以下步骤:
步骤1,采集代码提交记录的信息,构建软件开发过程数据集;采集安全缺陷信息,构建安全缺陷数据集;
步骤2,根据软件开发过程数据集构造文件开发者图、项目代码修改图;
步骤3,根据所述文件开发者图、项目代码修改图获取开发过程度量元,包括文件的开发者度量和文件的修改度量;
步骤4,基于所述安全缺陷数据集和开发过程度量元构建软件安全性缺陷预测模型;
步骤5,针对待检测软件,按照步骤1至步骤3的过程提取开发过程度量元,之后结合所述软件安全性缺陷预测模型进行软件安全性缺陷预测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010286267.7A CN111506504B (zh) | 2020-04-13 | 2020-04-13 | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010286267.7A CN111506504B (zh) | 2020-04-13 | 2020-04-13 | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506504A true CN111506504A (zh) | 2020-08-07 |
CN111506504B CN111506504B (zh) | 2023-04-07 |
Family
ID=71875979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010286267.7A Active CN111506504B (zh) | 2020-04-13 | 2020-04-13 | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506504B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035345A (zh) * | 2020-08-20 | 2020-12-04 | 国家电网有限公司信息通信分公司 | 一种基于代码片段分析的混合深度缺陷预测方法 |
CN112115045A (zh) * | 2020-08-19 | 2020-12-22 | 北京航空航天大学 | 一种复杂软件系统失效预测方法 |
CN112148595A (zh) * | 2020-09-03 | 2020-12-29 | 北京科技大学 | 一种去除重复变更的软件变更级缺陷预测方法 |
CN112288079A (zh) * | 2020-11-17 | 2021-01-29 | 北京轩宇信息技术有限公司 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
CN112579463A (zh) * | 2020-12-25 | 2021-03-30 | 北京信息科技大学 | 面向Solidity智能合约的缺陷预测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140033176A1 (en) * | 2012-07-26 | 2014-01-30 | Infosys Limited | Methods for predicting one or more defects in a computer program and devices thereof |
CN109656808A (zh) * | 2018-11-07 | 2019-04-19 | 江苏工程职业技术学院 | 一种基于混合式主动学习策略的软件缺陷预测方法 |
CN110597735A (zh) * | 2019-09-25 | 2019-12-20 | 北京航空航天大学 | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 |
CN110825615A (zh) * | 2019-09-23 | 2020-02-21 | 中国科学院信息工程研究所 | 基于网络嵌入的软件缺陷预测方法及系统 |
US20200097388A1 (en) * | 2018-09-26 | 2020-03-26 | Accenture Global Solutions Limited | Learning based metrics prediction for software development |
-
2020
- 2020-04-13 CN CN202010286267.7A patent/CN111506504B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140033176A1 (en) * | 2012-07-26 | 2014-01-30 | Infosys Limited | Methods for predicting one or more defects in a computer program and devices thereof |
US20200097388A1 (en) * | 2018-09-26 | 2020-03-26 | Accenture Global Solutions Limited | Learning based metrics prediction for software development |
CN109656808A (zh) * | 2018-11-07 | 2019-04-19 | 江苏工程职业技术学院 | 一种基于混合式主动学习策略的软件缺陷预测方法 |
CN110825615A (zh) * | 2019-09-23 | 2020-02-21 | 中国科学院信息工程研究所 | 基于网络嵌入的软件缺陷预测方法及系统 |
CN110597735A (zh) * | 2019-09-25 | 2019-12-20 | 北京航空航天大学 | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 |
Non-Patent Citations (1)
Title |
---|
孙小兵;周澄;杨辉;李斌;: "面向软件安全性缺陷的开发者推荐方法" * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115045A (zh) * | 2020-08-19 | 2020-12-22 | 北京航空航天大学 | 一种复杂软件系统失效预测方法 |
CN112115045B (zh) * | 2020-08-19 | 2022-03-18 | 北京航空航天大学 | 一种复杂软件系统失效预测方法 |
CN112035345A (zh) * | 2020-08-20 | 2020-12-04 | 国家电网有限公司信息通信分公司 | 一种基于代码片段分析的混合深度缺陷预测方法 |
CN112148595A (zh) * | 2020-09-03 | 2020-12-29 | 北京科技大学 | 一种去除重复变更的软件变更级缺陷预测方法 |
CN112288079A (zh) * | 2020-11-17 | 2021-01-29 | 北京轩宇信息技术有限公司 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
CN112288079B (zh) * | 2020-11-17 | 2024-05-14 | 北京轩宇信息技术有限公司 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
CN112579463A (zh) * | 2020-12-25 | 2021-03-30 | 北京信息科技大学 | 面向Solidity智能合约的缺陷预测方法 |
CN112579463B (zh) * | 2020-12-25 | 2024-05-24 | 大卜科技(北京)有限公司 | 面向Solidity智能合约的缺陷预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111506504B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506504B (zh) | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 | |
CN111881983B (zh) | 基于分类模型的数据处理方法、装置、电子设备及介质 | |
CN110009430B (zh) | 作弊用户检测方法、电子设备及计算机可读存储介质 | |
CN110610193A (zh) | 标注数据的处理方法及装置 | |
CN107368521B (zh) | 一种基于大数据和深度学习的知识推介方法及系统 | |
CN112232833A (zh) | 流失会员客群数据预测方法、模型训练方法及装置 | |
CN116881430B (zh) | 一种产业链识别方法、装置、电子设备及可读存储介质 | |
CN113238908B (zh) | 一种服务器性能测试数据分析方法及相关装置 | |
CN116703328B (zh) | 一种项目评审方法及系统 | |
CN116049376B (zh) | 一种信创知识检索回复的方法、装置和系统 | |
CN115292167A (zh) | 生命周期预测模型构建方法、装置、设备及可读存储介质 | |
Shimada et al. | Goal Model Construction Based on User Review Classification. | |
CN109189833B (zh) | 一种知识库的挖掘方法及装置 | |
CN113850314A (zh) | 客户价值等级预测模型建立方法、装置、介质及设备 | |
CN111291376B (zh) | 一种基于众包和机器学习的web漏洞验证方法 | |
CN112182218A (zh) | 文本数据的分类方法及装置 | |
CN115080732A (zh) | 投诉工单处理方法、装置、电子设备和存储介质 | |
CN111240652A (zh) | 数据处理方法及装置、计算机存储介质、电子设备 | |
Natukunda et al. | Unsupervised title and abstract screening for systematic review: a topic modelling approach | |
CN113704103B (zh) | 测试用例推荐方法、装置、介质及电子设备 | |
CN117852553B (zh) | 基于聊天记录提取元器件交易场景信息的语言处理系统 | |
Chaudhari et al. | Text document learning using distributed incremental clustering algorithm: educational certificates | |
CN112685324B (zh) | 一种生成测试方案的方法及系统 | |
Di Thommazo et al. | Using artificial intelligence techniques to enhance traceability links | |
Hsu et al. | A GAN Approach for Node Embedding in Heterogeneous Graphs Using Subgraph Sampling |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |