表示法 表示法
类图 class 对象图 object
包图 package 用例图 use case
顺序图 sd 通信图 comm
定时图 timing 活动图 activity
交互概观图 intover 状态机图 statemachine
构件图 component 部署图 deployment

6.1 概述

交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。
顺序图:顺序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的可视化轨迹。作用:

  1. 确认和丰富一个使用语境的逻辑表达;
  2. 细化用例的表达;
  3. 有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

通信图:UML 2.0中的通信图实际上就是UML 1中的通信图,它强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹。作用:

  1. 通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达;
  2. 显示对象及其交互关系的空间组织结构;
  3. 表现一个类操作的实现。

定时图:采用了一种带数字刻度的时间轴来精确地描述消息的顺序。
交互概述图:是交互图和活动图的混合物。

6.2 如何创建交互图

交互图显示一个对象集合之间的交互和它们之间的关系,包括在它们之间可能发送的消息,从而为系统的动态特性建模。交互图一步步显示用例的流程。它包括流程需要的对象,对象相互发送的消息,哪个活动者启动流程,消息发送的次序等。系统要求实现的所有不同情形都在交互图中记录。通过从用例建模得到用例文档说明、词汇表和用例图,来创建交互图。
交互图=对象(在交互图中可以使用对象名、类名或两者来表示)+消息(通过消息,对象或类可以请求另一个对象或类完成特定功能。)

6.3 顺序图的组成

用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序,是一种强调消息的时序交互图。它由活动者(Actor)、对象(Object)、消息(Message)、生命线( Life-line)和控制焦点(Focus of control)组成。
image.png
对象与角色:最顶上一排矩形框。在交互图中,参与交互的对象既可以是具体的事物,又可以是原型化的事物。
生命线与控制焦点:每个对象都有自己的 生命线,对象生命线是一条垂直的虚线, 用来表示一个对象在一段时间内存在。
对象的创建和销毁:将create消息发送给对象实例,从而即时创建对象,对象创建之后才具有生命线。destroys消息用于销毁对象,给需要销毁的对象发送这个消息,同时在该对象的生命线上放一个“×”符号,表示对象的生命终止。
消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。当传送一个消息时,它所引起的动用是一个通过对计算过程的抽象而得到的可执行语句。
image.png
顺序编号:整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。
交互片断操作符:见《统一建模语言UML(第2版)》P41。

6.4 顺序图的实例

基本的工作流程如下:

  1. 张老师希望通过系统查询某名学生的学科成绩。
  2. 张老师通过用户界面录入学生的学号。
  3. 用户界面根据学生的学号向数据库访问层请求学生信息。
  4. 数据库访问层根据学生的学号加载学生信息。
  5. 数据库访问层根据学生信息和学科科目获取该名学生的分数信息。
  6. 数据库访问层将学生信息和分数信息提供给用户界面。
  7. 用户界面将学生信息和分数信息显示出来。

image.png

6.5 通信图的组成

通信图是对在一次交互过程中有意义对象和对象间的链建模,显示了对象之间如何进行交互以执行特定用例或用例中特定部分的行为。
image.png
通信图组成:活动者(Actor)、 对象(Object)、 连接(Link)、 和消息(Message)。
消息编号:消息的编号有两种,一种是无层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含关系。
迭代标记:用*号表示,表示循环,通常还有迭代表达式,用来说明循环规则。
监护条件:通常是用来表示分支的,也就是表示“如果条件为true,才发送消息”。

6.6 通信图的实例

image.png

6.7 异步消息、并行和竞争

6.8 顺序图和通信图的比较

相同点:顺序图和通信图语义是等价的,可以在不丢失任何信息的情况下,从一种图转换成另一种图。它们都是建模系统的动态特征,建模用例的片断。
不同点:虽然通信图和顺序图均显示了交互,但它们强调了不同的方面。 顺序图清晰地显示了时间次序,但没有显式的指明对象间关系。通信图清晰地显示了对象间关系,但时间次序必须从顺序号来获得。 顺序图最常用于场景显示,通信图更适合显示过程设计细节。

6.9 定时图

image.png
坐标轴交换了位置,改为从左到右来表示时间的推移;
用生命线的“凹下凸起”来表示状态的变化,每个水平位置代表一种不同的状态,状态的顺序可以有意义、也可以没有意义;
生命线可以跟在一根线后面,在这根线上显示些不同的状态值;
可显示一个度量时间值的标尺,用刻度表示时间间隔。

6.10 交互概观图

交互概述图是将活动图和顺序图(序列图)嫁接在一起的图 可以看作活动图的变体,它将活动节点进行细化,用一些小的顺序图来表示活动节点内部的对象控制流。
也可以看作顺序图的变体,它用活动图来补充顺序图。
交互概述图在草图中更加适用,先通过活动图对业务流程进行建模,然后对于一些关键的、复杂度并不高的活动节点进行细化,用顺序图来表示它的对象间的控制流。
不要盲目的使用交互概述图,对于规模稍大的场景,它并不是一个很好的选择,它将使模型的可读性大大降低。
image.png
交互概述图有两种形式,一种是以活动图为主线,并用顺序图表述细节;另一种是以顺序图为主线,并用活动图来表述细节。
如果你是对工作流进行建模,那么应该先采用活动图来表示工作流的活动控制流,然后再通过顺序图来描述其中一些活动节点的对象控制流,阐述更多实现细节 。
image.png
如果你是在为代码的设计、实现进行建模,那么可以先通过顺序图理清对象之间的控制流;然后再通过活动图来表示某些重要的方法、调用的算法流程。

6.11 包图

包的作用是:
1)对语义上相关的元素进行分组;
2)定义模型中的“语义边界”;
3)提供配置管理单元;
4)在设计时,提供并行工作的单元;
5)提供封装的命名空间,其中所有名称必须惟一 。
名称:每个包都必须有一个与其它包相区别的名称。
拥有的元素:在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它包或图。
image.png
包的可见性:可以用“+”来表示“public”,用“#”来表示“protected”……
image.png