一种基于进化特征构建的工作量感知即时缺陷预测方法

文档序号:37419115发布日期:2024-03-25 19:06阅读:9来源:国知局
一种基于进化特征构建的工作量感知即时缺陷预测方法

本发明属于软件缺陷预测,尤其涉及一种基于进化特征构建的工作量感知即时缺陷预测方法。


背景技术:

1、现代科技的不断发展使得信息技术产业成为现代化产业中不可或缺的部分。软件产业作为信息技术产业的支撑力量,随着信息技术产业的快速发展来到了黄金时期。如何使得软件产品保持较好的稳定性,成为了当前软件产业面临的挑战。软件产品在其生命周期中常常伴随着许多软件缺陷。根据ieee标准定义,软件缺陷指的是软件中不符合需求或规范,需要修复或替换的内容。软件缺陷的存在,极大制约了软件的应用与发展,带来了大量的经济损失。因此,修复缺陷成为软件维护中的关键活动,但它同时需要消耗大量的时间和资源。

2、鉴于此,软件工程领域的研究者提出了软件缺陷预测技术,其目的在于提前预测可能存在缺陷的软件实体。软件缺陷预测的基本思路在于从软件项目的历史数据中提取特征用来表征被预测的软件实体,然后将这些特征输入到分类(或回归)器进行训练获得预测分类模型,从而对新产生的软件实体预测其存在缺陷的可能性。在软件缺陷预测研究中,研究人员提出了即时缺陷预测(jitdp),它是指预测开发者每次提交的代码变更(codechange)是否存在缺陷的技术,允许开发人员以高效和节约资源的方式审查和修复潜在的缺陷,这些年来受到了广泛的关注。工作量感知即时软件缺陷预测是一种细粒度的工作量感知缺陷预测技术,预测实体是代码变更,其目标是在有限的测试资源中找到更多包含缺陷的代码变更。

3、相关的专利,如一种基于线性规划的工作量感知即时软件缺陷预测方法(cn115033493a)提出了基于线性规划的工作量感知即时软件缺陷预测方法。然而通过这种简单模型进行预测评估,效果远不如大部分机器学习模型有效。此外,这类方法的可拓展性小,往往无法把方法应用在其他模型上。其他的如一种基于数据类不平衡分布的即时软件缺陷预测方法(cn114138632a)中提出的方法忽略了工作量,在实际的软件生产场景里,开发人员审查预测的缺陷引起的更改所需的工作(即qa工作)是一个重要的需要考虑的因素,所以这类方法在实际预测工作中存在一定的局限性。

4、综上所述,现有的工作中有许多在模型预测准确率上取得很大进步的方法,但这些方法往往忽视了工作量因素,在实际生成场景中不能完全适用,而且现有的基于工作量感知的即时缺陷预测方法都缺乏可拓展性和可移植性,方法往往难以应用到其他模型上。


技术实现思路

1、本发明针对现有技术的不足,提出了一种基于进化特征构建的工作量感知即时缺陷预测方法。该方法主要通过多目标遗传算法,以模型预测的准确率与所需的工作量为目标函数,进行机器学习模型的特征构建,并将构建好的特征应用在机器学习模型上。本发明将工作量感知与特征工程相结合,从而更加灵活地应用在不同的模型上。

2、本发明的技术方案:

3、一种基于进化特征构建的工作量感知即时缺陷预测方法,具体步骤如下:

4、步骤1:数据收集与处理。收集软件度量元与软件实体标签来构造即时软件缺陷预测数据集。由于数据集属于类不平衡数据集,对数据集进行类不平衡数据预处理,在即时缺陷预测方法中,一般采用随机下采样方法进行预处理。

5、步骤2:计算数据集的工作量度量。采用代码变更行数(codechurn)来作为工作量度量,根据数据集修改的代码行度量元计算得到codechurn,以便进行之后的工作量计算。对于代码变更c,具体计算如下:

6、code churn=(la(c)+ld(c))

7、其中,la(c)和ld(c)代表了代码变更c增加与删除的代码行数。

8、步骤3:特征构建。在训练集上,通过多目标优化方法来构建进化特征集种群,用表现好的特征个体更新种群,从最终种群中选取最优个体作为最终特征集。具体过程如下:

9、(a)初始化:随机初始化种群。使用gp(遗传编程)树来表示特征。树的叶子节点是被叫做终止集,非叶子节点叫做符号集。终止集被分成了两类——常数(数字)和参数(x,y,z...)。这些常数在整个进化过程中保持不变,而参数是由程序输入的,在本案例中,参数就是原始特征集。

10、由多棵gp树构成的特征集组成进化算法基本单位的个体φ,可以表示为代表了一组可用于构造的特征集。而由多个个体组成的,存储进化算法过程中的表现良好的个体集合则为种群,一个种群由多个个体构成,可以表示为p={φ1,φ2,...,φs}。

11、(b)评估:根据训练数据的交叉验证来评估每个新个体的适应度值。适应度评估函数由两个目标函数组成:准确率指标函数与工作量感知函数。

12、对于工作量感知的即时软件缺陷预测,构建模型时主要考虑优化目标,第一个目标是从分类模型角度考虑,对于一组数据,分类指标函数f1通过以下公式计算:

13、

14、其中,precision和recall分别代表分类预测结果的准确率和召回率指标。f1值可以度量分类模型的性能好坏,该值越高,则代表分类模型性能越好。

15、第二个目标是从工作量感知角度考虑,对于一组数据,通过计算检测该代码变更所需的工作量,也就是code churn,来计算缺陷密度:

16、

17、对于一个代码变更c,denisty(c)代表该变更的缺陷密度,ypred代表该变更在分类模型上的预测值,那么工作量指标代码密度平均比例(avd)可以用如下公式计算:

18、

19、

20、

21、其中,c1,c2,...,cm为m个代码变更按照预测缺陷密度升序进行排列,denisty(ci)代表代码变更ci的实际缺陷密度。因此,缺陷密度之和定义为d。对于检查每个代码变更所需的缺陷密度占总缺陷密度的比例用pd来表示,则m个代码变更的pd平均值用avd可以计算得出,工作量感知模型性能越好,则越会将缺陷密度大的代码变更排序在前,即avd越大。

22、(c)进化:每个个体都包含一组gp树。在后代生成中,从每个个体中随机挑选gp树来执行如下变异和交叉操作。

23、(1)变异算子:随机选择一个子树并用随机生成的树替换它。

24、(2)交叉算子:用来自另一个父代的子树随机替换来自一个父代的子树。

25、为了保持种群多样性,强制变异算子生成新的个体。

26、(d)选择:将父子两代的进行合并,对合并后的种群,基于nsga-ii算法进行多目标优化选择,具体步骤如下:

27、首先,通过快速非支配排序算法对个体之间的pareto支配与非支配关系进行排序分层,分为不同的pareto前沿。pareto支配与非支配关系的定义如下:

28、假设φi和φj是种群中的两个个体,当f1(φi)>f19φj)且avd(φi)≥avd(φj)或f1(φi)≥f1(φj)且avd(φi)>avd(φj)时,可以称φi对φj是pareto支配。如果当前目标空间中不存在支配φ的个体,则称该个体φ为pareto最优解。

29、由一组pareto最优解组成的解集对应的向量表示就是pareto前沿。

30、为保证群体的多样性,需要在每一层级pareto前沿上计算每个个体的拥挤度,从而在每个层级上比较个体的优异程度。种群中的每个个体都设定一个拥挤度参数,针对每个目标函数,找出与该解函数值相邻的两个解并计算这两个解之间的函数差值。当前解的拥挤距离就是所有目标函数获得的相邻解函数差值之和,拥挤距离越小就代表该个体周围越拥挤。

31、最后,通过采用精英策略来防止优秀个体的流失,首先将父代种群和子代种群合成种群,根据以下偏序规则从合并后的种群生成新的父代种群:

32、如果两个个体具有不同的pareto前沿层级,则偏向于低pareto前沿层级的个体;如果两个个体具有相同的pareto前沿层级,则偏向于大拥挤距离的个体。

33、(e)生成最终特征集:达到进化算法最终条件后,停止进化并得到最终种群,也就是最优解集,计算得到最优解集中分类指标最大的个体作为最优解,即最终构造的特征集。

34、步骤4:模型训练。通过特征构建阶段生成的特征集来重新构建训练数据集,为新构建出来的数据集训练分类预测模型,生成最终模型。

35、采用决策树算法作为分类模型,决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集。该分类模型的具体算法如下:

36、假定共有y类样本,当前样本集合d中第k类样本所占的比例为pk,则d的信息熵ent(d)定义为:

37、

38、ent(d)的值越小,则d的纯度越高。假设离散属性a可能存在v个取值,则使用a对集合d进行划分,会产生v个分支,其中第b个分支结点包含了d中所有在属性a上取值av为的样本,即为dv。给分支结点赋予权重可以得到信息增益gain:

39、

40、信息增益越大表示使用属性a来划分所获得的纯度提升越大,以信息增益作为依据来划分,根据样本在该属性上的不同取值将其划分成若干个子集,即分为不同类。在即时软件缺陷预测领域中,属性就是数据集的特征,划分的类别分为缺陷与干净两种类型。

41、将最终生成的决策树模型用于后续的代码变更的缺陷预测,可以保证工作量感知场景下的预测准确率。

42、本发明的有益效果:本发明方法从即时缺陷预测的工作量感知角度出发,设计了一种基于进化特征构建的即时缺陷预测方法,更加适用于实际软件生成场景中的应用,而且由于是从特征构建的方面入手,因此有更好的可拓展性和可移植性,可以适用于多种缺陷预测模型,提升这些模型在工作量感知场景下的预测性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1