论文部分内容阅读
随着软件项目的日益庞大,软件系统的维护也越来越困难。很多项目在经历了数个版本之后,往往已经面目全非,难以扩展和维护。重构概念的提出,为其指明了道路。但是,要想对于大型程序实施重构,依旧是困难重重。首先是源程序结构获得困难,大多数情况下,由于种种原因,相关文档已无法描述当前系统。这时,源代码便成为重构步骤中唯一可以获取系统信息的来源。但是,源代码的面向机器、不直观、没有层次性的特性,阻碍了软件开发人员从中获取信息的过程。另外,当程序代码量达到一定的规模之后,如果想从中找到某一个重构点,无异于大海捞针,需要对程序有着较深层次的理解。本论文利用基于LL(*)算法(一种采用了不定长预测表的自左向右扫描的词法分析算法)的ANTLR(一个通用的语法解析框架)技术,通过构建能够解析源文件语法的解析器,成功通过逆向工程获取了程序中的结构信息,并将之保存在数据库中。然后利用数据库强大的查询功能,辅以模式匹配的方式,可以从大量的结构信息中找出需要重构的地方,构建了重构系统,而且在重构之后,通过建立一套动态评价机制,以评估重构的能力。通过本系统,用户可以从海量的源代码中通过定义重构模式迅速找到软件代码中值得改进的地方。而且通过将软件代码纳入本系统的管理范围,可以有效的跟踪程序代码在哪些方面是否有所提升或者有所优化。本系统试图将数据库应用到程序结构信息的存储与查询中。借助于数据库的数据整合能力,可以有效提升程序的性能。其中的评估模块提供了对于文本描述的表达式的动态求解能力。另外,由于程序的重构定义与公式定义都允许用户进行定制扩展,这种极其柔性的扩展方式使得系统可以应用于更多的方面。