下载
第一部分
背 景 知 识
这一部分介绍了 U M L 的基本原理,包括 U M L
建模的性质和目标以及U M L 覆盖的所有功能领域。
下载
第1章
UML 综述
本章是U M L 及其应用的一个快速浏览。
1.1 UML简介
统一建模语言( U M L )是一个通用的可视化建模语言,用于对软件进行描述、可视化处
理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对
系统的理解、设计、浏览、配置、维护和信息控制。 UML 适用于各种软件开发方法、软件生
命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并
吸收当今优秀成果的标准建模方法。 U M L包括概念的语义,表示法和说明,提供了静态、动
态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代
码生成器和报表生成器。 U M L 标准并没有定义一种标准的开发过程,但它适用于迭代式的开
发过程。它是为支持大部分现存的面向对象开发过程而设计的。
U M L 描述了一个系统的静态结构和动态行为。 U M L 将系统描述为一些离散的相互作用的
对象并最终为外部用户提供一定功能的模型结构。静态结构定义了系统中重要对象的属性和
操作以及这些对象之间的相互关系。动态行为定义了对象的时间特性和对象为完成目标而相
互进行通信的机制。从不同但相互联系的角度对系统建立的模型可用于不同的目的。
U M L还包括可将模型分解成包的结构组件,以便于软件小组将大的系统分解成易于处理
的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环境中管理模型单元。它还
包括用于显示系统实现和组织运行的组件。
U M L 不是一门程序设计语言,但可以使用代码生成器工具将 U M L 模型转换为多种程序设
计语言代码,或使用反向生成工具将程序源代码转换为 U M L 。U M L 不是一种可用于定理证明
的高度形式化的语言,这样的语言有很多种,但它们通用性较差,不易理解和使用。 U M L 是
一种通用建模语言。对于一些专门领域,例如用户图形界面( G U I )设计、超大规模集成电
路(V L S I )设计、基于规则的人工智能领域,使用专门的语言和工具可能会更适合些。 U M L
是一种离散的建模语言,不适合对诸如工程和物理学领域中的连续系统建模。它是一个综合
的通用建模语言,适合对诸如由计算机软件、固件或数字逻辑构成的离散系统建模。
1.2 UML 的历史
U M L 是为了简化和强化现有的大量面向对象开发方法这一目的而开发的。
1.2.1 面向对象的开发方法
利用传统程序设计语言(如 C o b o l 和 F o r t r a n 语言)的软件开发方法出现于 2 0 世纪7 0 年代,
在8 0年代被广泛采用,其中最重要的是结构化分析和结构化设计方法 [ Yo u r d o n - 7 9 ]和它的变体,
如实时结构化设计方法 [ Wa r d - 8 5 ]等。这些方法最初由C o n s t a n t i n e 、D e Ma r c o 、M e l l o r、Wa r d、
Yo u r d o n 和其他一些人发明和推广,在一些大型系统,特别是和政府签约的航空和国防领域的
系统中取得了一定突破,在这些系统中,主持项目的政府官员强调开发过程的有组织性和开
发设计文档的完备和充分。结果不总是像预料的那么好
—
许多计算机辅助软件工程系统
(C A S E )只是摘录一些已实现的系统设计的报表生成器
—
尽管如此,这些方法中仍包含一
些好的思想,有时在一些大系统中是很有效的。商业应用软件更不愿采用大型的 C A S E 系统和
开发方法。大部分商业企业都独立开发本企业内部使用的软件,客户和缔约人之间没有对立
关系,而这种关系正是大型政府工程的特征。一般都认为商用系统比较简单,不论这种看法
是否正确,反正它不需要经过外界组织的检查。
普遍认为,诞生于1 9 6 7 年的S i m u l a - 6 7是第一个面向对象的语言。尽管这个语言对后来的
许多面向对象语言的设计产生了很大的影响,但是它没有后继版本。 8 0年代初,S m a l l t a l k语
言的广泛使用掀起了一场“面向对象运动”,随之诞生了Objective C、C + + 、E i ff e l 和C L O S 等
语言。起初,尽管面向对象语言在实际使用中有一定的局限性,但它仍然吸引了广泛的注意
力。在Sm a l l t a l k 语言成名约5 年后,第一批介绍面向对象软件开发方法的书籍出现了,包括
Shlaer/Mellor [Shlaer- 8 8 ]和C o a d / Yo u r d o n [ C o a d - 9 1 ] ,紧接着又有 B o o c h [ B o o c h - 9 1 ] 、
Rumbaugh/Blaha/Premerlani/Eddy/Lorensen [Rumbaugh-91]和Wi r f s - B r o c k / Wi l k e r s o n / Wi e n e r
[ Wi r f s - B r o c k - 9 0 ] (注意:图书的版权年代往往包括了上一年度 7月份以后出版的书)。这些著
作再加上G o l d b e rg / R o b s o n [ G o l d b e rg - 8 3 ] 、C o x [ C o x - 8 6 ] 和M e y e r [ M e y e r-88] 等有关程序语言设
计的著作,开创了面向对象方法的先河。第一阶段在 1 9 9 0年末完成。稍晚,讲述 O b j e c t o r y方
法的[ J a c o b s o n - 9 2 ]出版了,它建立在以前的成果的基础上,介绍了一种稍微不同的方法,即
以用例和开发过程为中心。
在以后的5年中,大批关于面向对象方法的书籍相继问世,各有自己的一套概念、定义、
表示法、术语和适用的开发过程。有些书提出了一些新概念,但总的来说各个作者所使用的
概念大同小异。许多后继出版的书都照搬前人,自己再做一些小的扩充或修改。最早的著作
者也没闲着,他们大部分人都更新了自己前期的著作,采纳了其他人一些好的思想。总之,
出现了一些被广泛使用的核心概念,另外还有一大批被个别人采纳的概念。即使在被广泛接
受的核心概念里,在各个面向对象方法中也有一些小的差异。这些面向对象方法之间的细微
比较常使人觉得这些概念不知依据哪个为好,特别是对于非专业的读者。
4计计第一部分 背 景 知 识
下载
1.2.2 统一工作
在U M L 之前,已经有一些试图将各种方法中使用的概念进行统一的初期尝试,比较有名
的是C o l e m a n 和他的同事们[ C o l e m a n - 9 4 ] 所创造的,包括O M T [ R u m b a u g h - 9 1 ] 、B o o c h [ B o o c h -
9 1 ] 、C R C [ Wi r f s - B r o c k - 9 0 ]方法的F u s i o n 方法。由于这项工作没有这些方法的原作者参与,实
际上仅仅形成了一种新方法,而不能替换现存的各种方法。第一次成功合并和替换现存的各
种方法的尝试始于1994 年在Rational 软件公司R u m b a u g h 与 B o o c h的合作。他们开始合并O M T
和Booch 方法中使用的概念,于1 9 9 5年提出了第一个建议。此时, Jacobson 也加入了R a t i o n a l
公司开始与R u m b a u g h 和B o o c h一同工作。他们共同致力于设计统一建模语言。三位最优秀的
面向对象方法学的创始人共同合作,为这项工作注入了强大的动力,打破了面向对象软件开
发领域内原有的平衡。而在此之前,各种方法的拥护者觉得没有必要放弃自己已经采用的概
念并接受这种统一的思想。
1 9 9 6年,O M G 发布了向外界征集关于面向对象建模标准方法的消息。 U M L的三位创始人
开始与来自其他公司的软件工程方法专家和开发人员一道制订一套使 O M G感兴趣的方法,并
设计一种能被软件开发工具提供者、软件开发方法学家和开发人员这些最终用户所接受的建
模语言。与此同时,其他一些人也在做这项富有竞争性的工作。 1 9 9 7 年9月,所有建议终于被
合并成一套U M L方法提交到O M G 。 最后的成果是许多人共同努力的结果。我们发起了创建
U M L 的工作并提出了一些有益的建议,但是这些建议的最终成型是集体智慧的结晶。
1.2.3 标准化
1 9 9 7 年11月,U M L 被O M G 全体成员一致通过,并被采纳为标准。 O M G 承担了进一步完
善U M L标准的工作。在U M L标准通过前,就已经有许多概括 U M L精华的书出版发行。许多软
件开发工具供应商声称他们的产品支持或计划支持 U M L ,若干软件工程方法学家宣布他们将
使用U M L 的表示法进行以后的研究工作。 U M L 的出现似乎深受计算机界欢迎,因为它是由官
方出面集中了许多专家的经验形成的,减少了各种软件开发工具之间无谓的分歧。我们希望
建模语言的标准化既能促进软件开发人员广泛使用面向对象建模技术,同时也能带来 U M L 支
持工具和培训市场的繁荣,因为不论是用户还是供应商都不用再考虑到底应该采用哪一种开
发方法。
1.2.4 核心组员
提出U M L建议或进行U M L 标准修订工作的核心组员有下列人员:
数据存取公司:Tom Digre
DHR 技术公司:Ed Seidewitz
HP 公司:Martin Griss
IBM 公司:Steve Brodsky, Steve Cook, Jos Wa r m e r
第1章 UML 综述计计5
下载
I-Logix 公司:Eran Gery, David Harel
ICON Computing 公司:Desmond D'Souza
IntelliCorp and James Martin 公司:Conrad Bock, James Odell
MCI 系统企业:Cris Kobryn, Joaquin Miller
O b j e c Time 公司:John Hogg, Bran Selic
Oracle 公司:Guus Ramackers
铂技术公司:Dilhar Desilva
Rational 软件公司:Grady Booch, Ed Eykholt, Ivar Jacobson, Gunnar Överg a a r d ,
Karin Palmkvist, James Rumbaugh
SAP 公司:Oliver Wi e g e r t
SOFTEAM 公司:Philippe Desfray
Sterling 软件公司:John Cheesman, Keith Short
Taskon 公司:Trygve Reenskaug
Unisys 公司:Sridhar Iyengar, GK K halsa
1.2.5 统一的意义
“统一”这个词在U M L中有下列一些相互关联的含义:
在以往出现的方法和表示法方面。 U M L 合并了许多面向对象方法中被普遍接受的概念,
对每一种概念,U M L都给出了清晰的定义、表示法和有关术语。使用 U M L 可以对已有的用各
种方法建立的模型进行描述,并比原来的方法描述得更好。
在软件开发的生命期方面。 U M L对于开发的要求具有无缝性。开发过程的不同阶段可以
采用相同的一套概念和表示法,在同一个模型中它们可以混合使用。在开发的不同阶段,不
必转换概念和表示法。这种无缝性对迭代的增量式软件开发至关重要。
在应用领域方面。 U M L适用于各种应用领域的建模,包括大型的、复杂的、实时的、分
布式的、集中式数据或计算的、嵌入式的系统。也许用某种专用语言来描述一些专门领域更
有用,但在大部分应用领域中, UML 不但不比其他的通用语言逊色,相反更好。
在实现的编程语言和开发平台方面。U M L可应用于运行各种不同的编程实现语言和开发平
台的系统。其中包括程序设计语言、数据库、 4 G L 组织文档及固件等。在各种情况下,前部分
工作应当相同或相似,后部分工作因各种开发媒介的不同而有某种程度上的不同。
在开发全过程方面。 U M L 是一个建模型语言,不是对开发过程的细节进行描述的工具。
就像通用程序设计语言可以用于许多风格的程序设计一样, U M L适用于大部分现有的或新出
现的开发过程。尤其适用于我们所推荐的迭代式增量开发过程。
在内部概念方面。在构建U M L 元模型的过程中,我们特别注意揭示和表达各种概念之间
的内在联系并试图用多种适用于已知和未知情况的办法去把握建模中的概念。这个过程会增
强对概念及其适用性的理解。这不是统一各种标准的初衷,但却是统一各种标准最重要的结
6计计第一部分 背 景 知 识
下载