计算机程序切片技术的探讨.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机程序切片技术的探讨

计算机程序切片技术的探讨   摘要:程序切片技术是一种分析和理解程序的技术,在程序切片技术提出的30年来,得到了很快的发展。本文主要介绍了程序切片的基本概念,程序切片的种类、算法以及用途。   关键词:动态程序切片;算法:回归测试      1计算机程序切片的分类      1.1 前向切片和后向切片   根据计算切片方向的不同,可把程序切片分为前向程序切片和后向程序切片。前向程序切片是指所有受兴趣点变量的值影响的语句的集合;后向切片是指程序中所有能够影响兴趣点变量的值的语句的集合。这两类切片最后是不构成一个可执行程序的。   1.2 过程内切片和过程间切片   根据切片的范围,可以分为过程内切片和过程间切片。过程内切片是指单个过程内影响兴趣点变量的值(或受兴趣点变量的值影响)的语句的集合,不考虑过程调用的情况;过程间切片指在过程内切片的基础上,考虑过程调用的情况。执行过程间切片时,要分析实参和形参相对应的依赖关系,要完成实参和形参之间依赖性的转换。   1.3 静态切片,动态切片和条件切片   根据切片过程对程序某一次具体的输入的依赖程度,可将程序切片分为静态切片和动态切片。静态切片是指不考虑程序运行时的输入,完全利用静态分析方法得到切片,也就是分析程序的源代码,计算所有可能输入情况下的切片。静态切片考虑了程序中所有的执行路径,包含了所有与兴趣点处变量相关的语句,不管某些语句在程序实际的执行中是否被执行,因而,静态切片具有很大的冗余性,工作量较大。   动态切片是指在特定输入下实际影响兴趣点变量值(或受兴趣点变量值影响)的所有语句的集合。动态切片只考虑程序在某个具体输入下,实际执行的路径中,和兴趣点变量相关的语句。因此,动态切片的计算过程依赖于程序的具体输入,因而,每一次的计算工作量较小,但得到的切片相对比较精确。   条件切片技术是一种介于静态切片技术与动态切片技术之间的切片技术。在进行条件切片时,只有满足该切片条件的那些输入才会被分析。这个条件对应着程序的某个或某些初始状态。如果存在从满足切片条件的任一个初始状态出发都不可能被执行的语句,那么把这些语句去除掉后,就得到了在这个切片条件下的程序切片。      2 程序切片的准则      程序切片还要考虑切片准则。对于不同的切片准则,相同的源代码得到的程序切片是不同的。基本上,对每一类切片都有不同的切片准则。常见的切片准则有:   2.1 静态切片准则   如果要对一个程序P进行静态切片,需要构造一个静态切片准则。p是感兴趣点,就是程序中的某条语句。V是p处定义或引用的变量,可以是某一个变量,也可以是几个变量的集合。程序P的静态后向切片就是程序中所有能够影响p处的V中的变量的语句的集合;静态前向切片就是程序中所有受p处的V中的变量影响的语句的集合。   2.2 动切片准则切片   如果要对一个程序进行动态切片,需要构造一个动态切片准则。动态切片准则是一个三元组,其中p是感兴趣点,就是程序中的某条语句。V是p处定义或引用的变量,可以是某一个变量,也可以是几个变量的集合。i是程序本次执行的具体输入。程序的动态后向切片是指在本次执行的语句中,所有能够影响p处的V中的变量的语句的集合;程序的动态前向切片是指在本次执行的语句中,所有受p处的V中的变量影响的语句的集合。   2.3 条件切片准则   如果要对一个程序进行条件切片,需要构造一个条件切片准则。条件切片准则是一个三元组,其中p是感兴趣点,就是程序中的某条语句。V是p处定义或引用的变量,可以是某一个变量,也可以是几个变量的集合。π是一个谓词,是V中变量的关系的集合。构造一个程序P的条件切片,当在一个满足π的初始状态执行时,条件切片必须保持程序P(与V有关)的投影含义。   2.4 迭代切片准则   迭代切片准则是一个三元组C=,其中p是感兴趣点,就是程序中的某条语句。V是p处定义或引用的变量,可以是某一个变量,也可以是几个变量的集合。n是自然数。程序P的第n次(静态)迭代切片是由第n次执行到达p那些保持程序P的投影含义不变的语句组成。当n扩充到N(自然数集)时就变成广义迭代切片准则。   2.5 多点切片准则   多点切片准则是一个二元组C=(V,N),其中N是程序P中节点的集合,V是变量的集合。当在N中任何一点执行一条语句时,对于V中的所有变量而言,切片和程序P具有同样的效果。      3程序切片的算法      程序切片的算法很多,有weiser提出的数据流方程的算法,Karl Ottenstein和Linda Ottenstein提出的基于程序依赖图的算法。Horwitz, Reps和Binkley扩展了程序依赖图的算法,提出了系统依赖图的方法。Erns

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档