0

我正在开发简单的桌面应用程序。

能够以类似 UML 的形式观察和修改模型结构非常有用,而 EMF 允许这样做。我想将 EMF 代码生成方法与现有的 GUI 框架(即 Swing)结合起来,但我还没有找到任何现有的示例。

我想知道这是不是因为这不是一个合理的想法?是否有其他方法可以掌握和编辑应用程序背后的模型结构并为具体的 GUI 框架生成代码?

4

1 回答 1

1

模型驱动开发背后的主要思想之一是自动生成系统的替代表示。这些通常被称为模型到模型 (m2m) 和模型到代码 (m2t) 的转换(尽管在某些情况下代码只是被认为是另一种模型)。

EMF 是一个定义元模型的框架。元模型定义了模型的语义。简单地说,元模型定义了可用于对特定域建模的类和属性。例如,UML 元模型允许您创建模型来表示软件系统。模型包括结构(类图),也可以包括行为(序列图、状态机等)。

与 EMF 相关的是,有许多框架和语言能够读取、修改和创建模型。例如,Epsilon 框架提供了各种模型管理语言来处理模型。Epsilon 转换语言 (ETL) 允许您编写程序来执行 m2m 转换,而 Epsilon 生成语言 (EGL) 允许您编写程序来执行 m2t 转换。

因此,要从 UML 模型生成代码到具体的 GUI 框架,您可以使用 EGL 直接生成使用 GUI 框架 API 的代码。另一种方法是首先使用 m2m 转换生成 GUI 模型(您将需要框架的元模型)并执行 m2t。后一种方法可能更受青睐,因为 m2m 转换可以帮助您更好地突破 UML 和所选框架之间的语义差距。

既然你提到了EMF生成,这也是一种可行的方法。但是请注意,EMF 仅生成 Java 代码来表示元模型。在这种方法中,您必须编写所有的 GUI 框架代码,这些代码将使用 EMF 生成的代码作为基础模型。因此,我推荐使用 m2m 和 m2t 方法,您可以在其中生成大部分(如果不是全部)代码。

Epsilon 框架有一个关于 EGL 的简单教程,展示了如何从模型生成 HTML。它将帮助您了解需要什么。如果您的 GUI 框架是 HTML,那么这将是一个不错的起点。

回顾 m2m 和 m2t 的细节需要更多关于你拥有的特定 UML 模型和你打算使用的目标 GUI 框架的细节。

于 2017-07-17T08:14:15.830 回答