基于逆向工程的代码重构与分析评估系统的设计与实现

基于逆向工程的代码重构与分析评估系统的设计与实现

论文摘要

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

论文目录

  • 摘要
  • Abstract
  • 第1章 绪论
  • 1.1 课题的背景及研究目的
  • 1.2 国内外研究综述
  • 1.3 本论文的主要工作内容
  • 第2章 重构与分析评估系统的关键技术
  • 2.1 基于语法解析的逆向工程
  • 2.1.1 词法解析生成器
  • 2.1.2 对语法解析生成器的扩展
  • 2.2 动态表达式求值
  • 2.2.1 表达式语法
  • 2.2.2 表达式求值引擎
  • 2.3 程序结构的模式匹配
  • 2.3.1 程序结构模型
  • 2.3.2 反模式模型
  • 2.3.3 模式匹配
  • 2.4 本章小结
  • 第3章 重构与分析评估系统的设计
  • 3.1 系统需求分析
  • 3.1.1 代码解析部分
  • 3.1.2 代码重构部分
  • 3.1.3 分析评估部分
  • 3.2 系统总体功能模块划分
  • 3.2.1 代码解析模块
  • 3.2.2 代码重构模块
  • 3.2.3 分析评估模块
  • 3.2.4 其他子模块
  • 3.3 系统开发平台
  • 3.4 系统架构
  • 3.4.1 系统的层次结构
  • 3.4.2 各层间的接口设计
  • 3.5 系统的数据结构设计
  • 3.6 出错处理设计
  • 3.7 主要功能类设计
  • 3.7.1 代码解析主要类设计
  • 3.7.2 分析评估主要类设计
  • 3.8 本章小结
  • 第4章 重构与分析评估系统的实现
  • 4.1 系统实现
  • 4.1.1 代码解析的实现
  • 4.1.2 代码重构的实现
  • 4.1.3 分析评估的实现
  • 4.1.4 重构模式与评估公式的准备
  • 4.2 系统效果验证
  • 4.3 本章小结
  • 结论
  • 参考文献
  • 致谢
  • 个人简历
  • 相关论文文献

    • [1].代码对比与动态规划[J]. 电脑编程技巧与维护 2017(03)
    • [2].什么样的代码才是好代码[J]. 计算机与网络 2017(06)
    • [3].安全通论(14)——病毒式恶意代码的宏观行为分析[J]. 成都信息工程大学学报 2017(01)
    • [4].恶意代码同源判定技术综述[J]. 通信技术 2017(07)
    • [5].基于方法的克隆代码检测[J]. 信息与电脑(理论版) 2017(13)
    • [6].市代码[J]. 山西教育(招考) 2020(03)
    • [7].有关信息代码[J]. 山西教育(招考) 2019(02)
    • [8].关于机场的冷知识[J]. 意林 2019(22)
    • [9].市代码[J]. 山西教育(招考) 2016(08)
    • [10].利用代码重构改善软件设计[J]. 信息记录材料 2020(09)
    • [11].代码自动生成及代码上下文分析研究综述[J]. 数据通信 2020(02)
    • [12].智能代码补全研究综述[J]. 软件学报 2020(05)
    • [13].基于文本分类技术的恶意代码检测工具应用[J]. 科技经济导刊 2020(27)
    • [14].克隆代码映射的方法与应用[J]. 计算机工程与应用 2017(06)
    • [15].基于增强描述的代码搜索方法[J]. 软件学报 2017(06)
    • [16].银行代码安全审计工作探索与实践[J]. 网络安全技术与应用 2017(08)
    • [17].重视统一信用代码的应用[J]. 浙江经济 2017(19)
    • [18].代码依恋检测与重构研究[J]. 电子科技 2016(11)
    • [19].基于相识度的恶意代码检测[J]. 计算机科学 2015(01)
    • [20].有关信息代码[J]. 山西教育(招考) 2018(03)
    • [21].有关信息代码[J]. 山西教育(招考) 2016(Z1)
    • [22].有关信息代码[J]. 山西教育(招考) 2011(08)
    • [23].基于模糊识别恶意代码检测技术的研究[J]. 微电子学与计算机 2014(06)
    • [24].恶意代码加壳脱壳技术[J]. 辽宁警专学报 2014(05)
    • [25].代码复查的要点探讨[J]. 技术与市场 2013(06)
    • [26].代码规制:构建安全文明网络的必由之路[J]. 保密科学技术 2013(07)
    • [27].消除隔阂,提升效率——MATHWORKS推出基于MATLAB生成HDL代码的产品[J]. 世界电子元器件 2012(05)
    • [28].C~#托管代码调用非托管代码参数传递的实现方法[J]. 软件导刊 2011(01)
    • [29].恶意代码与信息安全[J]. 硅谷 2011(18)
    • [30].代码证书遗失声明[J]. 大众标准化 2010(12)

    标签:;  ;  ;  ;  

    基于逆向工程的代码重构与分析评估系统的设计与实现
    下载Doc文档

    猜你喜欢