时序图 | UML (统一建模语言)

2025年3月25日 | 阅读 4 分钟

时序图表示系统中消息的流动,也被称为事件图。它有助于设想几种动态场景。它将任何两个生命线之间的通信描述为按时间顺序排列的事件序列,以便这些生命线在运行时参与。在 UML 中,生命线由垂直条表示,而消息流由垂直虚线表示,该虚线延伸到页面的底部。它包含了迭代和分支。

时序图的目的

  1. 用于建模系统中活动对象之间的高级交互。
  2. 用于建模协作中对象之间的交互,以实现用例。
  3. 它可以对通用交互或某些特定的交互实例进行建模。

时序图的符号

生命线

时序图中单个参与者由生命线表示。它位于图的顶部。

Sequence Diagram

参与者

与主题交互的实体所扮演的角色称为参与者。它在系统的范围之外。它代表角色,包括人类用户和外部硬件或主题。参与者可以代表也可以不代表物理实体,但它纯粹描述了实体的角色。一个参与者可以扮演几个不同的角色,反之亦然。

Sequence Diagram

激活

它由生命线上的一条细长矩形表示。它描述了元素执行操作的时间段,矩形的顶部和底部分别与初始化时间和完成时间相关联。

Sequence Diagram

消息

消息描述了对象之间的交互,并用箭头表示。它们在生命线上按顺序排列。消息和生命线构成了时序图的核心。

以下是列出的消息类型

  • 调用消息: 它定义了交互生命线之间的特定通信,表示目标生命线已调用操作。
    Sequence Diagram
  • 返回消息: 它定义了交互生命线之间的特定通信,表示信息从相应调用者消息的接收者流出。
    Sequence Diagram
  • 自消息: 它描述了一种通信,特别是在交互的生命线之间,表示已调用同一生命线的消息。
    Sequence Diagram
  • 递归消息: 为递归目的发送的自消息称为递归消息。换句话说,可以说递归消息是自消息的一个特例,因为它表示递归调用。
    Sequence Diagram
  • 创建消息: 它描述了一种通信,特别是在交互的生命线之间,描述目标(生命线)已被实例化。
    Sequence Diagram
  • 销毁消息: 它描述了一种通信,特别是在交互的生命线之间,描述销毁目标生命周期的请求。
    Sequence Diagram
  • 持续时间消息: 它描述了一种通信,特别是在交互的生命线之间,它描述了在建模系统时消息的时间流逝。
    Sequence Diagram

注意

注释是可以将多个备注附加到元素的功能。它基本上携带了对建模者有用的信息。

Sequence Diagram

序列片段

  1. UML 2.0 引入了序列片段,这使得创建和维护准确的时序图非常容易。
  2. 它由一个名为组合片段的框表示,该框包含时序图内部的一部分交互。
  3. 片段的类型由片段运算符显示。
Sequence Diagram

片段类型

以下是列出的片段类型;

运算符片段类型
alt可选的多个片段:只会执行条件为真的片段。
opt可选:只有在提供的条件为真时,才会执行片段。它类似于只有一个跟踪的 alt。
par并行:并行执行片段。
loop循环:片段运行多次,交互的基础由保护条件显示。
region关键区域:一次只能有一个线程执行一个片段。
neg负面:片段显示了毫无价值的通信。
ref参考:在另一个图中描绘的交互。为此,绘制一个框架以覆盖通信中涉及的生命线。可以解释参数和返回值。
sd时序图:它用于包围整个时序图。

时序图示例

下面给出了在线书店的高级时序图示例。

任何在线客户都可以搜索图书目录,查看特定图书的描述,将图书添加到购物车并进行结帐。

Sequence Diagram

时序图的优点

  1. 它探索了实时应用。
  2. 它描述了不同对象之间的消息流。
  3. 它易于维护。
  4. 它易于生成。
  5. 实现正向和反向工程。
  6. 它可以根据系统中的新变化轻松更新。

时序图的缺点

  1. 在生命线太多的情况下,时序图会变得更加复杂。
  2. 如果消息流的顺序发生变化,可能会产生不正确的结果。
  3. 由于每个序列都需要不同的符号来表示,因此可能会使图表更加复杂。
  4. 序列的类型由消息的类型决定。

下一个主题UML 协作图