Enterprise Engineering Forum

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

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

Author: 余彤鹰,  Source: 企业工程论坛,  Published: 2002年5月

Excerpt: 本文强调了层级性对软件系统构建的重要性,指出软件系统体系结构是层级的。点评了模型与语言(指传统编程语言)对系统描述的不同之处。提出模型在软件应用的三个重要特征:模型的时效性、模型的可进化性、模型的层级性以及运行期模型驱动的系统。简述了UML和企业模型之间的区别与联系。

写在前面

最近看到模型驱动在国内渐渐被更多的人注意,前几天又看到一些关于UML优劣和应用方面的争论。作为繁忙工作中的一种休息,从过往的研究笔记中整理一点东西放在这里,与大家交流。

层级理论是构建复杂软件体系的基本原则

诺贝尔奖获得者赫伯特 A. 西蒙曾论述到:“要构造一门关于复杂系统的比较正规的理论,有一条路就是求助于层级理论……我们可以期望,在一个复杂性必然是从简单性进化而来的世界中,复杂系统是层级结构的”。对于软件这样复杂的人造事务,发现层级和运用层级,是分析和构建的基本原则。

软件的体系结构是层级的

粗略地观察一下软件表述方式(语言)的发展:从穿孔纸带(机器的语言)开始,首先是汇编语言,然后是高级语言,再往后有面向对象语言和所谓第四 代语言(FGL)出现……应当留意:每一代的语言并不是在“取代”前一代语言,而是用上一代语言来“写”下一代语言。在这个自然的进化过程中,西蒙所论述 的复杂体系的层级特征清晰地出现了。

进一步看,在由简单到复杂的进化道路上,软件的体系结构、软件开发的体系结构、软件开发工具的体系结构等等,都呈现出层级的特征。“好”的软件体系具有更加清晰的层级。

一维语言之后是模型

这里不想展开讨论这个问题,只是提出一些思考的结果。与自然语言类似,现有的“程序设计语言”是单维的,它的基本语法是以前后顺序为基础的。当 系统的复杂程度提高时,用这样的语言精确描述复杂系统变得越发困难,更遑论有效地修改维护;可视化开发平台、代码管理工具(甚至某种意义上共享组件也可包 括在内)等的出现对此是一种补充,但仍然不是最终的解决方法。软件描述体系进化到这里,面临着一次突变,将有新的物种出现,这个新物种可能就是模型。笔者 认为,模型与程序语言主要的区别不在于图形化,也不在于抽象的程度,而在于表达方式突破了“单一顺序”的限制,最简单的例子就是二维表。模型可以更容易和 直接地表达复杂的结构。

模型和语言都是对系统的描述

传统的编程语言和模型都是一种表述的体系,前者适合表述顺序过程,后者适合表述复杂结构。模型的必要性可以通过下面这个例子看出来:

为了精确地复现,你可以用语言精确地叙述一个立方体,甚至10个立方体组合的形状,但你不会试图用语言描述一栋房子,适当的方式是用工程图纸。

建立企业应用系统的情形可以从以上例子得到启发,企业系统要表述的,主要是复杂的结构,过程占的比重很小,因此,模型就变得更加重要乃至必要了。

OMG组织的MDA战略

OMG最新的战略,是建立模型驱动体系架构(Model Driven Architecture, ),它的意义不是三言两语可以说清楚的,但从软件进化的角度来说,可能带有一种必然性,从上面的讨论,至少可以引申出两个理由:

  1. 更有效地描述复杂系统的需要;
  2. 系统复杂化带来的层级区分的需要。

关于模型的几个分析要素

笔者认为,以下特征对软件体系中模型的运用是十分重要,或者有特殊意义的:

  • 模型的时效性(time-effectiveness of model):关于这一点最重要的区分在于,是“运行期模型”(Run-Time Model),还是开发期模型?这个区别,有点类似于解释的语言和编译的语言间的区别,但其意义却非同一般,笔者认为,“运行期模型”,揭示了模型驱动的本质。
  • 模型的可进化性(evolutionableness of model):是否可以在系统的应用过程中,持续地适应应用环境与需求的变化,不断地由应用者或自适应地对模型进行改进?这是对模型“性能”的一种度量。
  • 模型的层级性(hierarchy of model):正如语言有多个层次一样,没有理由认为模型只有一个层次,当系统足够复杂时,模型的层次划分将会是必要的。

UML和企业模型

运用上面的要素分析一下,可以发现:

UML是“紧贴”高级软件语言(例如C++)的模型体系,其时效是在软件生命周期的开发期间,而不是运行期间,其描述的层级是在软件的组件、对象一级,典型要素是软件中的对象,软件上一个操作的动作等。

企业模型(比如ARIS, CIM-OSA, GERAM),典型的要素是组织,产品,过程等,它们是从企业的业务对象着眼的。二者在层级上有差距,而且企业模型追求的最终结果,是从“开发期模型”到 达“运行期模型”,并且,笔者认为它最终应当是一种可进化的模型,这与UML的设计目标并不符合。

它们两者间并不相互排斥,而应当考虑它们的“层接”。按照笔者的理解,OMG的MDA即使全面实现,也仍然不能做为或替代企业模型,但有可能成为企业模型的基础,这不是模型好坏或能力的问题,而是层级定位的问题。

写在后面

面向对象(Object Oriented, OO)作为软件体系结构方面的一种演进而出现,也曾经被一些人误解为对过程化语言(或面向过程的体系结构)的取代。笔者认为,尽管OO反应了一种世界观, 是一种思维的方式,但并不代表一切;且从层级和进化的观点上,也不应当将它看作是对既有东西的一种简单的取代。模型或模型驱动同样如此,它可能是继面向对 象之后,软件体系结构的又一个重大的进化,但不是用来取代面向对象或结构化设计。笔者在1998年撰写《迈向21世纪的企业信息技术应用》 一文时,对于模型的地位和作用并没有今天这样的认识,现在我坚信,对于企业信息系统这样复杂的系统,要想做到有效、可控制地规划与构建乃至具有“柔性”、 可在运行期间不断地调整,“模型”是必须的,而且,表达与构建复杂企业系统时所需的模型,可能是多层次的,所谓“通用企业平台上的专用执行系统”,就应当 是一个由运行期模型驱动的系统。

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/pub/1998-2009/hm.html, 2002年5月[2017-07-28 04:47]

Chicago style: 余彤鹰, "复杂系统的层级原理与模型驱动软件体系结构", 企业工程论坛, http://www.ee-forum.org/pub/1998-2009/hm.html(accessed 2017-07-28 04:47)

Posted by   2010-01-04(重发)   Hits 6534   Modified 2010-01-04(Locked)
Prev Post: 
Next Post: 

Related Entries:

模型驱动机制与模型驱动应用系统
元数据驱动的动态网络服务系统与方法:有关模型驱动应用的最新美国专利
思于模型
一个模型驱动企业应用平台架构方案框架
模型驱动工程的语言与系统国际会议MODELS 2011论文征集

3 Comments

  1. 这篇短文,是因为当时互联网上的一个关于UML局限性的热烈讨论而写的。因而只是点出了几个关键点,而没有任何论述。此文在互联网上被广泛转载。近十年过去,可以看到国际企业应用领域的主流,正在大踏步地进发到这个领域,诸如此文中点出的模型时效性、可进化性、层级性,已经开始在许多前沿热点实践领域(比如BPM,SOA)凸显出来。但迄今能真正弄明白的,仍然难得看到。对这些要点的认识不清,已经成为目前一些热点领域成长中实际的羁绊。

  2. 加引号精确搜索标题“复杂系统的层级原理与模型驱动软件体系结构”,
    谷歌结果:获得约 22,600 条结果
    百度结果:找到相关网页534篇

  3. 搜索:“复杂系统的层级原理与模型驱动软件体系结构”
    谷歌结果:获得约 6,840 条结果 (用时 0.72 秒)
    百度结果:找到相关网页约1,020篇,用时0.116秒
    搜搜结果:搜索到约375项结果,用时0.17秒

Leave a Response

You must be logged in to post a comment.