统一建模语言(UML)是一种定义良好的、易于表达的、功能较强的且普遍适用的建模语言。它吸收了软件工程领域的新思想、新方法和新技术。UML的应用领域相当广泛,它不仅可用于建立软件系统的模型,同样也可用于描述非软件领域内的系统模型以及处理复杂数据的信息相同、具有实时要求的工业系统或工业过程等。
作为一种通用的建模语言,UML适用于系统开发过程中从需求规约描述到系统完成后测试的不同阶段。目前,UML已经成为建模语言事实上的工业标准。
在UML问世之前,已经有不少人试图将各种建模方法中不同的概念进行统一。其中Coleman和他的同事们曾努力统一OMT、Booch、CRC方法中的概念,但由于这些方法的原作者没有参与这项工作,其最后的结果是得到了一种新的建模方法。如图5-1所示,UML的开发始于1994年8月,当时Rational软件公司的Booch和Rumbaugh开始着手进行统一Booch方法和OMT方法,以便得到一种统一的建模语言。1995年10月,他们发行了统一方法(UM)的初版。同年秋天,Jacobson加盟联合开发小组,并力图把OOSE方法也统一进来。
作为Booch、OMT(对象建模技术)和OOSE方法的创始人,Booch、Rumbaugh和Jacobson决定开发UML有3个原因:首先,这些方法有许多相似之处,消除它们给使用者造成的混淆是非常有意义的;其次,语义和表示法的统一可稳定面向对象技术的市场,使得工程开发能采用一种成熟的建模语言;再次,统一工作可吸收先前各种建模方法中的优秀成果,以便解决以前没有解决好的问题。
Booch、Rumbaugh和Jacobson在着手进行统一工作时,制订了如下4个目标:
图5-1 UML的发展历程
(1)使用面向对象的概念来构造系统的模型。
(2)建立设计框架与代码框架之间明确的联系。
(3)解决复杂的、以任务为中心的系统内在的规模问题。
(4)开发人与机器通用的建模语言。
开发应用于面向对象的分析和设计的表示法并不像设计一种程序设计语言那么简单。首先,设计者要考虑表示法是不是应该能够表达系统的开发需求,是不是要把表示法设计成形象化的语言。其次,设计者需要在表达能力和简洁程度之间进行权衡,即过于简洁的表示法会限制应用的范围,而过于复杂的表示法又会吓倒刚入门的使用者。如果设计者是在统一已有的一些方法,那么还要照顾到过去的基础,即改变过多会使原来的使用者感到混乱,不作改进又难以吸引更多的使用者。UML的定义力图在这几个方面权衡利弊。
经过Booch、Rumbaugh和Jacobson的不懈努力,UML 0.9和0.91版终于在1996年的6月和10月分别出版。1996年间,UML开发者们向社会各界虚心求教并收到了来自社会各界的反馈。他们据此作了相应的改进,但显然还有很多工作需要完成。同年,OMG(对象管理组)发布了向外界征集关于面向对象建模标准方法的消息。UML的3位创始人开始与来自其他公司的软件工程方法专家和开发人员一道制订了一套使OMG感兴趣的方法,并设计了一种能被软件开发工具提供者、软件开发方法学家和开发人员这些最终用户所接受的建模语言。与此同时,其他一些人员也在做这项富有竞争性的工作。1997年9月1日产生了UML 1.1,并被提交到了OMG进行讨论。
OMG于1997年11月正式采纳了UML 1.1,然后成立任务组进行不断的修订,并产生了UML 1.2、1.3和1.4版本,其中UML 1.3是较为重要的修订版。许多软件开发工具供应商声称他们的产品支持或计划支持UML,软件工程方法学家们也宣布他们将使用UML的表示法进行以后的研究工作。UML的出现深受计算机界欢迎,因为它是由官方出面集中了许多专家的经验而形成的,减少了各种软件开发工具之间无谓的分歧。建模语言的标准化既能促进软件开发人员广泛使用面向对象的建模技术,同时也能带来UML支持工具和培训市场的繁荣,因为不论是用户还是供应商都不用再考虑到底应该采用哪一种开发方法。
总之,UML作为一种建模语言,它具有以下特点:
(1)UML统一了各种方法对不同类型的系统、不同的开发阶段以及不同内部概念的不同观点,从而有效地消除了各种建模语言之间许多不必要的差异。它实际上是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。
(2)UML的建模能力比其他面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。
(3)UML是一种建模语言,而不是一个开发过程。