【问题标题】:Difference between code generation and model-to-text transformation代码生成和模型到文本转换之间的区别
【发布时间】:2014-12-10 08:03:59
【问题描述】:

我试图了解从模型生成代码(例如使用 EMF)和使用例如模型到文本转换之间的具体区别。 Acceleo 或 Xpand。这两个概念都使用模型作为输入,输出是基于模型的代码,以及例如编辑等。直到现在我还没有使用任何 M2T 框架,这就是为什么我在理解这两个概念之间的实际差异时遇到了一些问题。可以请有人在这件事上启发我,进行正面比较会很棒。

谢谢!

【问题讨论】:

    标签: model code-generation transformation


    【解决方案1】:

    它们在概念上是不同的。

    MODEL-TO-TEXT 转换是从模型中提取代码的过程(技术)。这种转换可以通过多种方式定义,具体取决于您的源元模型和目标语言。与TEXT-TO-MODEL相反,提取模型分析源代码。

    例如,您可以在 MODEL-TO-TEXT 转换中从 UML 中提取和生成 Java 代码。

    例如,

    Acceleo 是一个基于标准的工具,它使您可以进行 MODEL-TO-TEXT 的转换。 Acceleo 需要模型(可能是 .xml 格式或标准 .xmi)和您定义的一些模板 (.mtl)。

    使用这些模板和 Acceleo 引擎,您将能够解析您的模型并生成您需要的代码。

    总结一下:MODEL-TO-TEXT是一个流程,Acceleo是一个开发和运行流程的工具。

    希望对你有帮助!

    【讨论】:

    • 感谢您的回复。但是我已经很清楚了。我想了解的是,比方说,使用 EMF 从 Ecore 模型生成模型代码和使用 Acceleo 将 xml 格式的模型转换为(例如 Java)代码之间的逻辑区别。当然,使用两个不同的框架,你达到预期结果的过程也会有所不同。但除此之外,为什么要选择一个概念及其实施来反对另一个?从模型生成代码和将模型转换为代码有什么不同?
    • 我找不到区别,@DanglishElse。我认为我们在用不同的词谈论同一件事。我已经研究过这方面的理论(因为我现在正在开发一个项目),但我看不出有什么区别。对我来说,我与 Acceleo 合作是因为我可以更深入地进行转型并以我的方式实现它。但我认为这与结果或过程无关......这取决于您或您的团队的能力、知识等。我希望我现在解释得更好
    • 对不起,我没有好好提及你。 @DanglingElse
    • 我也看不出这两个概念之间有任何区别,除了它们的工作方式等。似乎这两个概念都从相同类型的输入(模型)实现了相同类型的输出(代码)。但中间肯定有不同的东西。我不能认为它们仅在术语上有所不同。好的,EMF 是一个创建模型的框架,它还提供了从这些模型生成代码的后端,但是为什么不称为模型到文本的转换,因为它的主要方面是建模?此外,EMF 并不是从模型生成代码的唯一工具。如您所见,我有点困惑。
    • EMF 为您提供来自模型的 Java 以及其他功能。 Acceleo 为每个转换(UML2Java、UML2C 或其他)提供了几个不同的模块,并允许您像我一样开发自己的模块。开发您的模块,您将能够自定义您的转换。但是,我坚持认为,它们是不同的工具,没有不同的概念。比如:Eclipse/Visual Studio/NetBeans等有什么区别,用起来不一样,但意义不一样。
    猜你喜欢
    • 2011-10-30
    • 2010-10-25
    • 2015-11-26
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2014-07-12
    • 2014-03-07
    相关资源
    最近更新 更多