上期《『这就是UML!』系列内容第2讲:UML通用知识上》中,重点介绍了UML中的事物、UML中的关系和UML中的公共机制。这篇文章将继续介绍UML中的视图和图。
我们可以从多个角度来审视一个系统,一个视图就是表达系统某一方面特征的建模元素的集合。视图的划分并没有严格的标准,因此有很多种分法。
这篇文章沿袭了J.Rumbaugh在《UML参考手册》中的分法。
在每一类视图下使用1~2种特定的图可视化的表示视图中的相关概念及关系。UML中的视图及使用的各种图可以如下图所示:
UML中的视图分类
抛开视图的概念,UML中的图可以分为两大类:结构图和行为图。结构图用于描述系统的静态结构模型,行为图用于描述系统的动态行为模型。结构模型捕获事物及事物之间的静态关系,而行为模型则捕获事物如何交互以产生软件系统所需的行为。
当然上图中给出的仅是UML1.x中的图,在UML2.x中又新增了一些图,如结构图中的包图、组合结构图等。
静态视图用于对问题域中的概念进行建模。因为这种图仅描述结构事物之间的关系,不涉及与时间有关的系统行为,而行为要在其它视图中进行描述。静态视图主要包括类、接口等以及他们之间的关系。
UML静态视图
用例图是参与者从系统外部能观察到的系统功能的模型图。用例是系统中的一个功能单元,可以描述为参与者与系统之间的一次交互。用例图即是描述出系统的参与者以及参与者可以执行的系统用例。
UML用例视图
交互视图描述系统的各个角色之间传递消息的顺序关系,它显示了跨越多个对象的系统控制流程。交互视图包括两种图:序列图和协作图。
1. 序列图
序列图又称顺序图,它是对象之间基于时间顺序的动态交互,它显示了随时间的变化对象之间传送消息的先后顺序。其用途之一是详细地描述用例表达的需求。当参与者执行一个用例行为时,序列图中的每条消息对应了一个类操作或状态机中引发状态转换的触发事件。
UML序列图
上面这个就是一个序列图,描述了一个还书过程。
2. 协作图
协作图对在一次交互中有意义的对象和对象间的链进行建模,其用途可以描述一个类操作的实现。
协作图与序列图都用来描述对象间的交互,但它们的侧重点不同。序列图表示了时间消息的序列,但没有表示静态对象关系,它用于描述系统的顺序行为。而协作图用于表示一个协同中对象之间的关系和消息,以及描述一个操作或分类符的实现。
UML协作图
状态机视图是用于描述一个类的对象可能经历的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命期中满足某种条件的一个时间段建模。当一个事件发生时,它会触发一个状态转换为另外一个状态。
UML状态机视图
活动视图使用活动图来体现。活动图是状态机的一个变体,用于描述执行算法的工作流程中涉及的活动。活动状态代表了一个活动:一个工作流步骤或一个操作的执行。活动图描述了一组顺序的或并发的活动。
UML活动视图
物理视图主要关注系统的非功能性需求,描述软件至硬件的映射。物理视图包含两种视图,分别是实现视图和部署视图。实现视图主要是构件图,部署视图主要是部署图。
1. 构件图
构件图描述组成系统各个构件的接口及依赖关系。
UML构件图
2. 部署图
部署图描述位于节点实例上运行构件实例的安排。节点是一组运行资源,如计算机、打印机、扫描枪、存储器等。
UML部署图
以上讲解了UML中的视图及各视图中使用的具体的图,今后的文章中会继续讲解各种图建模的步骤与方法。
UML往期内容推荐