基于代码变更的渐进式模型维护技术

基于代码变更的渐进式模型维护技术

论文摘要

随着模型驱动软件工程在工业界的推广,建模已经成为软件开发过程中的常规活动,模型成为重要的工件,是涉众用于交流和讨论、指导开发、测试和维护以及文档化的依据之一。模型驱动的软件维护过程应该针对变更需求修改模型,然后根据模型的变化对代码进行修改和测试。但在工业界大部分项目中,由于多方面原因,使得在应对变更的维护时,仅仅在代码上实施,而未对模型进行维护,导致模型与代码逐步不一致,以至于模型过期失效。针对这一问题,目前常用的做法是从代码反向工程建立模型,这种软件生成的模型往往难以阅读,含有大量的无效信息,而且抛弃了旧版模型中的设计信息。还有的做法就是由人工审核软件系统的维护经过,对模型进行相应的修改,这个过程费时费力,而且容易出错,缺乏自动化工具的支持,反而增加维护成本。本文提出一种基于代码变更的渐进式模型维护技术,以代码的变更为基础,渐进地维护模型,解决上文所描述的问题。通过对代码变更的检测和分析,对模型进行修改和更新,得到可以使用的新模型。采用代码变更分析技术来比较代码之间的差别,利用代码检索技术自动挖掘软件模型和代码之间的追踪关系,通过软件模型所适用的规则集,逐个过滤并处理代码的变更,对模型进行自动或半自动更新。本文所论述的工作主要包括以下内容:1.提出一种对模型和代码追踪关系的重建技术。根据规则和代码查询技术重建模型和代码之间的追踪关系。为模型中的元素和代码实体建立关联,对给定的软件模型,根据模型中元素的名称、类型等信息,建立模型中的元素与代码中的元素之间的对应关系。2.提出了适用于语义分析的代码变更检测技术。采用自定制编译器的前端,生成便于检测语义变更的中间表示形式,之后通过对树形结构的比较,得到结构化的变更内容,便于分析和过滤代码的变更。3.提出了基于代码变更的模型更新方法。制定了对代码变更进行语义分析、修改模型的规则。从有变化的代码中,将非实质变更、非本质变更、非相关变更的代码过滤出去,获得软件模型相关的变更代码。将剩下的代码变更信息、模型中的元素与代码中的元素之间的对应关系翻译为更新操作,产生新模型,根据软件模型所适用的规则、模型中的元素与代码中的元素之间的对应关系、已修改的变更代码,对相关的模型元素进行操作。4.开发了模型渐进式维护的原型工具,进行实例研究。

论文目录

  • 摘要
  • Abstract
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 本文工作
  • 1.3 论文结构安排
  • 第二章 相关研究工作
  • 2.1 模型驱动的软件开发
  • 2.1.1 模型
  • 2.1.2 模型转换
  • 2.1.3 「模型变更」转换
  • 2.1.4 小结
  • 2.2 软件维护和演化的相关技术
  • 2.2.1 往返工程
  • 2.2.2 正向工程
  • 2.2.3 重构
  • 2.2.4 逆向工程
  • 2.2.5 小结
  • 2.3 本章小结
  • 第三章 重建代码与模型的追踪关系
  • 3.1 模型与代码
  • 3.1.1 UML行为模型
  • 3.1.2 代码查询
  • 3.2 活动图与Java代码追踪关系重建
  • 3.3 本章小结
  • 第四章 代码变更检测
  • 4.1 代码变更
  • 4.2 Java代码的预处理
  • 4.2.1 抽象语法树
  • 4.2.2 生成抽象语法树
  • 4.3 基于AST的变更检测
  • 4.4 代码变更检测的结果——编辑脚本
  • 4.5 本章小结
  • 第五章 变更分析及模型更新
  • 5.1 变更分析与过滤
  • 5.2 基于追踪关系分析变更
  • 5.2.1 修复建议
  • 5.2.2 模型更新
  • 5.3 更新确认
  • 5.4 本章小结
  • 第六章 原型与实例研究
  • 6.1 整体框架
  • 6.2 实验测试
  • 6.2.1 工具介绍
  • 6.2.2 实验目的
  • 6.2.3 实验设计
  • 6.2.4 实验结论
  • 6.3 本章小结
  • 第七章 总结
  • 7.1 本文工作
  • 7.2 下一步工作
  • 7.2.1 完善规则系统
  • 7.2.2 完善模型与代码的匹配过程
  • 7.2.3 基于模型的测试
  • 参考文献
  • 简历与科研成果
  • 致谢
  • 相关论文文献

    标签:;  ;  ;  

    基于代码变更的渐进式模型维护技术
    下载Doc文档

    猜你喜欢