模型驱动体系架构介绍
第三部分:MDA 如何影响迭代开发过程 级别: 初级
2005 年 8 月 01 日
本文来自于 Rational Edge:作为迭代开发框架,Rational Unified Process 或称为 RUP,足够灵活地适应多种项目管理方式。随着基于 RUP 的团队开始采用模型驱动体系架构(model-driven architecture,MDA)策略,为成功地采用 MDA,他们需要了解 RUP 中的哪些任务、工件和阶段需要特别关注。
使用模型驱动体系架构(MDA)方法建立解决方案需要改变开发过程。虽然我们的经验是许多当前关于企业软件开发的最佳实践仍旧适用,但是解决开发过程的模型驱动方法要求对这些实践进行一些重要的变更。
在本文(关于 MDA 系列文章的第三部分,也就是最后一个部分)中,我们将探究那些变更以及 MDA 在现代软件开发环境中的应用。在本系列的第一部分中,我们讨论了如何将建模应用到当今的行业中,以及 MDA 与现今系统的相关性。在第二部分中,我们用这种设计并使用 IBM 的 MDA 工具包的观点来检验模型驱动开发的方法。当我们从开发过程的角度来结束本系列文章的时候,我们将分析一个众所周知的开发过程,即 Rational Unified Process 或称为 RUP,并考虑在 MDA 项目上说明并执行过程的方式。
RUP 概述
Rational Unified Process 是当今使用中的实际标准的软件工程过程。1RUP 的目标是确保能够按时并在预算之内生成能够可预见地满足最终用户需求的高质量软件。RUP 为在开发组织内分配任务和职责提供规程式的方法,并已经应用到许多项目中,这些项目有各种大小和复杂度,开发团队有大有小,且开发时间有延续几周的,也有延续几年的。
图 1 以二维的形式说明 RUP 的整个体系架构。水平轴代表时间并显示了过程生命周期的各个方面。生命周期阶段的管理视图在顶部,迭代的软件工程和项目管理视图在底部。垂直轴代表按照逻辑分组的规程,表示过程的静态方面 —— 如何用过程部件、规程、活动、工作流,工件和任务来描述 RUP。
图 1. 规程、阶段和迭代的 RUP 概念
在基于 RUP 项目的任何时间点,都会有按照多种规程发生的活动。区别不同生命周期阶段的东西不是缺少某些规程,而是不同规程在整个工作流中所做出贡献的相对量。活动的混合会随着项目的重点和优先权的变更而随时变化。例如,在早期的迭代中,您将更多时间花费在需求上,而在晚期的迭代中,您将更多的时间花费在实现上。
RUP 阶段和迭代
从管理观点出发,RUP 软件生命周期包括四个顺序的阶段,每个阶段都以一个主要的里程碑结束。进行评估以确定是否达到阶段的目标。令人满意的评估结果可以使项目向下一个阶段进行。简要地说,RUP 生命周期的阶段是:
RUP 和 MDA
目前,RUP 没有提供对如何将软件开发的 MDA 式样整合到整个过程中的具体指导。这不奇怪,RUP 反映当前行业的最佳实践,且只有在领域内很好地确定之后才能编制方法。MDA 是一个新兴的方法,应用到 RUP 项目中重要的 MDA 最佳实践仅到现在才变得可以得到。
然而从我们的经验中可以得来许多重要的方式,我们可以以这些方式用 MDA 项目的最佳实践来增强 RUP。特别是,RUP 的灵魂,即以体系架构为中心的迭代的开发过程,与 MDA 概念保持高度一致,并为在 MDA 方面取得成功提供极好的基础。
然而,存在着一些领域对 MDA 提供额外的适当指导。在此,我们考虑许多重要的关于将 RUP 应用到 MDA 项目中的重要方面。
使用 MDA 定制解决方案框架
当今的企业软件系统很少是(如果有的话)在集成开发环境(IDE)中从零开始,一行行地被开发出来的。相反,它们是通过用具体领域的业务逻辑来扩展现有解决方案框架,通过连接(并利用)来自不同源头的信息,并通过设计丰富环境的用户显示和迭代服务创建而成的。因此,随后的开发方法不是典型的“瀑布”方案,在瀑布方案中,收集需求之后进行分析和设计,并进行系统的实现。相反,此种开发方法是连续地扩展并细化现有的部分解决方案,通过一组迭代向解决方案中添加值来达到所期望的目标。
这些形成了新系统核心的部分解决方案可能出自以下几个来源之一:
倘若这些都是可能的,许多 IT 项目管理人所面对的主要任务是生成对领域的清晰理解,在独立于平台的领域模型(其支持各种类型的分析以确保正确性和一致性)中表达那种理解,并且将那种领域模型映射到一个具体平台上,通过扩展解决方案框架进行实现。模型到模型的转换帮助细化领域,而模型到代码的转换将领域模型映射到具体的解决方案框架上。
在模型到代码的转换中,解决方案框架起到了关键作用,因为它约束并指导那些类型的有意义的转换。例如,如果您正在使用基于 Struts 的应用程序框架,那么正在创建的应用程序就具有容易理解的结构,包括可以实现业务逻辑的众所周知的扩展点。您可以根据该知识创建一组转换。甚至,您可以创建向导驱动的工具来将那些用于包含适当类型信息的领域模型的转换的创建自动化。这就是方法,例如,以这种方法,工具(如 IBM Rational Application Developer)使用聚焦领域的可视化设计工具来自动生成基于 Struts 或 Java ServerFaces(JSF)的应用程序框架的代码。更一般的是,通过将解决方案框架作为系统的基础,撰写模型到代码的转换工作就特别简单了,并且我们获得了结果解决方案的更大的效率、可预测性、重复性和易管理性。
总之,我们再次重申,创建软件很少从零开始,并且模型转换(到另一个模型或代码)可以帮助利用现有的解决方案框架。随着这种建立在现有软件上的方法不断提升,通过帮助我们将扩展并定制那些框架的方法自动化来提升 MDA 的作用和价值。一些人将这种“定制自动化”视为创建不断复杂的系统的唯一可行的选择,并利用我们部署的组件和技术来回应施加给我们的约束。
总结及未来方向
软件和系统开发的模型驱动方法已经使用了一段时间了。最近,关注的焦点集中在如何增大基于 OMG 的 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 产品含有一个灵活的定制模式编写环境,并支持以许多方式编制模型到模型和模型到代码的转换(根据预定义式样和设计目的):
对这些技术的支持是一组帮助组织采用模型驱动方法的最佳实践。与 IBM Rational Software Architect 整合到一起的产品利用基于 RUP 的技术来指导具体环境的开发过程。此外,可以用具体项目的额外实践和来自在线资源(如 IBM developerWorks)的可重用资产来扩充此指导。4
致谢
本文中提到的工作已经由许多人加以贯彻,并且我们很高兴对他们的贡献表示感谢。此处讨论的想法反映出 IBM 中一个很大团队(包括 Grady Booch、Gary Cernosek、Jim Conallen、Pete Eeles、Sridhar Iyengar、Simon Johnston、Grant Larsen、Martin Nally、Jim Rumbaugh 和 Bran Selic)的思想。我们还要感谢 Mike Perrow 对本文进行有帮助地审阅。
参考资料
您可以参阅本文在 developerWorks 全球站点上的 英文原文。
[1] J. Rumbaugh,G. Booch,I. Jacobsen,“The Unified Modeling Language Reference Manual,”Second Edition,Addison-Wesley,2004。
[2] P. Kruchten,“The Rational Unified Process: An Introduction,”Addison-Wesley,1998。
[3] P. Kroll and P. Kruchten,“The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP,”Addison-Wesley,2004。
[4] Evans Data Corp.,“North American Development Survey: Volume 1, "Response to question on "Use of UML in Application Design,”Fall 2003。
[5] Codagen,www.codagen.com。
[6] ArcStyler,www.arcstyler.com。
[7] AndroMDA,www.andromda.org。
[8] openMDX,www.openmdx.org。
注释
1例如参见 P. Kruchten,“The Rational Unified Process: An Introduction,” Addison-Wesley,1998。
2参见 http://www.accenture.com/xd/xd.asp?it=enweb&xd=services%5Ctechnical%5Ccapabilities%5Cgrnds.xml
3要了解更多细节,请参见 http://www.ibm.com/rational/mda。
4要了解更多细节,请参见 http://www.ibm.com/developerworks/cn/rational。
作者简介 Alan Brown 负责 IBM Rational 桌面产品背后的技术策略工作。他还是负责协调 Rational 工具和组成 IBM 软件开发平台的 IBM 产品的领导团队中的关键成员。另外,他负责为公司的模型驱动开发工具制定前景和策略。 由于对 IBM Rational 桌面产品的贡献,以及对软件行业前途的主要贡献,他赢得了杰出工程师的头衔。在超过十年的时间里,Alan 作为行业思想的引导者,通过他的书籍、论文、以及和 IBM Rational 顶级客户的众多交流来引导开发人员经验的发展。要了解更多他的工作和思想,请访问他的 Web 站点 www.jorvik.com/alanbrown/index.html. 1988 年 Alan Brown 于 Newcastle-upon-Tyne 大学取得博士学位。 |
Jim 已经撰写过书籍 Building Web Applications with UML 的两个版本,第一版着重于微软的 Active Server Pages,最近的一版着重于 J2EE 技术。您可以通过 e-mail 联系他。 |