论文部分内容阅读
软件工程的一个重要领域是程序理解,随着软件规模越来越大,对源程序的理解成了一个较难的问题,在这个问题的需求下,程序切片技术应运而生。程序切片技术是一种程序分解技术,用于分解出感兴趣的程序片段等,对理解程序有较大做用。然而对于大型程序来说传统的程序切片技术计算过程复杂,所得结果依然庞大难于理解,特别是对面向对象程序来说,传统的程序切片技术较难发掘面向对象程序设计框架。目前的面向对象程序切片的工作较多集中在结合了程序结构的语句级切片。也有较多对象间的关系的研究,少有专门对对象做切片的研究,而对象的研究无疑是面向对象程序设计的重要方面。在本文之前也有学者做对面向对象程序做粗粒度切片,有方法级粒度的也有对象级粒度的,但是这些粗粒度切片方法都是基于系统依赖图的,计算过程依然比较复杂,且只能反映出对象间的部分关系。本文所研究的切片方法是基于对象间语法级以及语义级关系做切片的,较为全面地研究了现阶段面向对象程序设计存在的对象间关系,并在此基础上研究了对象级粗粒度切片方法。该方法针对的是面向对象程序,粒度级别是对象级,所获取的对象级粗粒度切片对于理解面向对象程序结构有辅助做用。本文的具体工作有如下两点:第一点,基于面向对象程序的对象间语法级关系,提出了一种对象语法级粗粒度切片方法。该方法建立在继承关系这种语法级关系的基础上,首先构造继承关系树,然后在继承关系树的基础上获取对象级粒度继承关系前向切片和对象级粒度继承关系后向切片等。第二点,基于面向对象程序的对象间语义级关系,提出了一种对象语义级粗粒度切片方法,该方法并非基于传统的程序依赖图或系统依赖图,而是建立在对象间的关联、组合等语义级关系的基础之上。首先依据对象间语义级关系构造程序的对象图,然后在对象图的基础上获取所需各种语义级切片。显然这种粗粒度切片效率和可理解性较语句级切片有优势。鉴于面向对象的基本结构是对象,这种对象级粒度的切片是有其实用意义的。本文的概念都是建立在面向对象特征比较明显的Java程序的基础上,对其他面向对象语言的有待研究。