Enterprise Engineering Forum

企业工程论坛
Categorized as: 系统架构   Tagged as: ,

什么是模型驱动应用

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

Excerpt: 模型驱动应用(model-driven application, MDApp)首先指一种应用系统类型,它基于可演变的应用模型工作,因而可以适应应用对象的变化。另一方面,这个词组也用来指称相应的理念、开发途径、架构或研究。

首先设定一个基本的讨论背景,如图1。它表现了模型驱动应用所处的典型情景,显示了信息技术(左侧)与业务(右侧)之间的鸿沟,包括它们各自的抽象层级系统(呈现为两个方向相反的金字塔)。模型驱动应用基于人可理解/操作且计算机可处理的中介模型,跨越鸿沟,对业务领域和计算机领域建立连接(参看 Situation for Discussions about MDApps此文)。本文将主要基于这一背景,对“模型驱动应用”概念进行讨论。近十多年来,我们一直使用类似的词语,包括企业模型驱动应用,模型驱动应用或信息系统等,并没有见到 其它相似用法的明确定义[1];在近期发布的论文[2]中,对此做了专门界定。本文建议,模型驱动应用(英文model-driven application, 缩写为MDApp)这一词语,作为专门的术语,主要用于两种含义:一种是指特定的系统类型,另一种指与此类型相关的理念、架构(architecture)、途径或相应的研究领域或知识体;在英文表达中,参照诸如“信息系统”(Information Systems)一词的用法,对后者主要使用复数形式(model-driven applications, MDApps)。

situation4mdapp_zh_cn

图1:一个讨论模型驱动应用的情境

模型驱动应用系统

根据论文[2]中的定义,模型驱动应用就是一种模型驱动系统,其功能与行为基于或受控于可演变的应用模型,而这些模型的对象就是应用的对象。这个定义是建立在更一般化的概念,即模型驱动系统和模型驱动机制MDS & MDM)上,它们为模型驱动应用提供了构造性的准则。这一概念的理解涉及三个关键词。

第一个是应用模型(applied model),它定义于模型驱动机制,“应用”意味着该模型作用于应用系统之中,并且其对象(即模型所表达的对象,参见此文)就是用户要通过该系统处理的事物,控制相关的系统系统功能或行为而不是直接对它们建模。

第二个是对象(target),在这双重使用:一是对应着应用模型,一是对应着应用系统,它们指向相同的目标事物;换言之,系统的作用对象就是应用模型表示的对象。例如,一个模型驱动的货仓应用系统,其对象可包括仓位、货品、存货、交货单、交货流程等;那么,这个系统的应用模型就将包括仓位模型、货品模型、存货模型、交货单模型、交货流程模型 [3]

第三个是应用模型的可演变性(evolutionary),即系统运行于应用模型上,同时应用的用户可以在系统运行中,即运行时(runtime),对应用模型进行添加、修改、清除。这意味着系统能够通过使用者对应用模型的更新而适应(adapt)其应用对象的变化。例如,如果需要系统处理某种单据,就需要在应用模型中创建它的模型;而当我们想要改变它的格式,就必须为它创建新的模型,或者对现有的模型做出修改。

此外,按照TOGAF 9 [4]定义,应用(application)是“支持业务功能与服务的,部署并运行的IT系统”。根据这个定义,模型驱动应用可表述为,部署并基于业务(中的事物)模型运行的IT系统,其应用对象就是业务(中的事物),这些事物的模型就是应用模型。

建立一个模型驱动应用的基本构造已经被识别和提炼出来,这就是模型驱动机制。在此基础上,可以设计和实现各种不同的实际系统。对真实的软件来说,模型驱动机制中的操作装置可能划分成几个不同的模块,例如建模器(建模工具)、模型驱动器(引擎)、作业器(或功能引擎)等。图2显示了这样一个模型驱动应用的初步结构,这样的软件系统,可称为模型驱动应用平台(platform)。

basic_mdapp_zhcn

图2:一个基本的模型驱动应用结构(根据[2] Fig. 4.)

在实践中,真实的企业/业务应用平台设计通常比图2复杂得多,并且可能结合其它的架构风格,例如SOA,以及运用许多互相关联的模型驱动机制结构,即多重模型驱动机制。无论如何,模型驱动机制都是决定模型驱动应用关键特征所必需的核心构造。

概括地说,模型驱动应用就是运行于可演变的应用对象模型之上的计算机应用,这种模型称为应用模型。它最重要的特征是对用户的,即其所支持的功能/操作与应用对象事物(业务)的联系建立在这些事物的模型上[5],而这些模型可以由用户在系统运行中更新。这一特征可以概括为“模型即所能”,或参照耳熟能详的短语WYSIWYG,表述为 “what you model is what you handle” (WYMIWYH;要处理什么就对其建模) [6]。客户从软件供应商那里购买的不再是带着所谓“最佳实践”的业务解决方案,而仅仅是业务支撑平台和工具,客户的业务及其独特的需求则反映在属于他们自己的应用模型之中,所以,对具体客户而言,模型就是应用

值得留意,应用模型的对象事物也可以是系统自身(或其部分),例如用户接口(UI)、外观、配置或结构等等;运行于这种模型之上(即反射,reflection),可能尤为软件架构师或程序员关注,对最终用户,这当然也是极其重要的特性,然而,模型驱动应用最有意义的贡献,无疑是基于系统外(常称为现实世界)事物的模型,而与面向固定业务功能设计的常见应用相比,这个“小小的”差异,会导致整个应用生命周期及生态系统的巨大区别。

模型驱动应用理念

在实践中,模型驱动理念具体表现为一种强壮的富架构(architecture),参见MDApps vs. MDA and OO: from an Architectural Perspective, Architecture(架构/体系结构)与营造法式:一个简单的理解等文。由企业应用探索十五年之路线图可窥见,在模型驱动应用背后,有一系列协调一致的原理。 与近几十年流行的观点相比,它实际上反映了一个完全不同的计算机应用“世界观”。这需要更详细的阐述。在论文[2]中(第二章),对此有一个初步的陈述。更多的相关讨论如

这些讨论看起来很零散,但背后有一副完整的图画。

最后,正如TOGAF和图1(Situation)所设,本文的讨论基本上在企业/业务应用的语境中展开,这也一直是我们发现和探讨这个话题的出发点。然而,我们也发现,这些理念和原理具有更广泛的意义,例如,对于最一般意义的信息系统概念,或智能。

—-
[1] 对术语”model driven application”,所见唯一基本相同的使用,是Håvard Jørgensen于2009年在博客上发出的Principles for Model-Driven Applications一文和几篇相关文章。通过互联网搜索的其他结果,大都属于模型驱动开发(例如:model-driven application development)这一类的含义。

[2] Yu, Tong-Ying. “Model-Driven Applications: Using Model-Driven Mechanism to Bridge the Gap between Business and IT.” In Advances and Applications in Model-Driven Software Engineering. Díaz, V.G. et al. eds. IGI Global, August 2013. (参见:模型驱动应用(MDApp):以模型驱动机制跨越业务与信息技术鸿沟

[3] 在面向对象(OO)支配的时代,必须区别应用模型与OO中的类与对象。经验上,OO架构师很容易看到其中相似的方面而忽略其差异——而关键之一却正在于此。

[4] The Open Group. “TOGAF (R) Version 9.” Online: http://pubs.opengroup.org/architecture/togaf9-doc/arch/chap03.html.

[5] 系统的行为或操作与其目标事物的联系可以有多种方式,在这个上下文中,主要是通过人(用户)建立联系。这个话题留待专门讨论。

[6] 相比之下,现有的模型驱动工程(MDE)方法则可概括为“what you model is what (software) you get” (WYMIWYG;要什么软件就建什么模型,参看Model-Driven Applications vs. Model-Driven Engineering)。

Copyright

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

Cite Style

GB7714 style: 余彤鹰. 什么是模型驱动应用[EB/OL]. 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2013-04-p3678.html, 2013-04-12[2017-07-23 10:31]

Chicago style: 余彤鹰, "什么是模型驱动应用", 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2013-04-p3678.html(accessed 2017-07-23 10:31)

Posted by   2013-04-12(Original)   Hits 7137   Modified 2013-04-12
Prev Post: 
Next Post: 

Related Entries:

模型即所能
跳出软件工程:Bezivin的模型驱动工程新视野
模型驱动应用(MDApp):以模型驱动机制跨越业务与信息技术鸿沟
一个模型驱动企业应用平台架构方案框架
Gartner模型驱动应用概念研究基本情况

1 Comment

  1. 看了TY关于模型驱动应用的系列文章,我是欲言又止,费尽思量。
    请参见我的评论:
    http://blog.sina.com.cn/u/2191450162

Leave a Response

You must be logged in to post a comment.