当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于阈值感知技术的实时软件缺陷预测方法技术

技术编号:39518627 阅读:11 留言:0更新日期:2023-11-25 18:57
本发明专利技术提出了一种基于阈值感知技术的实时软件缺陷预测方法

【技术实现步骤摘要】
一种基于阈值感知技术的实时软件缺陷预测方法


[0001]本专利技术属于计算机
,尤其是软件分析测试领域

本专利技术提供了一种面向编程现场代码提交,自动化提取特征信息的实时软件缺陷预测工具,可用于检测软件项目提交代码中潜在的缺陷,辅助开发者定位软件缺陷并修复缺陷


技术介绍

[0002]所谓软件缺陷,即为计算机系统或程序中存在的某种破坏系统正常运行的问题

错误,或者隐藏的功能缺陷

其带来的系统崩溃

数据出错问题在一些重要领域会引发极为严重的后果,比如医疗领域中的
Trace

25
事件,由于软件缺陷导致过量辐射照射人体,引发了多起医疗事故

因此,为了帮助确保软件质量,减少软件缺陷的产生,开发人员在软件模块测试和维护上投入了大量的精力,过去的研究统计表明,软件测试和维护所占用的开发时间和人力成本是所有软件开发阶段中最多的两个阶段

即使如此,虽然软件测试和维护极大程度地减少了缺陷的数量,但仍无法完全杜绝软件缺陷的产生

而且随着软件系统规模和复杂性不断增长,测试和维护人员将面临极大的挑战

[0003]自动化的测试和缺陷定位技术可以帮助开发人员更有效地定位错误并分配测试资源,因此成为了一个非常热门地研究课题

目前定位软件缺陷的方法主要可以分为两类:基于搜索的软件测试
(SBST)
法以及软件缺陷预测
(SDP)
方法

两种方法均能在大量的代码中较早地定位到潜在缺陷,减少缺陷可能造成的损失

[0004]软件缺陷预测技术能够评估软件系统中各类组件
(
文件



函数
)
包含缺陷的可能性,从而帮助开发人员将有限的测试和维护工作集中在那些更有可能出现缺陷的组件上

缺陷预测工作将诸如代码行数

代码复杂度

组织关系

变更历史等一系列与缺陷相关的度量考虑在内,以预测软件未来可能会出现的缺陷

[0005]然而,最近有研究表明,这类基于组件的预测模型难以在实践中应用,开发人员需要在整个可能包含缺陷的组件中定位代码片段,仍需要耗费大量的时间和精力

另一方面,这类缺陷预测工具一般在开发末期才被用于检测软件质量,而从业者希望在更早的阶段
(
提交代码变更
)
,对代码印象深刻的时间点进行检测

考虑到这些缺点,一些研究开始慢慢转向更细粒度的基于代码提交的软件缺陷预测
——
实时软件缺陷预测

[0006]此外,在各类计算机系统或程序中,由于缺陷模块仅占了一小部分,绝大部分模块仍然是正常的,导致从实际系统中采样时得到的数据集是高度不平衡的,有研究表明,目前所使用的缺陷预测数据集约有
64
%其缺陷率
(
包含缺陷的组件占全部组件的比重
)
集中在0%

30
%范围内,有
38
%的数据集缺陷率在
10


20
%之间

使用这种类不平衡的数据集极有可能得到一个具有倾向性的模型,模型会倾向于预测数据为无缺陷以降低损失函数值,最终影响到模型的性能和解释

现有的平衡技术倾向于使用重采样方法或是集成学习的方法来降低类不平衡所带来的消极影响

但是一方面,这类方法并不是适用于所有的分类器,在一部分分类器上甚至会使预测性能下降,同时,各种评价指标对这些类平衡方法的敏感性也不尽相同

另一方面,这些类平衡方法转移了学习的概念,会对预测模型的解释产生偏


而我们则在不改变原有数据分布的情况下,通过调整我们的阈值来解决不平衡问题,我们把这种方法称为阈值感知技术

阈值感知技术不对数据集进行操作,不更改样本分布,不会像目前所使用的类平衡技术一样对模型的公平性产生影响

[0007]总的来说,现有的软件缺陷预测技术存在如下缺点:
1、
大部分缺陷预测工具都是基于组件这类粗粒度的,在现实场景中难以使用,需要更小粒度,时间更为紧密的缺陷预测;
2、
大部分缺陷预测工具都是在不平衡数据集的基础上预测的,具有一定的倾向性;
3、
目前使用的类平衡方法都存在一定的缺陷,给一部分分类器带来一定负面效果的同时也对预测模型的可解释性产生了影响


技术实现思路

[0008]本专利技术提供了一种基于阈值感知技术的实时软件缺陷预测工具,该工具能够自动化地从目标项目的软件版本控制系统的历史提交信息中抽取多个维度的度量,并根据历史提交中的有效信息锁定包含缺陷的有效提交,通过
SZZ
算法向前回溯找出并标记引入缺陷的提交,生成对应软件的缺陷数据集供模型训练,模型训练过程中使用阈值感知技术选择合适的阈值并保存模型,等待开发人员调用

开发人员修改代码并提交后,工具为该代码变更生成新的度量并调用模型预测,根据预测结果对可能包含的缺陷的提交进行进一步测试

本专利技术为软件缺陷预测提供了一种自动化生成数据集,实时预测的方法,通过阈值感知技术减少了不平衡数据集对模型所产生的影响,最后得到的预测结果可帮助开发人员更早地发现修改代码中潜在的缺陷,提高软件质量

[0009]为达成上述目的,本专利技术提出了一种基于阈值感知技术的实时软件缺陷预测方法

方法包括下列步骤:
[0010]1)
从软件托管平台获取目标软件项目的所有历史提交信息和代码更改;
[0011]2)
根据历史提交信息和代码更改抽取各种维度的度量;
[0012]3)
从历史提交信息中汇总修复类型提交,并通过
SZZ
算法向前回溯找出引入缺陷的提交并制定标签;
[0013]4)
汇总
2)、3)
步得到的度量和标签形成基于代码提交粒度的缺陷数据集;
[0014]5)
使用阈值感知技术对缺陷数据集进行训练并保存模型;
[0015]6)
对于新产生的代码提交,抽取度量并经由模型预测,得到最终的预测结果,根据预测结果进行后续测试

[0016]本专利技术从代码提交粒度抽取多种维度的度量,从代码角度,抽取了代码分布

代码规模两个维度的度量,从开发生命周期角度,抽取了文件历史改动信息

成员经验

提交文本信息三个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于阈值感知技术的实时软件缺陷预测方式,其特征是利用软件历史提交中抽取度量信息对未来可能产生的软件缺陷进行预测,主要包括以下流程:
1)
从软件托管平台获取目标目标软件项目的所有历史提交信息和代码更改;
2)
根据历史提交信息和代码更改抽取各种维度的软件度量;
3)
通过
SZZ
算法向前回溯找出引入缺陷的提交并制定标签;
4)
汇总度量和标签,形成基于代码提交粒度的缺陷数据集;
5)
使用阈值感知技术对缺陷数据集进行训练并保存模型;
6)
对于新产生的代码提交,抽取软件度量输入缺陷预测模型进行预测;
7)
根据预测结果对包含缺陷的代码提交进行进一步测试
。2.
根据权利要求1所述的基于阈值感知技术的实时软件缺陷预测方式,其特征在于对多种项目托管平台的支持,具体步骤包含,选取目标软件项目,程序自动调用指令获取目标项目的历史提交信息和代码变更信息;定义1:项目托管平台是一个面向各类开源及私有软件项目的托管平台,支持
git
作为版本库格式进行托管,主流的项目托管平台包括
github、
码云
(gitee)
等;定义2:提交用于记录分布式版本控制系统中目标项目的所有变更,每当对项目文件进行修改时,就会产生一个新的提交,用户可以通过回溯提交查看历史版本,一个完整的提交包含下列信息:
id
,父提交
id
,作者,修改时间,提交人,提交时间,标题,说明等;定义3:代码变更用于记录每次提交中的代码变更情况,包括修改所涉及文件名,修改涉及的代码行数,修改所涉及的具体代码行号以及代码主体
。3.
根据权利要求1所述的基于阈值感知技术的实时软件缺陷预测方式,其特征在于抽取的软件度量包含了5种不同的维度:分布维度

规模维度

历史维度

人员经验维度

提交文本信息维度,从多个角度对项目代码进行分析;定义4:软件度量是对软件开发项目

过程及其产品进行数据定义

收集以及分析的持续性定量化过程,目的在于对此加以理解

预测

评估

控制和改善软件质量;定义5:分布维度,用于探究代码更改在整个项目中的分布情况对缺陷的影响,包含了子系统

目录

文件三个不同的级别;定义6:规模维度,用于...

【专利技术属性】
技术研发人员:李言辉吴腾超陈林
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1