3.3 UML的构成
作为UML完整的概念模型,UML的构成包括其成员和建模规则,即
UML=UML成员+UML建模规则
UML的成员包含了模型元素(model element)、模型图(diagram)和公共机制(common mechanism),即
UML成员=模型元素+模型图+公共机制
3.3.1 UML模型元素
UML模型元素,类似于电子产品原理图里的集成电路符号,是模型图上包含的基本符号。基本模型元素可分为四类:结构模型元素(structural element)、行为模型元素(behavioral element)、成组模型元素(grouping element)和注解元素(annotational element),即
UML模型元素=结构模型元素+行为模型元素+成组模型元素+注解元素
1)结构模型元素
结构模型元素(structural element)(基础包)是UML模型里的名词,是模型的静态组成部分,代表软件系统概念的或物理的存在。例如:类是最常用的一个结构模型元素,代表一系列共享同样的属性(attributes)、操作(operation)、关系和语义的对象(objects)。
UML模型的静态组成部分不是孤立存在的,它们组合在一起互相协作以完成某项任务。因此,结构模型元素之间存在着某种语义上的联系。在UML中,这种联系是关系(relationship)。UML中共有4种关系:关联关系(association)、依赖关系(dependency)、泛化关系(generalization)和实现关系(realization)。
2)行为模型元素
行为模型元素(behavioral element)(行为元素包)是UML模型的动态组成部分,它是模型的动词,代表软件系统在空间和时间上的行为。行为模型元素包括两类:交互(interaction)和状态机(state machine)。
3)成组模型元素
在为复杂的软件系统建模的时候,将大的问题分解为多个子问题分别描述和解决,这就是分治原则。UML提供了支持分治原则的语言成分,即成组模型元素(grouping element)(模型管理包)。成组模型元素只有一类,即模型包(package),模型包是一个通用的手段,用来组织多种语言成分,其中可包含:结构模型元素、行为模型元素和成组模型元素自身。模型包是纯概念性的,只存在于软件系统的开发阶段。
4)注解元素
注解大量存在于机械图和电子线路图中,用来标示产品的工艺要求等。UML中也存在着相似的语言成分,这就是注解元素(annotational element),它只有一种,即标注(note)。标注用来描述施加于一个或多个模型元素的限制,或对模型元素的语义加以说明。标注的图形表示为一个折了角的长方形,在长方形中写标注的内容。标注的内容可以是形式的文本,或非形式的文本,甚至可以是图形。
3.3.2 UML模型图
UML基本模型元素及其关系必须通过某种载体表示,这种载体就是模型图(diagram)。在UML中,模型图是一组UML基本模型元素的图形表示,它通常由一组节点(UML基本模型元素),及节点之间的连线(关系)组成。一般地说,一个UML基本模型元素既可以出现在所有的模型图中,又可以出现在某些模型图中,甚至可以不在任何一个模型图上出现。模型图可以表达软件系统体系结构的五个视图的内容,详细的模型图介绍见3.4和3.5章节。
3.3.3 公共机制
在模型图上对UML成员进行描绘时,存在着共同的描绘方式,它们称为UML公共机制(UML common mechanism)。使用公共机制,可以使得建模的过程易于掌握,模型易于理解。公共机制可分解为四个方面的内容:规格说明(specification)、通用划分(common division)、修饰(adornment)和扩展机制(extensibility)。即
UML公共机制=规格说明+通用划分+修饰+扩展机制
1)规格说明
规格说明体现了UML规则的省略性原则。模型图可以省略某些不重要的内容,但是另一方面,软件模型必须是完备的,以便于软件系统的建造,这就意味着此模型必须具备足够的详细信息以供软件建造之用,这些构成一个完备模型的详细信息就是模型的规格说明(specification)。所有UML模型元素都包含规格说明。在模型图上省略的内容并不代表它不存在于模型之中,模型完整的或完备的信息可以保存在模型的规格说明中。
2)通用划分
在面向对象的设计中,有许多事物可以划分为抽象的描绘(class)和具体的实例(instance)。UML提供了事物的两分法(dichotomy)表达。几乎每种UML成员都有这种类/对象的两分法划分,通常对象和类使用同样的图符,在对象的名字下面加下划线以示区别。还有一种两分法是接口和实现的两分法划分:接口定义了一种协议,实现是此协议的具体实施方法。UML里这样的接口/实现两分法划分包括:接口/类或组件、用例和协同、操作和方法。
3)修饰和扩展机制
UML提供了一系列图形化的标准建模元素,可用于描述软件系统的大多数侧面的特性。但也有可能在某些情形下,由于应用领域特殊性,标准的UML建模元素,无法完整而准确地描述软件系统的分析和设计,这时,需要对UML的标准建模元素进行扩充,以提高模型的表达能力。UML的修饰和扩展机制就是为这个目的而设置的。
标注是UML修饰机制的一个重要组成部分。当用UML的各种建模元素为软件系统建模时,将遇到关于这些建模元素的复杂的语法、语义、原理、约束、注释等,这些内容对表达问题的某一方面很重要,但又无法通过标准建模元素完整地表达。这时,可以使用标注对这些建模元素进行附加说明,例如在使用序列图描述一组对象间的交互时,其中的消息的语义、语法无法在消息的名字字串内完整地表达时,可以用标注的方法进行直观地说明。
在UML中,标注定义为UML的一个图形表示,它用来描述对一个或一组UML建模元素的约束或注释。标注可以作用于任何UML建模元素(如类目、对象、关系、消息等),用于对此建模元素的各方面的特性作补充说明、表示设计分析过程中产生的假设和决定等。标注的内容对被标注的建模元素没有任何语义上的影响,它只起到增强模型可读性的作用。