欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2018100213542
申请人: 江苏工程职业技术学院
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于四目标优化的故障更改代码预测方法,其特征在于:包括如下步骤:

(1)通过挖掘软件项目托管的版本控制系统和缺陷跟踪系统,搜集用于构建更改代码故障预测模型的数据集,首先通过分析项目托管的版本控制系统,抽取出项目的所有历史更改代码,其次对抽取出的更改代码进行度量;

(2)基于四个优化目标,借助遗传算法,最终构建出多个具备非帕累托支配关系的模型;

步骤(2)中基于四个优化目标,借助遗传算法构建多个具备非帕累托支配关系的模型,包括如下步骤:

2-1)初始化种群:使用对数几率回归来构建故障更改代码预测模型,假设使用n个度量指标对更改代码进行度量,则对数几率回归模型的系数可用向量w={w1,w2,…,wn}来表示,每个向量元素的类型为实数类型;给定模型的系数向量w和需要预测的更改代码mi,其中用第j个度量指标对该更改代码的度量值为vi,j,则可以使用如下公式计算出该模型对更改代码预测出的其含有故障的概率:将阈值设置为0.5,如果预测的概率值大于0.5,则认为该更改代码可能会引入故障,若预测的概率值低于0.5,则认为该更改代码可能实现正确,其计算公式表示如下:种群中的染色体使用该向量进行编码,在种群初始化的时候,会随机生成N个染色体,每个染色体的向量元素随机赋值,随后基于四个优化目标,计算出每个染色体在这四个优化目标上的适应值:优化目标1:最大化在数据集上识别出的故障代码更改的数量,其取值越大越好,假设数据集含有的所有历史更改代码构成集合M,染色体对应的候选解为w,其计算公式为:其中bug gy(mi)表示该代码变更是否含有故障,若含有故障取值为1,否则取值为0;

优化目标2:最小化代码审查量,其取值越小越好,其计算公式为:

其中LOC(mi)表示代码变更涉及到的代码行数;

根据模型对数据集中代码变更的预测概率值,从大到小,将M中的所有代码变更进行排序并依次进行代码审查,则可以计算出随后两个优化目标的适应值;

优化目标3:由于缺陷在被测项目中的分布大致满足二八原则,因此该优化目标为当花费20%的代码审查量后,需要审查的代码变更量,其取值越小越好,这里所有的代码审查量为 其取值越高,表示在相同的代码审查量下,需要审查的代码变更越多,这意味着开发人员需要进行更多的上下文切换,从而对他们的开发效率产生影响;

优化目标4:其返回开发人员依次审查代码变更时,当遇到第一个真正故障代码变更之前测试的代码变更数量,其取值越小越好,该优化目标取值越高,表示模型的误报问题越严重,并可能会对开发人员的信心和耐心造成影响。

2-2)基于上一种群,依次执行交叉算子和变异算子,并生成新的染色体,其中交叉算子会根据交叉概率随机从上一种群中选出两个染色体,进行交叉并生成两个新的染色体,变异算子则会根据变异概率随机选出一个染色体,进行变异并生成一个新的染色体;

2-3)将上一种群中的染色体和新的染色体合并,形成集合B,随后基于帕累托支配关系为集合B中的每个染色体计算NDR值,首先对帕累托支配关系进行定义:假设有两个候选解wi和wj,则wi帕累托支配wj,当且仅当:在四个优化目标下,解wi均不差于解wj,且至少存在一个优化目标,解wi要优于解wj;

随后基于NDR值选择染色体到新的种群中,首先选择NDR值为1的染色体,接着选择NDR值为2的染色体,当选择的染色体数量等于N的时候(N为种群规模),该过程结束;

2-4)重复执行步骤2-2和步骤2-3,当达到种群指定的迭代次数后,返回当前种群中所有不被其他染色体帕累托支配的染色体,其中每个染色体对应一个模型;

(3)构建出多个具备非帕累托支配关系的模型后,根据开发人员对目标的偏好,从这些模型中进行灵活选择。

2.根据权利要求1所述的一种基于四目标优化的故障更改代码预测方法,其特征在于:步骤(1)中度量的指标包括:(a)更改代码的分散程度;(b)更改代码的修改量;(c)更改代码的修改目的;(d)更改代码的历史;(e)更改代码相关的开发人员的经验。

3.根据权利要求1所述的一种基于四目标优化的故障更改代码预测方法,其特征在于:NDR值的计算过程如下:首先从B中识别出所有不被其他染色体帕累托支配的染色体,将它们的NDR值设置为1,并将它们从集合B中移除。随后继续从B中识别出所有不被其他染色体帕累托支配的染色体,将它们的NDR值设置为2,并将它们从集合B中移除。重复执行上述过程,直至集合B为空。