在这篇文章中,我们将讨论序列图。统一建模语言(UML)是软件工程领域的一种建模语言,旨在设置可视化系统设计的标准方法。UML指导创建多种类型的图,如交互图、结构图和行为图。序列图是最常用的交互图。交互图
–交互图用于显示系统的交互行为。由于可视化系统中的交互可能是一项繁琐的任务,因此我们使用不同类型的交互图来捕获系统中交互的各种特征和方面。序列图
–序列图只是按顺序描述对象之间的交互,即这些交互发生的顺序。我们还可以使用术语事件图或事件场景来指代序列图。序列图描述了系统中对象的运行方式和顺序。这些图表被商人和软件开发人员广泛用于记录和理解新系统和现有系统的需求。
序列图符号 –
1. 角色–UML 图中的参与者表示一种角色类型,在该角色中,它与系统及其对象进行交互。这里需要注意的是,参与者总是在我们旨在使用
UML 图建模的系统范围之外。
![](../../images/2023061244.png)
图 – 角色的符号
我们使用角色来描绘各种角色,包括人类用户和其他外部主体。我们使用火柴人符号在
UML 图中表示一个参与者。我们可以在序列图中有多个参与者。例如 – 此处,座位预订系统中的用户显示为参与者,它存在于系统外部,而不是系统的一部分。
![](../../images/2023061245.png)
图
– 与座位预订系统交互的参与者
2. 生命线–生命线是一个命名元素,它描绘了序列图中的单个参与者。所以基本上序列图中的每个实例都由一条生命线表示。生命线元素位于序列图中的顶部。UML
中用于命名生命线的标准遵循以下格式 – 实例名称 : 类名 ![](../../images/2023061246.png)
图 – 生命线
我们在一个名为 head 的矩形中显示一条生命线及其名称和类型。头部位于垂直虚线(称为茎)的顶部,如上所示。如果我们想对一个未命名的实例进行建模,我们遵循相同的模式,只是现在生命线名称的部分留空。生命线和角色的区别——生命线总是描绘系统内部的物体,而角色则用于描绘系统外部的物体。以下是序列图的示例:
![](../../images/2023061247.png)
图 – 序列图
3. 消息–对象之间的通信使用消息来描述。消息按顺序显示在生命线上。我们使用箭头表示消息。生命线和消息构成了序列图的核心。消息大致可分为以下几类:
![](../../images/2023061248.png)
同步消息 –同步消息等待回复,然后交互才能继续。发送方等待接收方完成消息处理。仅当调用方知道接收方已处理上一条消息(即它收到回复消息)时,调用方才会继续。面向对象编程中的大量调用是同步的。我们使用实心箭头来表示同步消息。 ![](../../images/2023061249.png)
图
– 使用同步消息的序列图
异步消息 –异步消息不等待接收方的回复。无论接收方是否处理前一条消息,交互都会向前移动。我们使用带线条的箭头来表示异步消息。 ![](../../images/20230612410.png)
创建消息 –我们使用 Create 消息在序列图中实例化一个新对象。在某些情况下,特定消息调用需要创建对象。它用虚线箭头表示,并在其上标记创建单词以指定它是创建消息符号。例如,在电子商务网站上创建新订单需要创建一个
Order 类的新对象。 ![](../../images/20230612411.png)
图 – 使用创建消息的情况
删除消息 –我们使用删除消息来删除对象。当对象在系统中释放内存或销毁时,我们使用删除消息符号。它破坏了系统中对象的出现。它由以
x 结尾的箭头表示。例如 – 在下面的场景中,当用户收到订单时,可以销毁订单类的对象。 ![](../../images/20230612412.png)
图 –
使用删除消息的场景
自我消息 –在某些情况下,可能会出现对象需要向自身发送消息的情况。此类消息称为自我消息,并用
U 形箭头表示。
![](../../images/20230612413.png)
图 – 自我消息 例如 – 考虑设备想要访问其网络摄像头的情况。这样的场景是使用自我消息表示的。 ![](../../images/20230612414.png)
图
– 使用自我消息的场景
回复消息 –回复消息用于显示从接收方发送到发送方的消息。我们使用带有虚线的开放箭头表示返回/回复消息。仅当接收方发送回复消息时,交互才会向前移动。 ![](../../images/20230612422.png)
图
– 回复消息 例如 – 考虑设备向用户请求照片的情况。在这里,显示正在发送的照片的消息是回复消息。 ![](../../images/20230612415.png)
图
– 使用回复消息的场景
找到的消息 –已找到消息用于表示未知源发送消息的方案。它使用从终点指向生命线的箭头表示。例如:考虑硬件故障的情况。 ![](../../images/20230612416.png)
图–找到的消息 这可能是由于多种原因造成的,我们不确定导致硬件故障的原因。 ![](../../images/20230612417.png)
图
– 使用找到的消息的场景
丢失的消息 –丢失的邮件用于表示系统不知道收件人的情况。它使用指向生命线终点的箭头表示。例如:考虑生成警告的方案。 ![](../../images/20230612423.png)
图
– 丢失的消息 可能会为生命线与之交互的用户或其他软件/对象生成警告。由于事先不知道目的地,我们使用丢失的消息符号。 ![](../../images/20230612419.png)
图
– 使用丢失消息的场景
4. 警告–为了对条件进行建模,我们在 UML 中使用警告。当我们需要以满足条件为借口限制消息流时,会使用它们。守卫在让软件开发人员了解附加到系统或特定进程的约束方面发挥着重要作用。例如:为了能够提取现金,余额大于零是必须满足的条件,如下所示。
![](../../images/20230612420.png)
图
– 使用防护装置的序列图
基于情感的音乐播放器的序列图 – ![](../../images/20230612421.png)
图 – 基于情感的音乐播放器的序列图 上面的序列图描绘了基于情感的音乐播放器的序列图:
1. 首先,应用程序由用户打开。
2. 然后,设备可以访问网络摄像头。
3. 网络摄像头捕获用户的图像。
4. 该设备使用算法来检测面部并预测情绪。
5. 然后,它请求数据库以获取可能的情绪字典。
6. 情绪是从数据库中检索的。
7. 向用户显示心情。
8. 从数据库中请求音乐。
9. 生成播放列表并最终显示给用户。
序列图的使用 – -
用于对复杂功能、操作或程序背后的逻辑进行建模和可视化。
- 它们还用于显示 UML 用例图的详细信息。
- 用于了解当前或未来系统的详细功能。
- 可视化消息和任务如何在系统中的对象或组件之间移动。
|