论文部分内容阅读
随着计算机软件复杂性的增加,出现了大量结构复杂的遗产软件。开发和维护人员意识到理解软件的总体架构设计与相关规格说明正变得日益重要。在此背景下,深入研究和理解软件代码结构将会成为提高软件生产率、解决软件后期维护等一系列问题最为有效的途径之一。通过对软件代码结构进行恢复,可以从复杂的大规模或遗留系统中抽取出相关构件,帮助开发及维护人员高效的理解和维护软件系统。程序切片技术作为逆向工程的一项重要技术,通过对源代码的分析,抽取系统的主要部分,隐藏系统细节,提取程序的体系结构信息,从比源码更高的抽象层次上对系统进行描述。切片技术能够将程序进行分解,在恢复过程中根据不同的关注点制定切片准则,运行切片算法得到源程序的子集,从而能够更好的理解大规模系统,十分适合作为实现代码结构恢复的途径。本文针对Java语言研究了面向对象程序切片的相关理论与实践,对已有的面向对象系统依赖图进行了改进和扩充,提出了一种基于统一对象扩展结构的系统依赖图改进构造方法;通过解析源程序获得构造过程所需的信息,在已有的构造方法基础上对对象实现统一的扩展,并利用该扩展结构细化了节点间的数据依赖关系;同时结合JDK1.7,在统一的对象扩展结构的基础上,为一些新的Java语法特性提供了表示方案,改善了依赖图和切片的准确性。在对基于程序切片的代码结构恢复技术进行研究时,本文利用最小切片集覆盖特定功能模块的方法来恢复对应模块的代码结构,同时提出了一种基于聚类成本的层次聚类方法优化基于切片的聚类结果,从而获得更好的代码结构恢复效果。基于开源程序的实验结果表明,本文的依赖图构造方法能够得到更小更精确的切片,并能够适应较大规模的Java程序;同时,基于切片的代码结构恢复结果也能够实现对某一功能点关键方法的聚类,恢复出对应的设计框架,为开发和维护人员理解和维护代码提供帮助。