面向方面——切片化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.3 面向方面——切片化
程序切片(program slicing)作为一种分析和理解程序的技术[1],该概念由Weiser于1979年在其博士论文中首次提出[2],他认为程序切片是一个可执行程序,切片与源程序对某个特定变量来说,在程序特定位置语义上应是一致的。
一般来说,一个程序切片对应一个特定的切片准则(slicing)。
程序切片可以通过从源程序中删除零条或多条语句得到,但要保证源程序和切片关于切片准则的行为相同。
程序切片概念提出至今,切片技术一直随着程序设计语言和软件开发方法的发展而不断发展。
计算切片的算法从基于数据流方程、基于信息流关系发展到基于程序依赖图、基于系统依赖图,切片的目标程序由过程程序发展到面向对象程序和面向方面程序。
此外,还出现了各种各样的程序切片变体,如削片、砍片、层次切片等。
程序切片具有简化问题、缩小目标范围的特性,广泛应用于程序的调试、测试与分解,以及软件维护、软件重用和逆向工程等领域。
目前,程序切片技术在理论和应用方面均取得了重要的成果。
程序切片是一种重要的程序分析技术,广泛应用于程序的调试、测试与维护等领域。
面向方面程序设计作为一种新的软件开发范型,能够实现横切关注点的模块化,其特有的语言元素和功能为切片增加了难度。
从静态切片和动态切片两种类型,讨论了面向方面程序切片技术。
在此基础上,提出了一种基于简化动态依赖图的面向方面程序切片方法,可以减少动态依赖图中节点和边的数量,生成准确的面向方面程序的动态切片,从而有助于人们更好地对面向方面程序进行分析和理解
程序切片是一种重要的程序分析技术,广泛应用于程序的调试、测试与维护等领域。
面向方面程序设计作为一种新的软件开发范型。
能够实现横切关注点的模块化,其特有的语言元素和功能为切片增加了难度。
从静态切片和动态切片两种类型,讨论了面向方面程序切片技术,并在此基础上,提出了一种基于简化动态依赖图的面向方面程序切片方法,可以减少动态依赖图中节点和边的数量,生成准确的面向方面程序动态切片,从而有助于人们更好地对面向方面程序进行分析和理解。
程序切片主要包括:
(1)语句切片该传统的程序切片技术是一种条件切片,根据程序的顺序、循环和选择结构进行程序切片。
(2)无定型程序切片其不仅在保存一个程序语义投影的同时简化了程序,还可以使用任何简化的转换。
而这些转换保留了该语义映射。
(3)面向对象切片把切片技术应用于面向对象的系统相关图和过程相关图中,使对面向对象程序的代码理解、测试、调试、逆向工程和度量分析变得相对容易嘲。
面向对象程序切片技术
程序切片技术分面向过程和面向对象程序切片。
目前程序切片大都以系统依赖图为基础,利用图的可达性算法获得。
SDG和OOSDG
系统依赖图SDG(System Dependence Graph)用一组边和顶点的集合表示一个程序。
顶点表示程序的语句和控制谓词,边则表示语句之间的依赖关系。
在SDG中有两类边:控制依赖边和数据依赖边。
SDG是在控制流图、数据流图、控制依赖子图、数据依赖子图、过程依赖子图和程序依赖图的基础上建立的一种语法分析树,如图1所示。
面向对象依赖图OOSDG(Obiect-Orientecl System Depen-dence Graph)是过程依赖子图、类依赖子图、类层次子图、控制依赖子图、数据依赖子图和虚函数调用子图几种表示方法的并集.如图2所示。
程序切片处理的流程:
、。