时序图主要用于展示对象之间交互的顺序。

时序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。
当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列

组合元素

在UML建模中,时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等。

  • 角色:可以是人或者系统;
  • 对象:指系统中某个模块、类、类的实例等,对象的命名包含三种方式:1)对象:类名;2):类名;3)对象名。

通常,为作图清晰,对象的排列遵循以下两个原则:1. 把交互频繁的对象尽可能的靠拢;2. 把初始化整个交互活动的对象放置在最左端;

  • 生命线:从对象图标向下延伸的一条虚线,表示对象存在的时间。
  • 控制焦点:又称为激活期,表示时间段的符号,在这个时间段内对象将执行相应的操作。
  • 消息:用于对象间传递信息,消息代表的是责任分配而不是数据流动。例如,A指向B是指A调用B做某事,做某事是B的一个责任。消息可分为:
  1. 同步消息(Synchronous Message):又称调用消息,消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;
  2. 异步消息(Asynchronous Message):消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的;
  3. 返回消息(Return Message): 返回消息表示从过程调用返回;
  4. 自关联消息(Self-Message): 表示方法的自身调用以及一个对象内的一个方法调用另外一个方法。

组合消息

关键字

作用

ref

引用其他地方定义的组合片段

alt

在一组行为中根据特定的条件选择某个交互

opt

表示一个可选的行为

break

提供了和编程语言中的break类拟的机制

par

支持交互片段的并发执行

seq

强迫交互按照特定的顺序执行

strict

明确定义了一组交互片段的执行顺序

neg

用来标志不应该发生的交互

region

标志在组合片段中先于其他交互片断发生的交互

ignore

明确定义了交互片段不应该响应的消息

consider

明确标志了应该被处理的消息

assert

标志了在交互片段中作为事件唯一的合法继续者的操作数;

loop

说明交互片段会被重复执行

代码示例

java 时序图 方法调用关系 时序图对象_java 时序图 方法调用关系

@startuml

header 示例

participant "web服务" as web
participant "用户服务"
participant "基础服务"

group 会员升级
    activate web
    web -> web: 获取当天满足条件的用户
    note left: 定时器
    loop 1,n
       web -> 基础服务: 查询用户信息(rpc)
       activate 基础服务
       基础服务 --> web: 用户信息
       deactivate 基础服务
       opt 用户当前是会员
          web o-> 用户服务: 发送通知短信(http)
          activate 用户服务
       end
       alt 用户当前是大会员
          web -> 用户服务: 会员续约(http)
          用户服务 --> web: 返回结果
       else 非会员
          web -> 用户服务: 升级会员(http)
          用户服务 --> web: 返回结果
       end
       deactivate 用户服务
    end
    deactivate web
end

@enduml

参考资料:

  1. plantuml时序图
  2. markdown工具链plantuml
  3. UML时序图学习