首页> 中国专利> 一种基于基因表达式编程算法的软件缺陷预测方法

一种基于基因表达式编程算法的软件缺陷预测方法

摘要

本发明公开了一种基于基因表达式编程算法的软件缺陷预测方法,包括如下步骤:S1:设置运行参数并随机生成字符串染色体初始化种群;S2:将软件缺陷历史数据集分成训练集和测试集;S3:通过树状结构将种群中的字符串染色体转换成表达式树;S4:将表达式树进行解码,转换成对应的程序模型;S5:根据适应度函数,计算适应度值;S6:用轮盘赌选择机制对种群进行选择;S7:用基于领域变异的基因表达式编程算法对种群进行演化;S8:重复S3步至S5;S9:检查是否达到结束条件,如没有则返回S6,结束后得到的最优染色体即为对软件缺陷预测的模型;S10:通过测试集对得到的模型进行测试,最终得到软件缺陷预测的模型;S11:将实况的软件缺陷数据输入到模型中,得到预测结果。本发明简单高效,可用于缺陷预测技术领域中软件缺陷的预测。

著录项

  • 公开/公告号CN114968773A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 九江学院;

    申请/专利号CN202210536193.7

  • 发明设计人 肖文辉;彭虎;韩雨鹏;

    申请日2022-05-17

  • 分类号G06F11/36(2006.01);G06N3/12(2006.01);

  • 代理机构常州品益专利代理事务所(普通合伙) 32401;

  • 代理人侯利娜

  • 地址 332005 江西省九江市濂溪区前进东路551号

  • 入库时间 2023-06-19 16:36:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G06F11/36 专利申请号:2022105361937 申请日:20220517

    实质审查的生效

说明书

技术领域

本发明涉及软件缺陷技术领域,尤其涉及一种基于基因表达式编程算法的软件缺陷预测方法。

背景技术

随着软件规模的不断扩大和复杂度的不断提高,软件的质量也成为了关注的焦点。而隐含缺陷的软件在部署后可能会产生一些意料之外的结果或行为,严重的时候会给企业带来巨额的经济损失。软件的缺陷威胁着软件的质量,如何在软件开发的早期检测出软件的缺陷也成为了研究的重点。软件缺陷预测技术能够在软件开发过程中使用软件模块的度量元数据来提前发现与锁定缺陷模块,从而合理地分配有限的资源,为软件质量提供保障。可以参见有关文献:Nam J.Survey on software defect prediction[J].Department of Computer Science and Engineering,The Hong Kong University ofScience and Technology,Tech.Rep,2014.

软件的隐含缺陷被检测出的时间越晚,修复这些缺陷的代价也越高,尤其在软件部署后,修复和检测的代价也急剧增加。因此,如果能在项目开发的早期阶段,预先识别出项目内的潜在缺陷程序模块,就能对这类程序模块分配足够的测试资源以确保可以进行重复的代码审查或单元测试,最终达到提高软件产品质量的目的。可以参见有关文献:宫丽娜,姜淑娟,姜丽.软件缺陷预测技术研究进展[J].软件学报,2019,30(10):3090-3114.

目前,在软件缺陷预测技术中,对于预测模型的建立,许多经典算法被用来作为软件缺陷预测的分类器,如支持向量机、决策表、贝叶斯网络。此外,软件缺陷预测还采用了许多智能优化算法来提高预测精度,包括经典的粒子群优化算法、差分进化算法、萤火虫算法等。可以参见有关文献:Li Z,Jing X Y,Zhu X.Progress on approaches to softwaredefect prediction[J].Iet Software,2018,12(3):161-175.

基因表达式编程算法是Ferreira在2001年提出的,是一种基于基因型和表现型的新型演化算法。它即保留了遗传算法的基因编码方式,又结合了遗传编程独特的树状结构。因此,基因表达式编程算法具有简单便捷和灵活多变的特点,并被广泛地应用于回归问题、数据挖掘和实际问题的识别当中。然而,标准的基因表达式编程算法也存在着收敛速率低、早熟和泛化能力差等诸多不足。这容易导致基因表达式编程算法应用于复杂的实际问题时,求解精度差且计算时间长。

发明内容

本发明主要是针对现有技术的不足,提出一种基于领域变异的基因表达式编程算法的软件缺陷预测方法。该方法可以很好地解决上述问题。

本发明使用基于领域变异的基因表达式编程算法对软件缺陷预测模型的构建问题进行优化设计。通过提高标准基因表达式编程算法的收敛速度和精度,从而提高对软件缺陷预测的精度。演化计算过程中,通过将领域空间的概念引入到基因表达式编程算法中,使得算法中的种群多样性增加,从而提高算法的泛化能力。

本发明的上述技术问题主要是通过下述技术方案得以解决的:

一种基于领域变异的基因表达式编程算法的软件缺陷预测方法,包括如下步骤:

步骤1,用户自定义初始化参数,包括种群大小NP,目标函数最大评价次数MaxFEs,头部长度H,尾部长度L=H*(n-1)+1(n为函数集中所有函数的最大操作数),变异概率P

步骤2,将软件缺陷数据集分成训练数据集和测试数据集;

步骤3,令当前目标函数评价次数FEs=0;

步骤4,随机产生字符编码的初始化种群P{X

步骤5,通过树状结构对种群P中的所有个体X

步骤6,通过中序遍历对种群P中的所有个体X

步骤7,计算每个个体X

步骤8,通过轮盘赌选择机制,从种群P中选择出优生个体X

步骤9,把种群P替换成优生种群P

步骤10,执行基于领域变异策略的基因表达式编程算法对种群P进行演化计算,产生新的种群P;

步骤11,重复步骤5至步骤10直至评价次数FEs达到MAX_FEs后结束,计算结束得到的最优个体即为软件缺陷预测的模型;

步骤12,通过测试集对模型进行测试,得到最终预测模型;

步骤13,将获取到的实况软件缺陷数据资料输入到最终预测模型中进行预测。

在上述的一种基于基因表达式编程算法的软件缺陷预测方法,所述步骤7的具体操作步骤如下:

步骤7.1,将训练集的数据输入到个体X

步骤7.2,将预测结果和真实结果进行比对,统计出真阴性(TN

步骤7.3,计算适应度值,适应度值函数SSPN

SSPN

其中,SN

步骤7.4,评估次数Fes=Fes+1;

步骤7.5,转到步骤8。

在上述的一种基于基因表达式编程算法的软件缺陷预测方法,所述步骤10的具体操作步骤如下:

步骤10.1,计数器i=1,其中i表示当前个体下标;

步骤10.2,如果i大于种群数NP,则转到步骤10.6,否则执行以下步骤;

步骤10.3,令j为当前领域内个体的下标,取值范围为[i-k,i+k],如果j等于0,则令j等于NP,如果j<1或者j>NP,则用以下公式对j进行取值:

j=(j+NP)%NP

步骤10.4,从当前领域K

步骤10.5,通过变异概率P

步骤10.6,如果变异的基因位是头部,则从函数符号集F或终止符号集T中随机选择一个符号将之替换,如果是尾部,则只从终止符号集T中选择;

步骤10.7,依据各遗传操作的概率,依次进行以下操作:①插串,包括非根插串、根插串和基因变换;②重组,包括单点重组、两点重组和基因重组;

步骤10.8,转到步骤11。

由于采用了上述技术方案,本发明提供的一种基于基因表达式编程算法的软件缺陷预测方法,该方法主要解决标准的基因表达式编程算法上的性能较差的缺点,从而提高算法对软件缺陷预测的精度,可用于缺陷预测技术领域中软件缺陷的预测。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明基于领域变异的基因表达式编程算法流程图。

图2是本发明领域概念模型图。

具体实施方式

为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:

如图1所示的一种基于基因表达式编程算法的软件缺陷预测方法,具体采用如下实施例,本实施例以文献(Iqbal A,Aftab S,Ali U,et al.Performance analysis ofmachine learning techniques on software defect prediction using NASA datasets[J].Int.J.Adv.Comput.Sci.Appl,2019,10(5):300-308.)中描述的NASA软件缺陷数据集为例,该问题描述如下:

决策变量:

TP,真阳性的数量;

TN,真阴性的数量;

FN,假阴性的数量;

FP,假阳性的数量;

目标函数:

其中,i表示的是当前个体;fitness为适应度值函数;Precision为查准率;Recall是召回率;F-measure

根据以上NASA软件缺陷数据集的描述,如图2所示,本发明的具体实施步骤如下:

步骤1,初始化各类参数:种群大小NP=100,基因个数G

步骤2,将软件缺陷数据集分成训练数据集和测试数据集;

步骤3,令当前目标函数评价次数FEs=0;

步骤4,随机产生字符编码的初始化种群P{X

步骤5,通过树状结构对种群P{X

步骤6,通过中序遍历对种群P{X

步骤7,计算每个个体X

步骤7.1,将训练集的数据输入到个体X

步骤7.2,将预测结果和真实结果进行比对,统计出真阴性(TN

步骤7.3,根据上述问题的目标函数,计算适应度值函数fitness(i);

步骤7.4,评估次数Fes=Fes+1;

步骤8,通过轮盘赌选择机制,从种群P{X

步骤9,把种群P{X

步骤10,执行基于领域变异策略的基因表达式编程算法对种群P进行演化计算,产生新的种群P,详细步骤如下:

步骤10.1,计数器i=1,其中i表示当前个体下标;

步骤10.2,如果i大于种群数NP,则转到步骤10.7,否则执行以下步骤;

步骤10.3,令j为当前领域内个体的下标,取值范围为[i-3,i+3],如果j等于0,则令j等于NP,如果j<1或者j>NP,则用以下公式对j进行取值:

j=(j+NP)%NP

步骤10.4,从当前领域K

步骤10.5,通过变异概率P

步骤10.6,如果变异的基因位是头部,则从函数符号集F或终止符号集T中随机选择一个符号将之替换,如果是尾部,则只从终止符号集T中进行选择;

步骤10.7,依据各遗传操作的概率,依次进行以下操作:①插串,包括非根插串、根插串和基因变换;②重组,包括单点重组、两点重组和基因重组;

步骤11,重复步骤5至步骤10直至评价次数FEs达到MAX_FEs后结束,计算结束得到的最优个体即为对软件缺陷预测的模型;

步骤12,通过测试集对模型进行测试,得到最终预测模型;

步骤13,将获取到的实况软件缺陷数据输入到最终预测模型中进行预测,得到预测结果。

本发明所采用的基因表达式编程算法为现有的技术,更详细的内容可参考基因表达式编程算法作者Candida Ferreira的原著《Gene Expression Programming:A NewAdaptive Algorithm for Solving Problems》,以及彭昱忠等人所编著的《基因表达式编程算法原理与应用》。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号