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