背景
在计算机应用领域,“模型驱动”(model-driven)概念在国际上的广泛关注,主要是在对象管理组(OMG)2002年提出的“模型驱动架构”(MDA)及相关的“模型驱动开发”(MDD)等概念之后。更广阔的背景,可追溯到20世纪1980-90年代,各种建模技术的蓬勃发展。其中,面向对象建模最为活跃,“统一建模言”(UML)是其中最具代表性的成果。在这一时期,尤其1997年OMG正式采纳UML 1.1作为建模语言标准以来,软件领域无论是业界/技术开发领域还是理论/学术研究领域,大多数与软件建模有关的研究,都围绕着UML或与之相关。MDA正是在这样的背景下提出的。而UML则是MDA方案中的核心要件。
这种技术与实践领域的发展,同时也推动了它背后的原理与学术研究。在近十多年,除了OMG的MDA,人们对于模型在软件开发中的应用,有着更广阔的研究,对于模型与建模的重视一直在增强。在这个背景之下,关于软件及相关领域的建模与模型方面的各种思想、方法也愈加活跃起来。从近年的情况看,MDA对软件领域的建模与模型的重视与研究起了很大的促进作用,但它并非这些理念或技术(例如模型驱动)的源头,这也是毫无疑问的。其实,早在1980年代,曾经受到广泛重视的“计算机辅助软件工程”(CASE)1就在基于建模与模型的软件开发技术方面做了大量的探索。以“信息系统”为主题的数据与信息建模、概念建模等,则始终是有关建模的研究方面一个重要的传统领域。
围绕模型在软件开发中的作用,除了广泛使用的“模型驱动”(model-driven)概念,还有“基于模型”(model-based)、面向模型(model-oriented)、以模型为中心(model-centric)等等,但“模型驱动”似乎已经得到了更多的认同。“模型驱动工程”(Model-Driven Engineering, MDE)大致就是在这样的背景上出现并逐渐活跃的。它并不是新出现的一种特定的技术,而是软件开发领域各种围绕模型与建模的技术的一种自然的聚集或综合,它的立场和层次,更接近于基本的软件工程。
简介在软件开发领域,“模型驱动工程”(Model-Driven Engineering, MDE)是近年在MDA的背景上活跃起来的一个概念。虽然如此,MDE具有更中性的立场和更广阔、全面的范围,MDA被看作MDE的一个具体和部分的实现途径。MDE并不是新出现的一种特定技术,而是软件开发领域各种围绕模型与建模的技术的一种自然的聚集或综合。一些倡导者认为,它的目标不仅是为软件开发者带来短期效率,还应当降低软件产品对变化的敏感度,提升软件寿命,从而带来长期效率的提升。与面向对象领域对比,MDE研究者提出了“一切皆为模型”的基本原则。除了MDA,1980年代的计算机辅助软件工程(CASE),也是MDE的一个重要前驱。模型驱动工程这一概念的兴起,可能体现出软件工程正在向一个新的阶段演进。
与其他软件开发方法相比,模型驱动2开发方法的特点主要表现在,该方法更加关注为不同的领域知识构造其抽象描述,即领域模型(domain models),基于这些代表领域概念的模型刻画软件系统,并通过自动(半自动)的层层转换完成从设计向实现的过渡,从而最终完成整个系统的开发。
模型驱动工程的优势在于,使用更接近于人的理解和认识的模型,尤其是可视化模型,有利于设计人员将注意力集中在和业务逻辑相关的信息上,而不用过早地考虑与平台相关的实现细节。尤其是在面对不同应用领域时,模型驱动方法强调使用方便灵活的领域相关建模语言(domain-specific modeling language,DSML)构造系统的模型,基于领域知识实现领域专家、设计人员、系统工程师以及架构师等不同人员之间的良好沟通。
技术有了这样的技术积累,人们开始尝试在更高的抽象层次上开发软件。而正在此时,对象管理组(Object Management Group, OMG)提出了以模型为中心的软件开发框架性标准—模型驱动体系结构[2](Model Driven Architecture, MDA),受到了来自学术界和工业界的普遍关注。尽管MDA提出的直接动因是为了解决异构中间件(middleware)平台的互操作障碍问题,但是由它所倡导的以模型为中心进行软件开发的思想很快得到了广泛支持,迅速成为研究热点。MDA整合了OMG在建模语言、模型存储以及模型交换等方面的一系列标准,形成了一套基于模型技术的软件系统开发方法和标准体系。
随着MDA研究热潮的迅速兴起,模型驱动的软件开发这个词语逐渐被越来越多的学者使用。此间,和模型相关的不同字眼也不断出现在不同的学术机构和社区中,如model-driven、model-based、model-related、model-engineering等等。2005年,模型驱动软件开发领域最重要的年会UML series(International Conference on theUnified Modeling Language)正式更名为MoDELS(International Conference on Model DrivenEngineering Languages and Systems),这开始引起了人们对模型驱动软件开发领域自身术语使用上的关注。目前,模型驱动软件开发领域较为普遍使用的术语主要是模型驱动工程(model-driven engineering, MDE)。