购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 UML概述

在20世纪的80~90年代,面向对象的分析与设计(OOA&D)方法获得了长足的发展,而且相关的研究也十分活跃,涌现了一大批新的方法学。其中最著名的是Booch的Booch 1993、Jacobson的OOSE和Rumbaugh的OMT方法。而UML正是在融合了Booch、Rumbaugh和Jacobson方法论的基础上形成的标准建模语言。

4.2.1 UML是什么

UML(Unified Modeling Language,统一建模语言)是用于系统的可视化建模语言,尽管它常与建模OO软件系统相关联,但由于其内建了大量扩展机制,还可以应用于更多的领域中,例如工作流程、业务领域等。

(1)UML是一种语言: UML在软件领域中的地位与价值就像“1、2、3、+、-、…”等符号在数学领域中的地位一样。它为软件开发人员之间提供了一种用于交流的词汇表,一种用于软件蓝图的标准语言。

(2)UML是一种可视化语言: UML只是一组图形符号,它的每个符号都有明确语义,是一种直观、可视化的语言。

(3)UML是一种可用于详细描述的语言: UML所建的模型是精确的、无歧义和完整的,它适合于对所有重要的分析、设计和实现决策进行详细描述。

(4)UML是一种构造语言: UML虽然不是一种可视化的编程语言,但其与各种编程语言直接相连,而且有较好的映射关系,这种映射允许进行正向工程、逆向工程。

(5)UML是一种文档化语言: 它适合于建立系统体系结构及其所有的细节文档。

4.2.2 UML的发展历史

面向对象建模语言,最早出现于20世纪70年代中期,而在20世纪80年代末开始进入快速发展阶段,截止到1994年,就从不到10种发展到50多种。由于每种语言、方法的创造者都极力推崇自己的成果,于是爆发了“面向对象技术的方法大战”,也从此流传着一句戏言:“方法学家和恐怖分子的差别在于,方法学家不能谈判。”

而在1994年之后,各种方法论逐渐拉开了差距,以Grady Booch提出的Booch方法和James Rumbaugh提出的OMT(Object Modeling Technique,对象建模技术)成为了可视化建模语言的主导。而Ivar Jacobson的Objectory方法则成为最强有力的方法。

Booch是面向对象方法最早的倡导者之一。他在1984年《Ada软件工程》(“SoftwareEngineering with Ada”)一书中就描述了面向对象软件开发的基本问题。1991年,他在《面向对象的设计》(“Object-Oriented Design”)一书中,将以前针对Ada的工作扩展到整个面向对象设计领域。他对继承和类的阐述特别值得借鉴。Booch1993比较适合于系统的设计和构造。

Runbaugh等人提出了面向对象的建模技术(OMT),采用了面向对象的概念并引入各种独立于程序设计语言的表示符号。这种方法用对象模型、动态模型、功能模型和用例模型共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。OMT-2特别适用于分析和描述以数据为中心的信息系统。

Jacobson于1994年提出了面向对象软件工程(OOSE)的方法。其最大特点是面向用例,并在用例的描述中引入了外部角色的概念。用例的概念贯穿于整个开发过程(包括对系统的测试和验证),是精确描述需求的重要武器。目前在学术界和工业界已普遍接受用例的概念,并认为是面向对象技术走向第二代的标志。OOSE比较适合支持商务工程和需求分析。

面对众多的建模语言,首先,用户无力区分不同建模语言之间的差别和使用范围。其次,各种建模语言其实各有长短。第三,由于不同的用户使用不同的建模语言和不同建模语言表达方式上的差异,使得用户之间的沟通方面出现了困难。要解决以上问题就必须在综合分析各种不同建模语言的优缺点及适用情况的基础上统一各种不同的建模语言。

1994年10月,Grady Booch和Jim Rumbaugh开始了这项工作。首先他们将Booch 1993和OMT-2统一起来,并于1995年10月发布了第一个公开版本称为标准方法UM0.8(Unified Method)。1995年秋,OOSE的创始人Ivar Jacobson 加盟到这项工作中,经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本(UML0.9和UML0.91),并将UM重新命为UML。

1996年,UML被OMG提议为OO可视化建模语言的推荐标准,UML被提交。1997年,OMG采纳了UML,一个开放的OO可视化建模语言工业标准诞生了。UML在经历了1.1、1.2和1.4三个版本的演变之后进行了一次大的调整,升级为2.0版标准。目前UML的最新版是2010年11月发布的2.4版。

4.2.3 UML结构

UML的结构如图4-1所示。

图4-1 UML结构示意图

1.构造块

构造块也就是基本的UML建模元素、关系和图。

(1)建模元素: 包括结构元素(类、接口、协作、用例、活动类、组件、节点等)、行业元素(交互、状态机)、分组元素(包)、注解元素。

(2)关系: 包括关联关系、依赖关系、泛化关系、实现关系。

(3)图: 在UML 1.x中包括9种不同的图,当升级为2.x之后,增加至14种图。分为表示系统静态结构的静态模型(包括类图、对象图、复合结构图、构件图、部署图、包图),以及表示系统动态结构的动态模型(包括用例图、活动图、状态机图、顺序图、通信图、定时图、交互概观图、制品图)。

2.公共机制

公共机制是指达到特定目标的公共UML方法,主要包括规格说明、修饰、公共分类和扩展机制四种。

(1)规格说明: 规格说明是元素语义的文本描述,它是模型真正的核心。

(2)修饰: UML为每一个模型元素设置了一个简单的记号,还可以通过修饰来表达更多的信息。

(3)公共分类: 包括类元与实体(类元表示概念,而实体表示具体的实体)、接口和实现(接口用来定义契约,而是实现就是具体的内容)两组公共分类。

(4)扩展机制: 包括约束(添加新规则来扩展元素的语义)、构造型(用于定义新的UML建模元素)、标记值(添加新的特殊信息来扩展模型元素的规格说明)。

3.构架

UML对系统构架的定义是:系统的组织结构,包括系统分解的组成部分、它们的关联性、交互、机制和指导原则,这些提供系统设计的信息。具体来说,是指五个系统视图。

(1)逻辑视图: 以问题域的语汇组成的类和对象集合。

(2)进程视图: 可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。

(3)实现视图: 对组成基于系统的物理代码的文件和组件进行建模。

(4)部署视图: 把组件物理地部署到一组物理的、可计算节点上。

(5)用例视图: 最基本的需求分析模型。

4.2.4 UML的主要特点

UML统一了Booch、OMT、OOSE和其他面向对象方法的基本概念和符号,同时汇集了面向对象领域中很多人的思想,是从优秀的面向对象方法和丰富的计算机科学实践中总结而成的。

目前UML是最先进、实用的标准建模语言,而且还在不断发展进化之中。

UML是一种建模语言而不是一种方法,其中并不包括过程的概念,它本身是独立于过程的,可以在使用过程中使用它。不过与UML结合最好的是用例驱动的、以体系结构为中心的、迭代的、增量的开发过程。

4.2.5 UML的应用领域

作为一种标准建模语言,UML的核心是以面向对象的思想来描述客观世界,具有广阔的应用领域。目前主要应用领域是在软件系统建模,但是它同样可以应用于其他领域,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何系统的动态行为和静态行为进行建模。同时,标准建模语言UML可以对信息系统提供从需求分析到系统维护的整个生命周期提供有效的支持。在需求分析阶段,可以通过用例模型来捕获和组织用户的需求,分析系统对于用户的价值。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,以及这些概念之间的相互协作,并用UML类图来描述。至于类之间的协作关系则可以用交互图和顺序图来描述。在分析阶段,只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行性等问题的类)。由于这些技术细节将在设计阶段引入,因此设计阶段为构造阶段提供更详细的规格说明。

编码阶段的主要任务是将设计阶段的设计结果转换成为实际的代码。在设计阶段需要注意的是不要过早地考虑设计结果要用哪种编程语言实现。如果过早地考虑这个问题,会使设计工作陷入细节的泥潭,不利于对模型进行全面理解。

标准建模语言UML还可以对测试阶段提供有效的支持。不同的测试阶段可以使用不同的UML图作为测试的依据。比如,在单元测试阶段,可以使用类图和类的规格说明来进行测试;在集成阶段,可以使用合作图,活动图和部署图;系统测试和验收测试阶段则可以使用顺序图和用例图来验证系统的外部行为。

总之,标准建模语言UML能够用面向对象的方法描述任何类型的系统,并对系统开发从需求调研到测试和维护的各个阶段进行有效的支持。 HwhcPqWqR/79gHD6PomM8jJtrgLbrHFcRnz5cYM9N5b3yZsrEG+p0mbxQbxZr9ON

点击中间区域
呼出菜单
上一章
目录
下一章
×