这些形成了新系统核心的部分解决方案可能出自以下几个来源之一:
- 一组现有的应用程序。主要的途径是拿到一个现有的解决方案并按照业务需求的指示以有效的方式进行扩展。因此,大量设计工作会涉及对那些现有应用程序如何构建,以及在不损害现有应用程序质量的情况下将有意义的扩展添加到何处的理解。在多数情况下,原有的应用程序并不是以重用为目的而设计的,这一事实使得过程变得复杂。
- 组织所使用的专有应用程序框架。在建立了许多种特殊领域内的相似解决方案之后,一些组织就萃取出核心的应用程序功能作为可重用的专有服务在未来的解决方案中使用。这些服务帮助提高共享公共特性的一系列系统的生产率,并增加未来系统开发的可预测性。举个例子 Accenture 的 General Reusable Netcentric Delivery Solution (GRNDS) 框架2。
- 已获得的应用程序框架,不管是开源的还是商业的。识别一致的体系架构模式(用于设计某些种类的应用程序)已经使得许多技术帮助组织创建符合这些模式的解决方案。结果的应用程序框架可以用作商业产品,也可以用到开源团体中,且可作为独立框架,或与工具绑定来帮助创建、管理及扩展那些框架。例子包括用来创建某些种类的 n 层 J2EE 解决方案的 Struts 及 JSF 框架。
- 一组对封装的应用程序的扩展和定制。许多组织从封装的应用程序的供应商那里得到了对于关键业务过程的综合解决方案。然而,组织需要使那些解决方案满足他们的需要。所以,封装的应用程序的供应商 1) 构造他们的解决方案以支持不同种类的扩展和定制,2) 提供定义明确的 API 以访问封装的应用程序的内部,或者 3) 用详细设计文档、扩展实例和具体包装的工具扩充封装的应用程序。
倘若这些都是可能的,许多 IT 项目管理人所面对的主要任务是生成对领域的清晰理解,在独立于平台的领域模型(其支持各种类型的分析以确保正确性和一致性)中表达那种理解,并且将那种领域模型映射到一个具体平台上,通过扩展解决方案框架进行实现。模型到模型的转换帮助细化领域,而模型到代码的转换将领域模型映射到具体的解决方案框架上。
在模型到代码的转换中,解决方案框架起到了关键作用,因为它约束并指导那些类型的有意义的转换。例如,如果您正在使用基于 Struts 的应用程序框架,那么正在创建的应用程序就具有容易理解的结构,包括可以实现业务逻辑的众所周知的扩展点。您可以根据该知识创建一组转换。甚至,您可以创建向导驱动的工具来将那些用于包含适当类型信息的领域模型的转换的创建自动化。这就是方法,例如,以这种方法,工具(如 IBM Rational Application Developer)使用聚焦领域的可视化设计工具来自动生成基于 Struts 或 Java ServerFaces(JSF)的应用程序框架的代码。更一般的是,通过将解决方案框架作为系统的基础,撰写模型到代码的转换工作就特别简单了,并且我们获得了结果解决方案的更大的效率、可预测性、重复性和易管理性。
总之,我们再次重申,创建软件很少从零开始,并且模型转换(到另一个模型或代码)可以帮助利用现有的解决方案框架。随着这种建立在现有软件上的方法不断提升,通过帮助我们将扩展并定制那些框架的方法自动化来提升 MDA 的作用和价值。一些人将这种“定制自动化”视为创建不断复杂的系统的唯一可行的选择,并利用我们部署的组件和技术来回应施加给我们的约束。
总结及未来方向
软件和系统开发的模型驱动方法已经使用了一段时间了。最近,关注的焦点集中在如何增大基于 OMG 的 MDA 方法的模型驱动技术的自动化。MDA 技术可以使组织为模型到模型和模型到代码的转换构建自定义自动化。利用这些转换,技术专家可以在大型开发团队中分享他们的专家经验。特别地,MDA 提供许多优于其他方法的益处:
- 通过促使将大部分开发人员与他们不需要考虑的技术细节进行分离来执行他们所设计的满足业务需求的企业解决方案的任务来增长开发的生产率。更多时间花在他们手头的工作上:实现系统的业务功能。
- MDA 通过支持已知的行为模式的复用来提高质量,建立在现有的体系架构设计之上,并更有效地利用专家经验。自动化的使用也促进一致性并改进系统设计和实现的质量,特别是解决方案在维护和升级过程的演进中。
- MDA 的可重复的实践集是适合当今迭代开的发需求的,因为 MDA 提高了开发过程和要交付的解决方案本身的可预见性。自动化的使用加快了开发,特别是当开发人员的许多任务是重复且麻烦的时候。
在本系列文章中,我们已经探究了实现基于我们通常所使用的建模技术的 MDA 方法的许多实际的方面,以及对具体的 MDA Toolkit for IBM Rational XDE for Java 的设计和使用。这些经验表明,虽然传统的设计和实现实践与 MDA 项目有关,但是仍旧存在额外的需求需要满足以确保方法是最佳应用的。我们已经描述了许多这样的需求并用实际例子进行了说明。
在第 2 部分中,我们将我们的重要发现分为对 MDA 实际应用的 12 个经验。然而,这些经验不是具体针对一组专一的技术。它们还可以应用于其他的 IBM Rational 工具中。根据我们对现有技术和实践的经验,包括那些在此叙述的,来自 IBM Rational 的最新一组解决方案通过提供我们认为必要的功能来支持 MDA 开发项目。因此,IBM Rational 工具为所有类型的自动化提供了一组丰富的功能,包括预定义的转换和用于定制转换的工具。3支持 MDA 的最新实例出现在 IBM Rational Software Architect 产品中。这是一个大范围的工作平台,它可以用来设计并构建支持企业系统的分析、设计和实现的各个方面的服务,包括复杂模型的编制及支持 UML 可视化建模的管理功能。具体到 MDA 项目,IBM Rational Software Architect 产品含有一个灵活的定制模式编写环境,并支持以许多方式编制模型到模型和模型到代码的转换(根据预定义式样和设计目的):
- 普通插件(使用 Eclipse 插件开发环境)
- Pluglet(小型的,简单的自动安装助手,可以进行快速的一次性自动作业)
- 转换(用来构造大型复杂的转换的基于规则的框架)