论文部分内容阅读
程序中蕴含的不变性质即程序不变量,它用来描述程序的运行规律。目前的不变量动态发现工作采用的是试探法,分为两个阶段——首先预置不变量形式,然后确定不变量表示形式。它考查的是一些简单的,有限数目的不变量形式,难免会遗漏重要的程序特征;此外,检测过程采用试探法穷举变量组合,带有很大的盲目性,耗时很长而效率很低。由于GEP有很好的函数发现能力,借助GEP进行不变量形式发现可以很好的弥补这一缺陷。实践证明,利用GEP可以解决标准多项式函数形式的不变量发现问题。本文沿用了基于GEP的不变量发现思想,对指数函数形式的程序不变量发现方法进行研究。首先利用GEP技术在函数依赖集中进行函数形式的发现;然后进行函数表达式的确定;最后在实验数据集中进行不变量的验证。不同形式的程序不变量有着各自不同的特点。本文首先分析了GEP函数形式发现的特点,找到影响GEP函数形式发现的主要因素——函数符号集和适应度函数;在此基础上对指数函数形式的不变量进行分析。实验发现,借用GEP算法可以很好的发现线性指数函数型程序不变量,而对非线性指数函数型程序不变量的发现,在经过处理后才有较大的提升。总的来说,GEP有着较好的形式发现能力,可以解决指数函数型程序不变量的发现问题。本文总结并继承了前人的工作,对GEP函数形式发现特点进行研究,最后实验分析发现利用GEP算法可以较好的解决指数函数形式的不变量发现问题。该工作扩展了目前程序不变量发现技术在函数发现上的能力,增大了从程序运行轨迹数据中发现更多程序不变量的可能性。