1. UML概述
UML是用于系统的可视化建模语言,尽管它常与建模OO软件系统相关联,但由于其内建了大量扩展机制,还可以应用于更多的领域中,如工作流程、业务领域等。
-
UML是一种语言:UML在软件领域中的地位与价值就像“1、2、3、+、-、…”等符号在数学领域中的地位一样。它为软件开发人员之间提供了一种用于交流的词汇表,一种用于软件蓝图的标准语言。
-
UML是一种可视化语言:UML只是一组图形符号,它的每个符号都有明确语义是一种直观、可视化的语言。
-
UML是一种可用于详细描述的语言:UML所建的模型是精确的、无歧义和完整的。因此,适合于对所有重要的分析、设计和实现决策进行详细描述。
-
UML是一种构造语言:UML虽然不是一种可视化的编程语言,但其与各种编程语言直接相连,而且有较好的映射关系,这种映射允许进行正向工程、逆向工程。
-
UML是一种文档化语言:它适合于建立系统体系结构及其所有的细节文档。
UML的发展历史:
起源与早期发展:
-
20世纪70年代中期:面向对象建模语言最早出现。
-
20世纪80年代末至90年代初:面向对象建模语言迅速发展,数量从不到10种增加到50多种。
-
1994年:Grady Booch、Ivar Jacobson和Jim Rumbaugh开始共同提出UML的构想,旨在统一并提升各种面向对象的建模技术。
-
1995年:完成“统一方法(Unified Method)”0.8版。
-
1996年:Rational公司提出了UML 0.9版本,年底UML已经稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。并且,在美国,截至1996年10月,UML获得了工业界、科技界和应用界的广泛支持,已有七百多个公司表示支持采用UML作为建模语言。
标准化与广泛应用:
-
1997年:UML 1.0版本被OMG(Object Management Group)正式批准成为标准,同年11月,OMG采纳UML 1.1作为基于全面对象技术的标准建模语言。随后,UML 1.2、1.3和1.4版本相继推出。
-
2000年:UML 1.4在语义上添加了动作语义的定义,使得UML规格说明在计算上更加完整。
-
2003年:UML 1.5版本发布。
持续演进与最新版本:
-
2005年:UML 2.0规范形成,定义了许多新语法,特别是元模型的定义。
-
2009年:UML 2.2版本发布。
-
2010年:UML 2.3版本发布。
-
至今:UML已经发展到2.4版本,持续为软件开发领域提供强大的建模支持。
2. UML的结构
2.1 结构概述
构造块:
-
UML有3种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。
-
事物是UML中重要的组成部分,关系把事物紧密联系在一起,图是很多有相互关系的事物的组。
公共机制:
-
公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制4种。
规格说明:规格说明是元素语义的文本描述,它是模型真正的核心。 修饰:UML为每一个事物设置了一个简单的记号,还可以通过修饰表达更多的 信息。
公共分类:包括类元与实体(类元表示概念,实体表示具体的实体)、接口和实现(接口用来定义契约,而实现就是具体的内容)两组公共分类。
扩展机制:包括约束(添加新规则来扩展事物的语义)、构造型(用于定义新的事物)、标记值(添加新的特殊信息来扩展事物的规格说明)。
规则:
-
UML用于描述事物的语义规则分别是为事物、关系和图命名。
-
给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;事物如何正确、一致地相互联系,即完整性;运行或模拟动态模型的含义是什么,即执行。
UML对系统体系结构的定义是系统的组织结构,包括系统分解的组成部分、它们的关联性、交互、机制和指导原则,这些提供系统设计的信息。而具体来说就是指5个系统视图,分别是逻辑视图、进程视图、实现视图、部署视图和用例视图。
-
逻辑视图:以问题域的词汇组成的类和对象集合。
-
进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例描述了所设计的并发与同步结构。
-
实现视图:对组成基于系统的物理代码的文件和构件进行建模。
-
部署视图:把构件部署到一组物理的、可计算的结点上,表示软件到硬件的映射及分布结构。
-
用例视图:最基本的需求分析模型。
2.2 事物
UML中的事物也称建模元素,包括结构事物(structural things)、行为事物(behavioral things,动作事物)、分组事物(grouping things)和注释事物(annotational things,注解事物)。这些事物是UML模型中最基本的面向对象的构造块。
结构事物:
结构事物在模型中属于最静态的部分,代表概念上或物理上的元素。总共有7种结构事物,具体如下:
-
类:类是描述具有相同属性、方法、关系和语义的对象的集合。一个类实现一个或多个接口。
-
接口:接口是指类或构件提供特定服务的一组操作的集合。因此,一个接口描述了类或构件的对外的可见的动作。一个接口可以实现类或构件的全部动作,也可以只实现一部分。
-
协作:协作定义了交互的操作,是一些角色和其他元素一起工作,提供一些合作的动作,这些动作比元素的总和要大。因此,协作具有结构化、动作化、维的特性。一个给定的类可能是几个协作的组成部分。这些协作代表构成系统的模式的实现。
-
用例:用例是描述一系列的动作,这些动作是系统对一个特定角色执行,产生值得注意的结果的值。在模型中用例通常用来组织行为事物。用例是通过协作实现的。
-
活动类:活动类的对象有一个或多个进程或线程。活动类和类很相似,只是它的对象代表的元素的行为和其他的元素是同时存在的。
-
构件:构件是物理上或可替换的系统部分,它实现了一个接口集合。在一个系统中,可能会遇到不同种类的构件。
-
结点:结点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个结点,但有可能从一个结点转到另一个结点。
行为事物:
行为事物是UML模型中的动态部分。它们是模型的动词,代表时间和空间上的动作。总共有两种主要的行为事物,具体如下所述。
-
交互(内部活动):交互是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。交互中组成动作的对象的每个操作都要详细列出包括消息、动作次序(消息产生的动作)、连接(对象之间的连接)等。
-
状态机:状态机由一系列对象的状态组成。交互和状态机是UML模型中最基本的两个动态事物,它们通常和其他的结构事物、主要的类、对象连接在一起。
分组事物:
分组事物是UML模型中组织的部分,可以把它们看成一个盒子,模型可以在其中被分解。UML只有一种分组事物,称为包。包是一种将有组织的元素分组的机制。结构事物行为事物甚至其他的分组事物都有可能放在一个包中。与构件(存在于运行时)不同的是包纯粹是一种概念上的东西,只存在于开发阶段。
注释事物: 注释事物是UML模型的解释部分。</