Partial Bidirectionalization of Model Transformation Languages

Abstraction

While most model-transformation languages in Model-Driven Engineering are unidirectional, bidirectionality is valuable when artifacts need two-way synchronization. Although several bidirectional transformation engines have been developed, their behavior is generally considered more difficult to formulate and predict compared to the unidirectional case. In the bidirectionalization approach, users write the forward direction of their transformations in the same unidirectional language they are used to, and obtain a system that (besides performing the complete forward transformation) can automatically propagate in the backward direction the target updates. When possible, full bidirectionalization is desirable, but far from trivial.
In this paper we propose a partial bidirectionalization approach, by partial compilation of a unidirectional language into a bidirectional language, and coupled execution of the two language engines. Forward transformation is still complete, whereas the target updates that can be back-propagated are deletions and modifications of a well-defined part of the target model. While the extent of the bidirectionalization depends on the two coupled systems, in this paper we provide a general combination scheme and we briefly discuss its well-behavedness. Then we use our technique to bidirectionalize the ATL model-transformation language on top of the GRoundTram bidirectional graph-transformation system.

本文就ATL的模型双向转换做了讨论,提出了一种在一定条件下能自动化模型双向转换的技术,ATL+GroundTram。

  • 第二节给出了案例,并介绍了GRoundTram工具(内部使用UnQL),GRoundTram有一套离散表示体系没看太明白,大致是能将支持单向转换的ATL代码生成出一个支持双向转换的UnQL代码,然而这种转换只在一定条件下成立,正向转换不难反向难。
  • 第三节分析这种双向化操作的本质:完整的单向与定义明确的双向属性的结合。文中用一张图分析单向转换语言和双向转换语言之间的映射机制,翻译器能将部分内容翻译为双向转换语言,双向转换产生的目标模型必须是相应单向系统的目标模型的子模型。
  • 第四节介绍支持工具,即将ATL集成到GRoundTram上,包括大致流程、支持双向的部分和不支持双向的原因。
  • 第五节对结果评估和讨论,包括代码数量(成功转换的比例)、证明其运行良好(写定义+证明……)和应用在其他语言上的前景。

全文的表述是很抽象的,我理解得很表面,有关论述方面讨论得比较深入,评估部分值得再看。