顺序图(sequence diagram)

交互序列图(sequence diagram)也称顺序图,捕捉一段时间范围内多个对象之间的交互信息,强调消息交互的时间顺序,将一个用例详细的记录出来。用于处理行为较为简单的用例。

序列图用于向团队展示程序中的对象(可能是程序中的类,也可能是一个参与者)如何相互交互以完成任务。简单地说,把序列图想象成不同人之间的对话表,这张对话表中记录着他们之间发送的所有消息。

序列图通常用作开发团队开始编程之前的规划工具,或者用来描述一个系统是如何设计的。他们可以让你更轻松简单的完成你的功能设计。甚至可以帮助你发现系统中以前没有发现的问题。序列图非常强大,是软件建模中不可缺少的一环。

🎈一个用例通常会细化为一个或多个顺序图,是用例需求过渡到下一个更细化的级别的工具。注意:顺序图作用于单用例多对象。


顺序图的模型元素

1️⃣参与者(Actor):使用一个小人来表示。参与者是在系统之外与系统交互的某人或某事物。

2️⃣对象(Object):使用一个长方形来表示。在对象名称中带有下划线,说明它是系统中声明的实体(特定类,例如“Student 类”)。而系统中未声明的实体不带有下划线(特定种类,例如“人”)。关于对象的命名有以下三种形式:

对象名: 类名 对象名 :类名

对于不同类型的对象还有不同的表示形式,如下:

实体对象 边界对象 控制对象

3️⃣生命线(Lifeline):生命线是垂直的虚线,从对象或者参与者开始。它显示了一个对象或参与者存在的时间。

4️⃣激活框(Activation Box):用一个细长方形表示,附着在生命线上,系统外部对象不需要激活框,例如参与者。激活框显示对象进程开始时间和对象进程的执行时间。有利于我们分析对象何时处于运行状态、何时处于空闲状态。

5️⃣消息(Message):一般分为同步消息、异步消息和返回消息。把一个对象的生命线用带箭头的线连接到另一个对象的生命线,并在上面写上执行的操作。消息按时间顺序从上到下。消息可以描述信息在对象之间传递,描述对象间的相互作用或序列。

  • 同步消息:用实线箭头表示。发送消息的对象需要等待接收消息的对象执行完所有操作后才能继续执行自己的操作。
  • 异步消息:用实线棍状箭头表示。发送消息的对象发送消息后,无需等待可以继续执行自己的操作。
  • 返回消息:用虚线棍状箭头表示。当对象将消息发送回去时称消息为返回消息。
同步消息 异步消息 返回消息

✨消息也有许多表现形式,如下:

不知来源的对象 不知消息来源的消息 消息未到达目的地
生命线终止 创建消息 删除消息 自关联消息

注意:创建消息的符号和返回消息的符号相同,并且指着被创建对象。

6️⃣约束条件(Guards):[Boolean Test] 表示。可以与消息和交互片段结合使用。

例如,只有“a > 0”时,才发送消息。如下图:

7️⃣交互片段(Frame):用一个长方形表示,在左上角写上交互操作名称。包含多种操作指令。

✨常用的交互片段:

交互操作 图形 描述
Alt 分支 只执行一个分支
Opt 选择 满足条件执行
Loop 循环 重复执行一定次数
Par 并行 并行执行

✨引用另一个顺序图:

1
sequence diagram name[(arguments)] [: return value]


如何使用顺序图?

假如我们现在要用顺序图描述去 ATM 机🏧取现金💵时发生的所有步骤,脚本如下:

  1. 当用户到达 ATM 机时,先要插入银行卡。
  2. ATM 机要向银行验证用户的银行卡是否有效?
    • 验证成功,ATM 机提醒用户需要输入密码。
    • 验证失败,ATM 机弹出银行卡。
  3. 用户输入密码。
  4. ATM 机要向银行验证用户输入的密码是否正确?
    • 密码正确,ATM 机提醒用户输入金额。
    • 密码错误,ATM 机弹出银行卡。
  5. 用户输入金额。
  6. ATM 机向银行请求交易。
  7. 银行向银行账户系统验证账户金额是否充足?
    • 金额充足:
      1. 银行向银行账户系统请求提现。
      2. 银行账户系统提示银行提现成功。
      3. 银行提示 ATM 机交易成功。
      4. ATM 机将现金推出。
    • 金额不足:
      1. 银行账户系统提示银行用户的金额不足。
      2. 银行提示 ATM 机当前交易失败。
  8. ATM 机弹出银行卡。

顺序图如下:



📌最后:希望本文能够给您提供帮助,文章中有不懂或不正确的地方,请在下方评论区💬留言!

🔗参考文献:

🌐 Explore the UML sequence diagram –IBM Developer

🌐 UML Message

▶️ bilibili - UML序列图