关键词:
面向对象
程序切片
系统依赖图
ISDG
多态性
摘要:
程序切片是一种有效的程序分析技术,它能根据给定的切片准则从源程序中提取出所需部分进行分析,如进行程序调试、测试、程序重构分析等。程序切片技术在结构化程序中已有较广泛的应用,但对于像Java这样的面向对象语言程序,其研究与应用还存在一些待解决的问题。作为典型的面向对象编程语言,Java程序的切片技术很有代表性。Java程序中的参数传递、多态性、异常处理、多线程等问题,是当前程序切片技术研究领域的重点和难点问题。
论文通过对Java语言程序特性的分析,特别是方法间依赖关系的分析,应用了一种改进后的系统依赖图(ISDG)进行Java程序多态性研究。首先针对子类和父类方法间的依赖关系对每个重写或覆盖后的方法构造局部的系统依赖图(LSDG),再针对对象间的依赖关系构造不含对象方法间依赖关系的系统依赖图(SDG)。最后针对对象方法间的依赖关系在上一步的系统依赖图中添加方法间的依赖边,得到改进后的系统依赖图(ISDG)。使用ISDG成功地解决了Java程序中多态性表示的问题。同时,本文还使用了一种Java程序的切片准则,并给出其基于ISDG的切片算法。
为了使ISDG更具有普遍性和实用性,论文将ISDG扩展到了更为复杂的多态性问题,并针对在复杂的ISDG中存在着大量重复的局部ISDG这一现象,提出了解决办法:将重复调用的节点标记为重用的叶子节点。从而简化了ISDG,降低了复杂度,提高了效率。通过与采用插桩法的OODSDG进行比较,进一步论证了ISDG的特点和优势。