以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 软件工程论坛 』 (http://bbs.xml.org.cn/list.asp?boardid=48) ---- 模型驱动体系架构介绍 — 第一部分: MDA 和当今的系统 (http://bbs.xml.org.cn/dispbbs.asp?boardid=48&rootid=&id=12773) |
-- 作者:admin -- 发布时间:12/15/2004 12:21:00 AM -- 模型驱动体系架构介绍 — 第一部分: MDA 和当今的系统 [URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index_eng.shtml]英文原文[/URL] 在最近的几个月很多组织已经开始对模型驱动的体系架构(MDA)[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]1[/URL]进行关注,MDA 是一种应用系统设计和实现的方法。对于几个原因来说这都是非常积极的发展。 MDA 鼓励在软件的开发过程中有效的使用系统的模型,并且它支持创建类似系统的最佳实践的重用。所谓由对象管理组织 (OMG)定义的标准,MDA 是一种组织和管理被自动化工具支持的企业体系架构和用于定义模型和推动不同模型类型之间的转换的服务的方法。 当被 OMG 定义的 MDA 标准和用于创建和进化企业级软件系统的术语在业界被广泛的引用时,仅仅到目前为止, OMG 和它的成员,包括 IBM Rational ,已经能够在 MDA 意味着什么、MDA 将向哪里发展、MDA 的哪些方面对于今天的技术是可能的和如何在实践中利用 MDA 上提供清晰的指导。 本文是这个由三篇文章组成的系列的第一部分,这个系列将覆盖:在现今的工业中建模将如何被使用和 MDA 与当今软件系统的关系(第一部分);MDA 工具支持的分类(第二部分);和在 IBM 的模型驱动的开发技术环境中 MDA 的使用样例(第三部分)。 在这个第一部分的文章中,我们解释了模型和建模的重要性,并介绍了四个关键的 MDA 的原则,同时让你了解一下 IBM 在定义 MDA 方法和支持标准上扮演的领导者的角色[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]2[/URL] 。 有效的企业软件开发 面向服务的体系架构(SOA)。企业解决方案能够被视作通过良好的说明定义了他们的服务接口契约连接的服务联合。结果的系统设计通常被称作面向服务的体系架构(SOAs)。[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]3[/URL] 通过将一个系统组织成为被封装好的服务集合,这些服务可以通过他们定义的服务接口被操作,系统的灵活性被大大的增强了。现在很多组织用一系列的服务和服务之间的相互连接表示他们的解决方案。 OMG 的 MDA 的概念通过 OMG 的构建模型的标准对系统的交互性提供了一种开放的、供应商中立的方法:统一建模语言(UML),Meta-Object Facility (MOF), XML Metadata Interchange (XMI) 和 Common Warehouse Meta-model (CWM) 。企业应用的描述能够使用这些建模标准被建立并被转化到一种主流的开发的或者是私有的平台上,包括 CORBA ,J2EE ,.NET 和基于 Web 的平台。 在我们开始深入的了解 MDA 之前,让我们考虑一下在软件开发中进行建模的基本概念和好处。 建模的基本原理 系统和模型转换 模型、建模和 MDA 追溯到程序设计的最早的日子,在软件工程的世界里,建模有着悠久的传统。多数近期的革新都是关注于符号和工具的,这些工具允许用户非常容易的映射到在特定的操作系统上能够被编译的编程语言代码的方式来表示对软件的架构师和开发人员有价值的系统透视图。这些实践的当前情况是使用统一建模语言(UML)作为首选的建模符号。UML 允许开发团队在相应的模型中获取一个系统的各方面的重要特征。这些模型之间的转换主要是手工进行的。UML 建模工具典型的支持需求的跟踪和模型元素之间的依赖关系,通过支持文档和补充的咨询信息提供如何作为大范围开发工作的一部分来维护同步模型的最佳实践的指导。 一个有用的刻画当前实践特色的方法是看一下用于同步模型和源代码的不同的方法。这在图 1 中被列举[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]7[/URL]图 1 显示了今天软件从业者使用的建模方法的光谱。每一个类型代表了一种独特的帮助软件从业者创建能够运行在特定运行时平台上的应用(代码)和模型与代码之间的关系的模型的使用。[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]8[/URL] 图 1: 建模的光谱 一个改进是在一些适当的建模符号中提供了代码可视化。当开发人员创建或者分析一个应用时,他们通常希望通过一些辅助理解代码的结构或者行为的图形化符号来可视化代码。作为一种编辑基于文本代码的可选方式利用图形化的符号也是可能的, 所以可视化的描写变成了一种代码的直接表示。这种描写有时称作代码模型,或者实现模型。在允许这种画图的工具中(比如,IBM WebSphere Studio 和 Borland Together/J),代码的视图和模型的视图可以被同时显示;当开发人员对其中的一个进行操作时,另一个视图也将立即进行同步。在这种方法中,图与代码表示紧紧的联系在一起,并提供了在代码级别上观看和编辑的可选方法。 建模的更深层次的利益是通过双向工程(RTE)得到的,双向工程提供了一种在描述系统的架构或者设计和代码的模型之间进行双向交换的机制。典型的情况下,开发人员将系统设计细化到一定的详细级别,然后通过应用模型-代码的转换创建第一轮的实现,这通常是手工完成的。例如,一个工作在高级别设计的团队也许会向工作在实现级别上的团队提供设计模型(也许是通过简单的打印出模型图或者为实现团队提供包含模型的文件)。实现团队转换这个抽象、高级别的设计成为详细的设计模型的集合和编程语言的实现。其中表示上的重复将作为错误出现,这些错误既可以在设计模型中更正也可以在实现模型中更正。因此,如果没有良好的纪律,抽象模型和实现模型常常 — 并很快 — 的因为步调不一致而结束。 工具能够自动化的进行最初的转换,也可以在设计模型和实现模型进行演进时帮助他们保持步调一致。典型的,工具可以从用户必须进一步细化的设计模型生成代码的框架。[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]10[/URL] 对代码的更改必须要在一些点上与原有的模型相一致(也就是术语“双向工程”或者 RTE)。为了实现这一点,你需要一种方法来识别出被产生的用户定义的代码;在代码中放置标记就是一种方法。实现这个方法的工具,比如 IBM Rational Rose 能够支持在模型与不同实现语言之间双向提供多种转换服务。 在一种以模型为中心的方法中,系统模型具有足够的细节能够从这些模型中生成整个系统的实现。为了实现这一点,模型也许应该包括,比如持久数据和非持久数据、业务逻辑和表示层元素的表示法。如果存在任何与遗留数据和服务的集成,对那些元素的接口也需要被建模。然后代码生成过程应用一系列的模式将模型转换成代码,通常允许开发人员对被应用的模式进行一些选择(比如,选择各种不同的部署拓扑)。这种方法常常使用标准的或者私有的应用框架和运行时服务,这些应用框架和运行时服务能够通过限制被生成应用的类型使代码生成任务更加容易。因此,使用这种方法的工具典型的专攻于特定应用类型的生成(例如,用于实时嵌入式系统的 IBM Rational Rose Technical Developer 和用于企业 IT 系统的 IBM Rational Rapid developer)。然而,在所有的情况下,模型都是被开发人员创建和操作的主要产物。 一个单独模型的方法在图 1 中的编码/建模光谱的最右端。在这种方法中开发人员把模型纯粹的作为理解业务或者方案领域,或者分析被提议的方案架构的辅助手段。模型通常被作为讨论、交流和在一个单独的组织或者是跨多个组织的项目中进行分析的基础来使用。这些模型常常出现在新工作的建议中,或者装饰在办公室的墙上和在软件实验室中作为一种促进对一些复杂领域理解的方法并建立一个共享的在完全不同的团队中的词汇表和概念集。实际上,一个系统的实现,不论是从打草稿开始还是作为一个已有方案的更新,都可以从模型中分离出来。一个有趣的例子是越来越多的组织将他们的系统的实现和维护进行外包,而他们自己维护整个的企业架构的控制。 MDA:成长中的公认舆论 MDA 的理论 OMG 已经重新关注它的策略、标准和定位来支持 MDA 方法。OMG 正在将 MDA 作为一种开发更加准确的满足客户需要并且在系统的演进中具有更好灵活性的系统方法来促进它的发展。MDA 方法构建在较早期的系统规范标准的工作上,并且为定义相互连接的系统提供一种全面的具有互操作能力的框架。 MDA 原则 以一中定义良好的符号表示的模型是理解企业级方案系统的基础。 对于 MDA 来说,“平台”仅仅是相对特定的视图观点有意义的 –换句话说,一个人的 PIM 可以是另一人的 PSM 。例如,如果一个模型没有规定一种特定的中间件技术的选择,那这个模型对于通讯中间件来说就是一个 PIM 。然而,当一个使用特定的中间件(比如CORBA)被决定使用时,这个模型就被转化成了一个 CORBA 相关的 PSM 。新的模型在 ORB 的选择上也许仍然是一个 PIM – 在目标操作系统和硬件的方面这个模型也是一个 PIM 。如图 2 所示。 图 2: PIM 到 PSM 转化的例子 MDA 的从业者认可转换能够被应用到一个系统的各个方面的抽象描述以添加细节,使描述更加准确,或者在表示法之间进行转换。不同类型模型之间的区别允许我们将软件和系统开发想象成为一系列在不同模型表示法之间的细化。对于包括了在表示系统不同方面的模型之间的细化,对一个模型的细节的添加,或者在不同的模型类型之间的转换的情况下,这些模型和他们的细化是开发方法的重要组成部分。 这里是关于模型的抽象本质和模型所表达的详细实现的三种重要思想: 模型分类。我们能够通过如何表示目标平台的各个方面的术语对软件和系统模型进行分类。在所有的软件和系统开发中都存在着通过语言、硬件、网络拓扑、通讯协议和底层架构等选择所带来的重要约束。这些约束的每一个能够被作为一个方案“平台.”的元素被考虑。MDA 的方法帮助我们关注在被设计方法的业务方面的本质上,而不是在 “平台.”相关的细节上。 OMG 认可对于建模来说元模型和正规语义的重要性,,并且还定义了一系列元建模级别和用于表示元模型的标准语言:Meta Object Facility (MOF)。元模型使用 MOF 正式的定义一系列建模构想的抽象语法。 模型和模型之间的转换将使用开放的标准被说明。作为工业的联盟,OMG 一直拥护多种用于说明系统和系统间的互连性的重要工业标准。通过这些标准,例如 CORBA、 IIOP、 UML 和 CWM ,软件行业能够实现以前不可能的系统互操作能力的级别,此外,工具交换标准,例如 MOF 和 XMI ,也促进了工具的互操作。 一个简单的例子 通常,一系列的规则被建立在代码生成工具中以执行转换。然而,代码生成工具往往允许那些规则通过脚本语言的形式被明确的定义。[URL=http://www-900.ibm.com/developerworks/cn/rational/r-mda/index.shtml#notes]11[/URL] 简单的介绍 MDA 的理论 模型帮助人们理解和交流复杂的思想。 在过去的十多年中, IBM Rational 工具一直强调建模作为一种提升系统抽象级别的方法的重要性,软件的从业者在这个抽象的级别上理解和构建软件解决方案。在过去的几年中,软件开发行业不断的意识到更高级别抽象的价值 — 从在机器语言级别上的代码描述到 MDA 的出现 — 见图 4 。 图 4: 对于软件从业者渐增的抽象级别 这个转变的基础当然是 UML 。它提供了一个公共概念的单一集合,这些公共概念被广泛的应用到软件工业中,很快的结束了当设计软件系统时应该使用哪一种概念集合的长期争论。IBM Rational 在定义 UML 中的领导角色被广泛的认可,IBM Rational Rose 产品在实现 UML 来支持大型软件系统的架构方面也是同样出众的。相同的原则已经被应用到了 IBM Rational Rose XDE 产品家族当中,它合并了丰富的建模环境和面向代码的工具集以为在各种架构类型和特定的目标运行时平台中创建方案提供全面的从业者桌面。 通过 IBM 的支持 OMG 定义的 MDA 可视化建模和开发工具,和随着时间的推移对 MDA 的支持, IBM 将继续这种在建模支持上的传统。 IBM 对 MDA 的观点 IBM 将 MDA 视为一种新兴的关注于一种软件开发的特殊方式的标准和技术的集合 — 它指明了某种模型类型被使用,这些模型如何被准备和不同模型类型之间的关系。 MDA 和 实现 MDA 的工具提供下面的方法: 说明与支持平台无关的系统、 在模型定义和转换上提供了高度自动化的工具,典型的是针对特定的应用领域的,适合这个领域的复杂的转换规则能够被预先定义。 IBM 在 MDA 上的领导地位 详细的标准大量的来自于 IBM 的技术。一个重要的例子,当然是 UML ,它是基于 IBM Rational — 以前的 Rational 软件 ,2003 年被 IBM 收购—的基础上。另外,IBM Rational 在其他的标准上也有着重要的影响,比如,Meta Object Facility (MOF),QVT 标准和新兴的可重用资产规范(RAS)的工作上。 我们已经利用这个机会表明了 IBM Rational 对于 MDA 的观点和我们的工具是如何支持被 OMG 定义的 MDA 的。基本上,当前我们的可视化和开发工具以两种方式支持 MDA:1)通过在特定的方案领域提供高度自动化,和 2)通过允许组织容易的为自己的特定领域构建定制的模型驱动的方法来提供综合目的的能力。随着时间的迁移,我们也将坚定的支持 MDA 。 IBM 将 MDA 视为一系列新兴的关注于软件开发的特殊方式的标准和技术 – 这种开发方式强调在各种抽象的级别上利用建模,最重要的是通过这些模型的信息整合和信息流。这种方法允许开发人员通过使用与他们的信息和决定最匹配的模型类型对项目作出贡献。它也允许高级的项目成员通过他们对模型到模型转换的定义和实现使他们的工作效率最大化。系统的分析人员、测试人员和质量保证人员能够在系统被完成之前利用模型分析系统和系统的性能。 今天,IBM 正积极的与被选择的客户一起工作来改进 MDA 的实践。这些经验将随着时间的推移驱动我们支持 MDA 的方法。 鸣谢 进一步的读物 OMG 的材料。 OMG 是学习、了解 MDA 思想的主要来源(浏览 [URL=http://www.omg.org/mda]http://www.omg.org/mda[/URL])。当前,OMG 的材料趋于既有瞄准在实现规范的技术上的也有 MDA 方法的高级别的白皮书和展示,并且还提供概念和标准的全面介绍。不幸的是,在这两个方面的材料之间的能够让人更多的了解 MDA 在实际的开发方法和开发环境是如何被应用的资源是不够丰富的。你可以参看下面的“参考资料”部分。 A. Kleppe, J. Warmer, and W. Bast, MDA Explained: The Model Driven Architecture Practice and Promise. Addison Wesley, 2003. D. Frankel, Model Driven Architecture: Applying MDA to Enterprise Computing. Wiley Press, 2003. Richard Soley and OMG Staff Strategy Group, “Model Driven Architecture.” November 2000. P. Harman, “MDA: An Idea Whose Time Has Come.” Cutter Consortium, 2003. B. Selic, “The Pragmatics of Model-Driven Development,” IEEE Software, Vol. 20, #5, September 2003. T. Gardner, C. Griffin, J. Koehler, and R. Hauser, “A review of OMG MOF 2.0 Query/View/Transformation Submissions and Recommendations Towards the Final Standard.“ IBM Whitepaper submitted to the OMG, September 17, 2003. D.K. Barry, Web Services and Service Oriented Architectures. Morgan Kaufman, 2003. P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Addison Wesley, 2001. A. Thomas Manes, Web Services: A Manager’s Guide. Addison Wesley, 2003. S. Mellor et al., MDA Distilled. Forthcoming from Addison Wesley, 2004. S. Mellor et al., Executable UML: A Foundation for MDA. Addison Wesley, 2003. J. Warmer and A. Kleppe, The Object Constraint Language: Getting Your Models Ready for MDA, second edition. Addison Wesley, 2003. J. Daniels, “Modeling with a Sense of Purpose.” IEEE Software, pp8-10, Jan/Feb 2002. 注释 2 对于那些有兴趣更多的了解一些在实践中应用 MDA 的人有一些帮助的资源。本文末尾的“进一步的读物”部分提供了一个有用的开始点。 3 D.K. Barry, Web Services and Service Oriented Architectures。 Morgan Kaufman , 2003 。 4 P. Clements and L. Northrop , Software Product Lines: Practices and Patterns 。 Addison Wesley , 2001 。 5 在本文中,一个概念性的框架是指导计划、理解和企业方案实现的重要的概念和机构集合。 6 Richard Soley and OMG Staff Strategy Group , “Model Driven Architecture,” November 2000 。 7 图 1 是基于最初被 John Daniels 使用的图的。 8 许多其他的重要生命周期产物也会从模型驱动方法中受益(比如,需求列表、测试用例和构建脚本)。为了简单起见,我们将经理放在主要的开发周期产物上 – 代码。 9 对于这个讨论我们将忽略代码本身就是一种编程模型实现的事实,这个编程模型将开发人员从在内存、寄存器中操作单个的位的机器代码中抽象了出来。 10 在一些情况下,更多的代码框架根据模型被真实的产生出来。 11 本文中涉及到的更加详细的样例将在本系列文章的后续部分中被讨论。然而,你就=可能希望了解一下 MDA 在商业工具中的例子,比如 IBM Rational Rose Technical Developer 和 Rapid Developer 产品([URL=http://www.ibm.com/rational]http://www.ibm.com/rational[/URL])或者应用这种方法的开放源码的 MDA 工具(比如,AndroMDA ([URL=http://www.andromda.org/]http://www.andromda.org[/URL] 和 Jamda ([URL=http://jamda.sourceforge.net/]http://jamda.sourceforge.net[/URL]))。 12 看一下,比如 [URL=http://www.rational.com/success]http://www.rational.com/success[/URL] 和使用 “model driven.” 关键字进行搜索。 13 使用 IBM Rational 工具创建 MDA 方案的详细例子将会在本系列文章的后续部分被提供。这里提供的是 IBM Rational 工具对 MDA 支持的简单介绍。 |
-- 作者:xmzhy -- 发布时间:12/15/2004 10:54:00 AM -- ding |
-- 作者:老八路 -- 发布时间:1/19/2006 4:27:00 PM -- 楼主,后面两篇呢? |
-- 作者:byy -- 发布时间:3/20/2006 2:06:00 PM -- 顶,刚刚接触,好好学习一下 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |