The invention discloses a condition slicing method of golden section search and software implementation based on trajectory, according to a given set of first-order predicate logic, in the range of eligible, according to the golden section search method to select variables as the dynamic operation of the program input, calculate the corresponding statement coverage set through the implementation of program running track the collection, on this basis, combined with the Static Slicing procedure, the calculated conditions of program slicing. Because the method does not require global analysis of the program, it improves efficiency and space complexity is low, in addition, the execution trajectory of program is easy to obtain and is not affected by program type, so the method can be applied to inter process, object oriented and concurrent program.
【技术实现步骤摘要】
一种基于黄金分割搜索及软件执行轨迹的条件切片方法
本专利技术属于软件维护中程序切片领域,涉及一种基于黄金分割搜索及软件执行轨迹的条件切片方法。
技术介绍
程序切片是将源程序中用户所感兴趣的变量或语句直接或间接相关的代码抽取所得的新代码的集合,由于将程序的规模大幅度缩减,便于程序理解,应用价值较高。该技术自Weiser在1979年提出至今,已经在软件分析、理解、调试、测试、度量、软件质量保证、逆向工程等许多方面有着广泛的应用。因此出现了一系列程序切片的种类,条件切片便是基于静态切片和动态切片之间的一种较为实用的程序切片。目前主要的条件切片方法有:1998年G.Canfora,A.Cimitile和D.Lucia提出的符号执行方法。该方法根据输入条件的限制,通过符号执行的计算将程序进行简化。该方法能够较为精确的处理过程内的条件切片,但无法处理过程间、面向对象以及并发类程序。2002年M.Daoudi和L.Ouarbya等人提出的将FermaTtransformationsystem和符号执行相结合的方法。该方法进一步提高了程序简化技术,但依然无法处理过程间、面向对象以 ...
【技术保护点】
一种基于黄金分割搜索及软件执行轨迹的条件切片方法,其特征在于,该方法包括如下步骤:步骤1)对源代码进行插装,得到运行时能够产生执行轨迹的带探针的程序;步骤2)通过黄金分割搜索法选取符合一阶谓词逻辑集的变量值,具体方法为:在满足一阶逻辑限定的取值范围内,选取待分割的区间,通过黄金分割搜索法取点的方式得到变量的值,作为程序运行的输入;步骤3)获取执行轨迹,配置执行所述步骤1)得到的带探针的程序,运行的过程中产生实时运行轨迹,运行完成后得到此次程序运行的执行轨迹;步骤4)利用下式计算语句覆盖集,然后选取当前变量值与左邻接变量值作为右区间端点和左区间端点值,得到新的变量区间:sta ...
【技术特征摘要】
1.一种基于黄金分割搜索及软件执行轨迹的条件切片方法,其特征在于,该方法包括如下步骤:步骤1)对源代码进行插装,得到运行时能够产生执行轨迹的带探针的程序;步骤2)通过黄金分割搜索法选取符合一阶谓词逻辑集的变量值,具体方法为:在满足一阶逻辑限定的取值范围内,选取待分割的区间,通过黄金分割搜索法取点的方式得到变量的值,作为程序运行的输入;步骤3)获取执行轨迹,配置执行所述步骤1)得到的带探针的程序,运行的过程中产生实时运行轨迹,运行完成后得到此次程序运行的执行轨迹;步骤4)利用下式计算语句覆盖集,然后选取当前变量值与左邻接变量值作为右区间端点和左区间端点值,得到新的变量区间:statementsi+1=statementsi∪ti+1其中,i表示执行轨迹的编号,statementsi+1为前i+1次程序运行所得的语句覆盖集,statementsi为前i次程序运行所得的语句覆盖集,ti+1为第i+1次程序运行的轨迹;如果所述语句覆盖集发生更新,则将新的变量区间加入待分割区间集合中,然后返回步骤2);若覆盖集未发生更新,则按照如下方式设定所述新的变量区间黄金分割的次数α:如果新的变量区间所在的父级区间之前设定过α值,则令α=α-1,如果α不变为0,则直接返回步骤2);如果α变为0,则舍弃该新的变量区间,此时如果待分割区间以及待执行变量均为空,则语句...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。