科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道专家访谈: Chris Gerken 谈模型驱动的开发

专家访谈: Chris Gerken 谈模型驱动的开发

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

WebSphere® 咨询师 Chris Gerken 回答有关模型驱动的开发的问题。

作者:ibm 来源:ibm 2007年10月8日

关键字: 驱动 应用 技术 中间件

  • 评论
  • 分享微博
  • 分享邮件

引言

WebSphere 咨询师 Chris Gerken 回答了有关模型驱动的开发(Model-Driven Development,MDD)的问题,以及如何创作并使用可执行模式、Java™ Emitter Templates (JET) 和 Design Pattern Toolkit (DPTK) 来生成应用程序源代码。MDD 转换现在被用作可执行模式。它们自动执行约定、最佳实践和指导方针的一致应用。现在,Eclipse 和 RSA 中的重要新功能允许您轻松创作这些模式来生成应用程序源代码(Java、COBOL、JSP、XML、属性文件,等等)。

问:给定一个统一建模语言(United Modeling Language,UML)活动模型,如何创建一个插件来执行模型到模型转换(UML2 到 DSL Ecore),并通过 Java Emitter Templates (JET) 使用该模型中的信息来生成代码,但是必须无缝并以编程方式完成?

答:一般情况下,您应该使用中间相遇 (meet-in-the-middle) 方法。首先构建出您的 JET 转换(如果您仍在使用 Rational Software Architect (RSA) V6.x,则使用 alphaWorks® 推出的 Design Pattern Toolkit (DPTK))。输入模型已经过优化,使得模板中的模型访问变得非常简单。

在编写模型到文本转换之后,您可以编写一个 RSA 转换,用于导航您的 UML 模型并构建一个与 JET 转换所需的输入模型类似的内部模型。RSA 转换中的最后一个规则将组合的内部模型转换为可由 JET 转换容易地使用的格式(XML 字符串或 EMF 内存中的模型),以便以编程方式调用 JET(或 DPTK)。

问:什么是范例,它如何帮助我构建模型到文本转换?

答:范例是您希望您的模型到文本转换所生成结果的代表性示例。它由 RSA 中的范例创作工具使用,并用于快速提取输入模型模式和模型到文本模板。范例创作期间的假设在于,该范例是按照所有适用的最佳实践、指导方针、约定等等来编写的。它演示了该转换所要支持的所有可变点。尽管起初可能觉察不到,但是通过构建并验证一个范例,然后使用它作为转换创作过程的输入,您将会节省大量的时间。

问:何时应该使用 DPTK 而不是 JET 来编写模型到文本转换?

答:如果您计划在 Eclipse 3.2、Rational Application Developer (RAD) V7 或 Rational Software Architect V7 上运行转换,则使用 JET。对于早期版本的 RSA、RAD 或 Eclipse,则使用 DPTK。

问:我想使用部署描述符 (web.xml) 作为 JET 转换的输入模型,但是我还需要一些无法加入部署描述符的其他数据。如何才能做到呢?

答:您可以将附加信息放到第二个 XML 文件中。您的转换将采用两个文件之一作为其主要输入,并将使用内容标记来将第二个文件读取、分析和加载到内存中。在从两个文件加载两个模型之后,您可以执行任何必要的模板处理来生成您的文件。

问:模式与模型到文本转换有什么关系?

答:Grady Booch 曾经将模式定义为对给定上下文中重复出现的问题的解决方案。此定义意味着最佳实践、指导方针和命名约定等全都是模式的形式。由于模型到文本转换可以自动化最佳实践、指导方针和命名约定的应用,因此模型到文本转换(以及模型到模型转换)可以自动化模式的应用。我经常将术语“转换”和“模式”交替使用。

问:我一直想弄明白的一件事情是如何界定我的范例和模式的范围。我希望确保该范围足够大,能够实现模式到文本转换的强大功能,但是又要足够小,以避免使我们的第一个转换就不堪重负。

答:可以使用多种方法来界定您的范例范围:

  • 首先:“模式是对给定上下文中重复出现的问题的解决方案。”解决方案可以采用最佳实践、约定、指导方针、设计文档等形式。寻找解决某个特定问题的文件组,例如如何保存某个对象(包括文档和 j-unit 测试文件)。当然,在您的整个应用程序套件中解决此问题的次数越多,效果就越好。
  • 如果生成各个文件所需的两个模型数据集合是重叠的,则我可以说这两个文件“MDD 相关”(我的术语)。示例包括一个文件的类或文件名在另一个文件的源代码中被调用、相同的属性名称(或变体,如 getter 和 setter 名称)出现在两个文件的源代码中,等等。我们还可以说 MDD 关系是强(接口和实现类)的或弱(Java 项目的 Jar 名称和引用 admin 脚本)的。您需要寻找强 MDD 相关的文件组(考虑数学上的闭包)。

这两种方法最终都确定相同的文件组。为了找到一个理想的入门范例,我将寻找一个包含大约 20 个文件的文件组。我观察到某个模式中大约 80% 的模板无关紧要,15% 的模板简单且易于完成,另外 5% 的模板则相当粗糙。

如果您是经验更丰富的模式创作者,您可以查看文件,提一些问题,并获得模板数量和复杂性以及模型大小和形状的准确判断。我会为其他看不见的复杂性添加风险因素,例如主题专家和模式主题专家不熟悉其他主题专家的领域。

为进一步简化,我会为您的第一个转换构建 5 至 10 个模板。如果再多,您也只是在花更多的时间证实同样的结果。如果再少,则不会看到模型到文本转换的强大功能。

问:我有一些 Java 类,它们将是用于 JET 生成的真正理想候选者,但是每个类中还有许多将会很难生成的业务逻辑。我想我可以一次生成类源代码,并让开发人员添加他们的业务逻辑,但是如果我必须重新生成源代码,如何才能避免改写那些业务逻辑呢?

答:您需要使用 JET 中的 userRegion 标记。此标记标识所生成的文本中可由用户修改的部分。如果再次运行转换,开发人员所做的更改会在重新生成过程中保留下来。简而言之,您可以创建模板来生成源代码,标识所生成的源代码中开发人员可能希望修改的部分,并用 userRegion 标记来包括那些部分。

问:哪些类型的应用程序是使用模型到文本转换生成的?

答:由于 RSA V7 是最近才推出的,大多数模型到文本转换都是使用 DPTK 编写的。已生成的应用程序和组件包括自定义 Portlet、J2EE 应用程序、Eclipse 组件(向导、对话框、帮助、富客户端)、优化的数据库访问和其他特定于客户的应用程序。

问:我为 RSA V6 编写了许多 DPTK 模式。将它们迁移到 JET 和 RSA V7 的最容易方法是什么?

答:RSA V7 和 RAD V7 都附带了一个 JET 标记库,称为 DPTK 兼容层。此标记库包含了外观和行为都与 DPTK 标记类似的标记。然而,这些标记是在 JET 之上实现的。

在将您的模式加载到 V7 工作区中以后,您可以将 DPTK 模式“Add JET Behavior”应用于您的 DPTK 模式,以添加将该转换调整为 JET 转换所需要的正确属性、设置和文件夹。

问:新的 JET 标记有何出众之处?我已经可以使用嵌入式 Java 来做同样的事情。

答:与您自己可以使用嵌入式 Java 来提供的模板流控制(迭代、条件处理、模型访问,等等)相比,JET 标记提供了相同级别的模板流控制,但它们是以与语言无关的方式实现的。这使得 COBOL、C 程序员和系统管理员无需学习 Java 即可创作转换。

有些标记还隐藏了大量阻碍嵌入 Java 的复杂性。例如,文件标记(将模板应用于模型并在新的 Eclipse 资源中存储最终内容)还与配置管理插件和其他编辑器交互,以确保在 Eclipse 中正确创建所生成的文件。

问:您面对着多个转换:UML2Java、JET 和 DPTK?RSA 中的最明显策略是什么?

答:所要使用的模型到文本转换技术取决于您使用的 Rational 工具版本。第一选择是 EMFT JET(在 Eclipse 3.2.0 和 Rational V7 及更新版本中可用)。如果您没有运行这些平台之一,则您应该使用 DTPK。

问:什么是模式存储库 (Pattern Repository),它与资产存储库(Asset Repository,RAS)如何相关?同样,这是 RSA 中的一个令人混淆的方面。

答:模式存储库是一个服务器(尽管它可以在您的本地计算机上),其中保存了作为可重用资产规范(Reusable Asset Specification,RAS)文件来部署的模式。RAS 文件不过就是一个 zip 文件,其中具有一些关于 RAS 文件中资产性质和用途的附加元数据,以及描述应该在将 RAS 资产导入工作区时采取的任何安装步骤的元数据。特殊操作可以包括 Eclipse 插件安装或将文件导入工作区。这些操作是自动运行的。当然,RAS 文件也可以包含其他类型的资产。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章