Enterprise Engineering Forum

企业工程论坛
Categorized as: 模型工作机制,模型驱动系统,系统架构   Tagged as: ,, , , , , , , , , ,

再说复杂系统的层级原理与模型驱动软件体系结构

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

Excerpt: 对2002年所写,在网络上广泛流传的《复杂系统的层级原理与模型驱动软件体系结构》一文的观点,进行了一些分析和讨论。指出了其中的一些错误或不足。谈论了近些年的一些观察和想法。主要的话题涉及层级性、模型、语言和代码的比较、运用模型的三个关键要素及模型驱动系统、UML与企业/业务建模,MDA等。

引言

又看到一个最近的《复杂系统的层级原理与模型驱动软件体系结构》转贴。在信息爆炸、短寿的互联网,此文能流传这么久,或者也算是个安慰吧。八年之后,再来分析一下文中的一些观点,不知还有多少人会留意。

软件的架构(architecture,那篇文章用了“体系结构”)或平台、语言及建模的层级性原则或观点,现在似乎已经相当普通了。我感觉,常见的认识,基本都滞留在了那里,没有什么实质性的进步。在这个语境中,MDA元模型层次(M0-M3)是好的范例。从二进制编码到汇编语言、高级语言、4GL的层级性,也是MDA喜欢的话题,称为“提升抽象层次”。这些都属于MDA提出时的基础。问题似乎都集中在较高的抽象层次上,曾经感觉很有规律的语言世代“nGL”,排到第4层似乎开始迷惑了;倒是常常漂着的DSL似乎是不少人觉得合适的或喜欢的一种答案(我对此是有怀疑的)。UML仍伴随着诸多争论,然而实实在在地作用着。

看起来,M0-M3元建模层次有些孤独和失落。这样的东西,还需要一些必要的理论基础或背景(而不是商业背景)。流行的“提升抽象层次”说,对于我们希望解决的深层次问题或可期待的效果而言,可说是流于表面或苍白的,甚至可能误导/忽略更实质的问题。这里的一个关键,是“分层的原则”,我们可以提出下面这些问题:

  • 从二进制编码到例如企业/业务模型或领域模型、UML模型,中间到底应该有几层?
  • 什么是最合理或实质性的分层方案或原则?
  • M0-M3的这种建模层次划分,和编程语言/软件平台的层次划分到底可以有怎样的关联?

在基本观念上,建立了“复杂系统层级性”的基本认识后,需要进一步明确:层级划分应当是必要的、内在独立的。一个笼统的原则是:层次越少越好。而层级性的关键课题是找到天然或必须的层次/分界的所在,或者发现目标确定、建构性的层次创建原则。

模型、语言和代码

复杂》一文是看到网上争论即时写的,表述上比较随意,有一些问题。深究之下,“一维语言之后是模型”基本可以说是个伪命题。首先,“一维语言”这个概念并不明确。其次,原文叙述道:

“模型与程序语言主要的区别不在于图形化,也不在于抽象的程度,而在于表达方式突破了“单一顺序”的限制,最简单的例子就是二维表。模型可以更容易和直接地表达复杂的结构”

其中的概念使用,逻辑推理,都有问题。语言和模型,就好象砖瓦和房子,本不应该这样并列来比较。真正想与模型比较的,不是“程序语言”,而是用程序语言写的代码。代码和模型的比较,才是正确话题。再往后看,原文“模型和语言都是对系统的描述”,自然也是错误的提法,对应的命题应当是“模型和代码都是对系统的描述”。原文中,语言(代码)是一维的表达形式这种假设本身是暧昧和可疑的,以此为基础去推论对复杂结构表达力的区别当然也不可靠。这些不可靠的结论,却恰好顺应了一些流行看法,即模型是高层次的抽象,是图形化的、更为直接的表达,代码是低层次的,更抽象的(或形式化的)表达。文中“模型可以更容易和直接地表达复杂的结构”这个命题,也很符合这些看法。这类看法,并不能简单说是错的,但的确隐藏着重要的问题。

今天看来,将模型与语言(代码)的区别归结于表达能力或表示法(比如:图形和编码序列)、抽象层次等,至少是趋于表面化的。我们已经可以在此跨进一步,形成更深层次的理解。这些新的理解,首先需要对基本概念,如模型、语言、代码、乃至“表达”和表达的对象等,重新作出清晰、一致的界定。一些习惯的、直觉的比较本身就已失去了意义。

运用模型的三个关键要素及模型驱动系统

模型的时效性、可进化性及层级性三要素的提出,是《复杂》一文的精华所在,在此基础上提出了“运行期模型驱动系统”,这是实质性的新观点。当时2002年,正值OMG的MDA刚刚出台,发此文的重要动机,并非想参与UML优劣的争论,而是想借这个机会透露一点深入的想法,试探下反应。在随后几年,我逐步将这一块的想法完整地披露出来,见《模型驱动机制与模型驱动系统(MDM&MDS)》(2005),目前对MDM/MDS最完整的一次阐述,见《企业工程、模型及信息系统学术讲座演示文稿》(2007)。在企业工程论坛,有不多的几位朋友一起讨论过相关的话题(见2004年8月2004年11月等老BBS内容存档),在企业应用与信息系统架构及模型驱动系统MDS(一)(二)(三)中,做了一些归纳整理(主要对我自己的观点)。《复杂》发出不久,有位朋友兴奋得直接打电话给我。此外,基本就没有直接、明确的反响或实质性的评论了。我一直在等待,不断从国外的信息中寻找蛛丝马迹,看着一些人一点一点地、部分地接近或提出类似的东西(但尚未看到较为完整的类似理论)。又或者看着一些“主流”的专家,因为对这些基本原理的忽略而在某些问题上争议不休(比如,BPM领域,当然也包括MDA领域)。

近年,我对“模型驱动机制”()等积累了更多的认识,并提出了更一般化的课题,即“模型工作机制”(Model Working Mechanism, )。

面向对象与模型驱动

这也是在那篇文章中点了一下,希望试探一下反响的地方。在这篇文章中,这里是最含蓄的:我在暗示模型驱动与面向对象有某种特殊关系(不是取代,也不是一般的OO建模观点)。这个方面的流行观念,迄今似乎没有什么变化。偶尔会有人发出一些“OO已死”之类的议论。也有函数式语言、面向方面编程(AOP)等,算上MDA,SOA等,似乎都没有影响到“泛OO”的江湖地位。所谓“泛OO”,是我的一种看法:即把原本的,软件程序组织(编程)技术的OO,当成无所不在的方法学乃至哲学,从OOP变成OOA,到OO建模,OO数据库,乃至OO世界观。

对于软件及相关的建模领域,不可能摆脱其本源或本意来讨论OO,否则就是在用相同的符号指称不同的事物——OO族们当然也不是这样的。在这个背景下,仅就建模与模型的应用而言,OO的泛化和夸大也是有害的,可以说,OO的滥觞乃至“哲学自居”,掩盖了一些更深刻的东西。

UML和企业/业务建模

这个话题,一方面没有什么变化:UML是目前几乎唯一成熟和广泛支持的“准一般建模”体系(加一个“准”字,因为它原本就是为软件建模设计的(参见《UML的建模目标是软件还是现实世界》),就像OO一样。另一方面,在更广泛的领域上,建模与各种“”(model-based)的方法与技术[注1]则非常的火热。除了一如既往的“语言”创造热情,还有许多值得关注的发展。我认为,其中最值得关注的焦点之一,是基于本体(ontology)的理论与技术的发展。在纯粹的企业建模领域,也有相关的研究(例如《统一企业建模语言(UEML)》),但总体来看,还有待重要的突破,例如,企业建模本身的定位、用途等基本问题都还没有搞清楚。

相关领域上,业务(流程)建模的发展十分引人注目,并且开始出现泛化的倾向,即由单纯的流程建模,扩大其覆盖内容,包括组织与角色、规则、资源、案件(case),乃至“业务实体”等等。在这个发展迅速、卓有成效的领域上,UML基本没有地盘,这也是对于UML适用性问题的一种事实的说明。

再说一点OMG的MDA

曾经有一次,一位国外专家质疑我,讨论模型驱动的话题,却基本没有提到MDA[注2]。也许在他们眼中,模型驱动就是那个可耻的MDATM的专利,但我在模型驱动原理、应用方面的研究,本来就与MDA没有关系,也完全不是一个套路。事实上,我看到的许多有见识的,基于模型的工作,都不是MDA系的。OMG是一个商业企业的组织,搞点创新研究本来是好事,但是企图把基本概念都给TM了(注册商标),并且在商业机构牢牢操纵的背景下侵占了纯学术、技术创新的阵地,这并非是一种健康的现象,也不可能做出纯正的学问,更不可能垄断一门真正的新知识。

结语

我一直在默默地观察与思考。在国外,不时发现一些东西冒出来,不断地验证、重复着我的思路,这是我一直没有放弃的重要动力。而在国内,这两年,肯进行独立、创新思考的人似乎已经绝发地近乎绝迹了。就总的趋势而言,主流的资源和大脑(当然是指国外的),始终被一些东西占据着,稍早一些,有诸如网络服务(web service)、XML、语义网等热点技术,最近,又有SOA、云计算、围绕着移动终端的种种技术,等等。这使得笔者所思考的一些同样很关键的课题(不只是MDM/),持续地被无视(但也不时地看到某些进展)。当然,对于山寨的中国,这些东西只有偏执的傻瓜才会喜欢吧。

[注1] 我将“基于模型”(model-based),作为比“”(model-driven)更一般化的术语,这与前面提到的模型工作机制(MWM)方面的研究是对应的。
[注2] 我曾经试图以《新一代企业信息系统:从实质性需求分析与研究到模型驱动系统》参与国外的一个“模型驱动企业信息系统”(Model Driven Enterprise Information System, MDEIS)研讨会。他们的名字吸引了我,但那实际就是MDA folks的聚会。缺少了MDS,就凭MDA和MDD,所谓“MDEIS”,在我看来是十分奇怪的命题。

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/2010-11-p2331.html, 2010-11-17[2017-08-22 03:35]

Chicago style: 余彤鹰, "再说复杂系统的层级原理与模型驱动软件体系结构", 企业工程论坛, http://www.ee-forum.org/wp/pub/ty/2010-11-p2331.html(accessed 2017-08-22 03:35)

Posted by   2010-11-17(Original)   Hits 5794   Modified 2010-12-01(Locked)
Prev Post: 
Next Post: 

Related Entries:

提升软件领域模型驱动研究的境界
模型驱动机制与模型驱动应用系统
模型驱动工程的语言与系统国际会议MODELS 2011论文征集
模型驱动机制的意义
元数据驱动的动态网络服务系统与方法:有关模型驱动应用的最新美国专利

Leave a Response

You must be logged in to post a comment.