Enterprise Engineering Forum

企业工程论坛
Categorized as: 模型与建模   Tagged as: ,, , ,

模型驱动工程(MDE):一个初步简介

Author: 余彤鹰,  Source: 企业工程论坛,  Published: 2010-12-30

Excerpt: 在软件开发领域,“模型驱动工程”(Model-Driven Engineering, MDE)是近年在MDA的背景上活跃起来的一个概念。虽然如此,MDE具有更中性的立场和更广阔、全面的范围,MDA被看作MDE的一个具体和部分的实现途径。MDE并不是新出现的一种特定技术,而是软件开发领域各种围绕模型与建模的技术的一种自然的聚集或综合。一些倡导者认为,它的目标不仅是为软件开发者带来短期效率,还应当降低软件产品对变化的敏感度,提升软件寿命,从而带来长期效率的提升。与面向对象领域对比,MDE研究者提出了“一切皆为模型”的基本原则。除了MDA,1980年代的计算机辅助软件工程(CASE),也是MDE的一个重要前驱。模型驱动工程这一概念的兴起,可能体现出软件工程正在向一个新的阶段演进。

背景

在计算机应用领域,“”(model-driven)概念在国际上的广泛关注,主要是在对象管理组织(OMG)2002年提出的“模型驱动架构”()及相关的“模型驱动开发”(MDD)等概念之后。更广阔的背景,可追溯到20世纪1980-90年代,各种建模技术的蓬勃发展。其中,面向对象建模最为活跃,“统一建模语言”(UML)是其中最具代表性的成果。在这一时期,尤其1997年OMG正式采纳UML 1.1作为建模语言标准以来,软件领域无论是业界/技术开发领域还是理论/学术研究领域,大多数与软件建模有关的研究,都围绕着UML或与之相关。MDA正是在这样的背景下提出的。而UML则是MDA方案中的核心要件。

这种技术与实践领域的发展,同时也推动了它背后的原理与学术研究。在近十多年,除了OMG的MDA,人们对于模型在软件开发中的应用,有着更广阔的研究,对于模型与建模的重视一直在增强[1]。在这个背景之下,关于软件及相关领域的建模与模型方面的各种思想、方法也愈加活跃起来。从近年的情况看,MDA对软件领域的建模与模型的重视与研究起了很大的促进作用,但它并非这些理念或技术(例如模型驱动)的源头,这也是毫无疑问的。其实,早在1980年代,曾经受到广泛重视的“计算机辅助软件工程”()就在基于建模与模型的软件开发技术方面做了大量的探索。以“信息系统”为主题的数据与信息建模、概念建模等,则始终是有关建模的研究方面一个重要的传统领域。

围绕模型在软件开发中的作用,除了广泛使用的“模型驱动”(model-driven)概念,还有“基于模型”(model-based)、面向模型(model-oriented)、以模型为中心(model-centric)等等,但“模型驱动”似乎已经得到了更多的认同[2]。“模型驱动工程”(Model-Driven Engineering, )大致就是在这样的背景上出现并逐渐活跃的。它并不是新出现的一种特定的技术,而是软件开发领域各种围绕模型与建模的技术的一种自然的聚集或综合,它的立场和层次,更接近于基本的软件工程[3]

MDE的目标

从更广阔的软件工程立场上看,有必要回答为什么要发展模型驱动工程,或者它能够带来哪些独特的、新的好处。Atkinson与Kühne(2002)针对MDD,提出了两种不同的目标:第一种,是改进开发者的短期生产效率,即从所交付功能数量的方面提升基本软件产品的价值。第二种是改进开发者的长期生产效率,即提升软件产品的寿命(降低其过时的速率)。现有的工具与方法,多数都是针对上述第一层目标的。例如通过建模和从模型自动生成代码,改进软件的生产率。一旦这样所产生的软件需要再次改变,就涉及模型、软件(代码)的更新与同步问题,例如所谓“往返工程”难题。早期CASE的不尽人意,同样也涉及类似的原因(参考Schmidt, 2006)。第二个层次目标的提出,主要是针对“软件变更”的需求,其重点是降低软件产品对于变化的敏感度。“变化”具体可能来自开发人员变更、需求变更、开发平台变更、发布平台变更四个方面。MDE概念活跃的倡导者之一Johan Haan认为以上两个方面就是MDE的主要目标。

MDE与CASE

从MDE的视角看,20世纪80年代活跃的“计算机辅助软件工程”(Computer-Aided Software Engineering, CASE)可以看作早期MDE思想与方法方面一次系统的前驱探索。Schmidt(2006)从这一立场总结了CASE发展的经验教训。CASE在1980年代曾经受到广泛关注和研究,然而虎头蛇尾,最终并没有在业界获得多少实际的应用。CASE的基本想法,是使用通用的图形化软件程序表达(建模)方法,在专门开发的软件平台/工具支撑下实现可视化、自动化(比如代码生成)的软件开发过程,从而降低直接使用高级编程语言(例如C)开发软件的复杂性,提升开发效率。

Schmidt指出,一方面,CASE工具中的通用图形化程序表示法很难映射到底层平台,用以拟补底层平台不足所需的代码数量和复杂性,超过了当时对转换技术的掌握。另一方面,它无法适应广泛的应用领域中复杂的实际开发规模下的系统。它通常不支持并行工程,所以只限于单人的程序编制,或限于对工具所用的文档进行串连访问的小团队。此外,由于缺乏强力的通用中间件,CASE工具需要针对专门的执行环境设计,很难将其生成的代码与其它软件语言或平台集成。CASE工具也无法有效地支持多种应用领域,因为它以一当十的图形化表达太过一般化。

MDE与MDA/MDD

与OMG的MDA相比,MDE具有更中性的立场和更广阔、全面的范围,MDA可以看作是MDE的一种具体和部分的实现途径。众所周知,OMG是软件产业最有影响的商业企业组成的标准化组织之一,推动MDA是2002年以来OMG的主要战略,MDA,MDD等都被OMG保留为注册商标。与更加中立的国际标准化组织以及学术性机构相比,它的背后的动机、目标、范围等,是相对狭隘的。MDA同样如此。而“模型驱动”背后隐藏和关联的原理、技术,无疑有着更广泛而深刻的背景和应用空间,也不是某种团体或企业的专利。“模型驱动工程”(MDE)这个中性的概念,是对这一广阔领域的一个较好概括。这也许是MDE这个专门词组近年渐趋活跃的某种因素之一,但我认为更主要的因素,还是应当归诸于这个领域自身的存在性,其独特价值与聚合力。

另一方面,尽管MDE更加中立和广阔,但现有的重要成果,大多都是与MDA关联的(或者是由MDA的相关研究中提出的),例如“模型驱动”这个概念在国际上的流行,就是在MDA的背景下发生的。还有MOF和元建模层次,以及对提升软件开发的抽象层次的特别强调等。可以说,近年国际IT领域出现的MDE,是在MDA的带动下发展起来的,它一方面,客观呈现为是MDA/MDD相关研究的扩大和延伸,一方面也是软件开发领域种种围绕“模型与建模”的实践、技术与理论的自然融合。

基本观念

作为一个新兴的实践、技术与研究领域,MDE似乎还没有一个公认的、严格意义上的定义。从一些实际的讨论上看,我认为,首先,它可以看作是一种软件工程范式(虽然从原理的角度,这里大部分基本理念,都可以在更广泛的背景例如“系统”概念下展开),进一步,我们发现目前的MDE尤其强调各种模型及其相互的转换在整个软件工程过程中的运用。可以说,MDE的基本观点,是整个软件开发(甚至包括所谓的“维护”)过程,都是某种围绕模型进行的活动:建模、模型转换、模型的“执行”或“解释”以及代码生成、基于模型的往复/逆向工程,等等。将模型放在空前重要,“至高无上”的位置上,是当前MDE最明显的标志之一。Bézivin (2004)将这一原则概括为“一切皆为模型”(everything is a model),与面向对象领域的“一切皆为对象”(everything is an object)形成对照。

需要强调,MDE并不是一个单纯的新概念或理念(比如与MDA/MDD,UML,DDD等相比),而更多地是对软件开发领域种种围绕“模型与建模”的实践与理论的概括或泛指,以一个较新的专用词组指向一个初步涌现的对知识、技术的汇聚领域(甚至迈向学科)。在这种理解下,所有软件开发方面的建模理论、技术等,都可以归纳为它的具体内容。比如领域建模与领域模型驱动开发(DDD)、领域专用模型与语言(DSM/DSL),以及许多计算机语言特别是语义方面的工作,包括本体工程等等,都可以从这种MDE的立场或视角给予解释或更好的定位。例如,从MDE的立场看,MDA与MDD,就是MDE的一种部分的、特定的实现途径。

结语

正如我们在对“企业工程”的讨论中曾经强调的,一类复杂的人造事物,最终都会形成对应的工程学;而成熟的工程学,都会包含对其主体对象的专门的建模体系。例如机械领域的机械制图、电子领域的各种电路图、建筑领域多样而专业的建筑与施工制图/造型方法与技术等等,它们都会在各自的领域内,形成系统、独特、专业化而又通用(领域内的标准化)的方法、技术、工具以及理论基础。

软件工程作为一个相对年轻的领域,其建模体系的形成和重视,仍然是进行中的事情。模型驱动工程(MDE)这一概念的逐渐兴起,可能体现出软件工程正在向一个新的阶段演进。虽然目前看来,对模型的作用与本质的理解与运用,成熟的方法/技术体系的形成等许多方面,都还只是个开始,许多实践仍然不尽人意(例如MDA这些年的发展与反响)。但无论如何,经过近二、三十年的发展,在模型与建模的实践、技术与理论方面,人们取得了丰富的成果,“模型与建模”及各种相关的原理、技术的重要性愈发受到关注。在这个大背景下,模型驱动工程(MDE)在未来可能会受到越来越多的重视。

注释

注[1] 企业工程论坛自1999年发表的,有关模型驱动的企业信息系统及模型驱动机制等方面的工作,也是其中一个小小的例子。虽然我们的研究与MDA(包括现在MDE的主要发展)有完全不同的思路和侧重点,但对“模型驱动”这一概念的使用却有某种一致性。

注[2] 例如,“模型驱动”和“基于模型”都有各自的习惯使用群体,近年“模型驱动”似乎得到了更多的采用,一个明显的例子就是欧洲该领域的主要会议ECMFA主题用语的改变,2010年第六届采用的还是“Model-Based Engineering”,但2011年第七届时,已改为“Model Driven Engineering”。

注[3] 这里叙述的是我个人的心得,但可以发现,一些MDE研究者有类似的观点,例如Favre(2004)指出,OMG的MDA标准只是MDE的一个具体的化身。相反MDE是一个开放和综合性的方法,在同一的途径中包括多种不同的技术空间,它的一个重要方面是在各种技术空间之间建立桥梁,在不同研究群体开发的知识体上综合。

Copyright

  本发布物版权归原作者所有,经原作者许可在企业工程论坛(EE-Forum.org)公开发布,并允许个人及公益性机构非牟利性使用及传播。传播中需保持从标题、署名到各项内容及此声明包括链接地址等完整内容不变。引用或摘编文中内容或观点应符合公认准则。其它机构,或牟利性使用,请预先取得作者许可。保留一切未说明的权利。
  详细说明见: http://www.ee-forum.org/about/copyright ,管理者电子邮箱:admin(at)ee-forum(.)org

Cite Style

GB7714 style: 余彤鹰. 模型驱动工程(MDE):一个初步简介[EB/OL]. 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2010-12-p2374.html, 2010-12-30[2016-05-28 05:57]

Chicago style: 余彤鹰, "模型驱动工程(MDE):一个初步简介", 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2010-12-p2374.html(accessed 2016-05-28 05:57)

Posted by   2010-12-30(Original)   Hits 6866   Modified 2011-01-11(Locked)
Prev Post: 
Next Post: 

Related Entries:

提升软件领域模型驱动研究的境界
思于模型
模型驱动工程(MDE):国际会议,思路或基本课题
模型失败了吗?
一个模型驱动企业应用平台架构方案框架

Leave a Response

You must be logged in to post a comment.