Like conventional software projects, projects in model-driven software engineering require adequate management of multiple versions of development artifacts, importantly allowing living with temporary inconsistencies. In previous work, multi-version models for model-driven software engineering have been introduced, which allow checking well-formedness and finding merge conflicts for multiple versions of a model at once. However, also for multi-version models, situations where different artifacts, that is, different models, are linked via automatic model transformations have to be handled. In this paper, we propose a technique for jointly handling the transformation of multiple versions of a source model into corresponding versions of a target model, which enables the use of a more compact representation that may afford improved execution time of both the transformation and further analysis operations. Our approach is based on the well-known formalism of triple graph grammars and the aforementioned encoding of model version histories called multi-version models. In addition to batch transformation of an entire model version history, the technique also covers incremental synchronization of changes in the framework of multi-version models. We show the correctness of our approach with respect to the standard semantics of triple graph grammars and conduct an empirical evaluation to investigate the performance of our technique regarding execution time and memory consumption. Our results indicate that the proposed technique affords lower memory consumption and may improve execution time for batch transformation of large version histories, but can also come with computational overhead in unfavorable cases.
翻译:与常规软件项目类似,模型驱动软件工程项目需要对开发工件的多个版本进行充分管理,尤其要允许暂时性不一致的存在。在先前工作中,针对模型驱动软件工程提出了多版本模型,该模型能够同时检查多个模型版本的良构性并发现合并冲突。然而,即使对于多版本模型,也需处理不同工件(即不同模型)通过自动模型变换相互关联的情况。本文提出一种技术,用于联合处理源模型多个版本到目标模型对应版本的变换,从而支持更紧凑的表示形式,进而可能提升变换及后续分析操作的执行效率。该技术基于三重图语法这一成熟形式化体系,以及前述称为多版本模型的模型版本历史编码方式。除对完整模型版本历史进行批量变换外,该技术还涵盖多版本模型框架内变更的增量同步。我们基于三重图语法的标准语义证明了方法的正确性,并通过实证评估考察了其在执行时间和内存消耗方面的性能。结果表明,所提技术能降低内存消耗,在大型版本历史的批量变换中可能缩短执行时间,但在不利情况下也会带来计算开销。