我想将基于 JaMoPP Java 5 元模型的模型(XMI 格式)转换为基于我使用 Xtext 创建的基本 C++ 元模型的另一个模型(也是 XMI 格式)。经过一番研究,我发现了两种用于模型到模型转换的工具:ATL 和 QVT。
两者之间的主要区别是什么?使用其中一个而不是另一个的一些原因是什么?
我想将基于 JaMoPP Java 5 元模型的模型(XMI 格式)转换为基于我使用 Xtext 创建的基本 C++ 元模型的另一个模型(也是 XMI 格式)。经过一番研究,我发现了两种用于模型到模型转换的工具:ATL 和 QVT。
两者之间的主要区别是什么?使用其中一个而不是另一个的一些原因是什么?
使用/选择模型转换语言与使用通用语言 (GPL) 相同:自己的偏好和背景。与 GPL 一样,某些转换语言可能更适合您的编程风格,或者在您的特定领域表现出更好的性能。IT 可能归结为仅支持您的建模技术的一对(例如,您的模型是 csv 文件)。此外,与 GPL 相比,建模语言还很年轻,因此选择时的一个重要问题是工具支持和可能的语言未来发展。
顺便提一下,让我提醒您,QVT 规范实际上定义了三种语言:QVTr、QVTc 和 QVTo。
ATL、QVTr 和 QVTc 都是声明性的,而 QVTo 是命令性的(尽管 ATL 允许一些混合描述)。其他转换语言可以相应地分类,应该是一个重要的决策点。此外,当前对 QVTr 的工具支持有限且不存在 QVTc。我建议多阅读一些关于它们的内容,也许包括其他语言,如 Epsilon 的 ETL、Kermeta 等,并根据您的需要做出选择。