序列图
序列图是交互图的一种形式,它将对象显示为沿着页面运行的生命线,随着时间的推移,它们的交互表示为从源生命线到目标生命线的箭头绘制的消息。序列图擅长显示哪些对象与哪些其他对象通信;以及哪些消息会触发这些通信。序列图不用于显示复杂的程序逻辑。
生命线
生命线代表序列图中的单个参与者。生命线通常有一个包含其对象名称的矩形。如果它的名字是“self”,则表明生命线代表拥有序列图的分类器。
有时,序列图会有一条生命线,其头部带有一个actor元素符号。如果序列图由用例拥有,通常就是这种情况。稳健性图中的边界、控制和实体元素也可以拥有生命线。
留言
消息显示为箭头。消息可以是完整的、丢失的或找到的;同步或异步;呼叫或信号。在下图中,第一条消息是一条同步消息(由实线箭头表示),带有一个隐式返回消息;第二条消息是异步的(用线箭头表示),第三条是异步返回消息(用虚线表示)。
执行次数
沿着生命线延伸的细矩形表示执行发生或控制焦点的激活。在上图中,有三个执行事件。第一个是源对象发送两条消息,接收两条回复;第二个是目标对象接收同步消息并返回回复;第三个是目标对象接收异步消息并返回回复。
自我讯息
self 消息可以表示操作的递归调用,或者一种方法调用属于同一对象的另一种方法。它显示为在生命线的执行事件中创建嵌套的控制焦点。
失物招领信息
丢失的消息是那些已发送但未到达预期收件人的消息,或到达当前图表中未显示的收件人的消息。找到的消息是来自未知发件人或来自当前图表中未显示的发件人的消息。它们表示去往或来自端点元素。
生命线的起点和终点
生命线可以在序列图表示的时间范围内创建或销毁。在后一种情况下,生命线以停止符号终止,表示为十字。在前一种情况下,生命线顶部的符号显示在页面下方的级别,而不是导致创建的对象的符号。下图显示了正在创建和销毁的对象。
持续时间和时间限制
默认情况下,消息显示为水平线。由于生命线代表屏幕上的时间流逝,因此在对实时系统甚至有时限的业务流程进行建模时,考虑执行操作所需的时间长度可能很重要。通过为消息设置持续时间限制,消息将显示为一条斜线。
组合片段
前面已经说过,序列图不是为了显示复杂的程序逻辑。虽然情况如此,但有许多机制确实允许向图表添加一定程度的程序逻辑,并且属于组合片段的标题。组合片段是一个或多个包含在帧中并在特定命名环境下执行的处理序列。可用的片段是:
- 替代片段(表示为“alt”)模型 if...then...else 构造。
- 选项片段(表示为“opt”)模拟开关结构。
- Break Fragment 对处理的替代事件序列进行建模,而不是对图表的其余部分进行建模。
- 并行片段(表示为“par”)模拟并发处理。
- 弱排序片段(表示为“seq”)包含许多序列,对于这些序列,在下一个片段可以开始之前必须在前一个片段中处理所有消息,但不会对不共享的消息在片段内强加任何排序一条生命线。
- 严格排序片段(表示为“严格”)包含一系列必须按给定顺序处理的消息。
- 否定片段(表示为“neg”)包含一系列无效的消息。
- 关键片段包含一个关键部分。
- 如果某个消息或消息出现在当前上下文中,则忽略片段将其声明为不感兴趣。
- 考虑片段实际上与忽略片段相反:任何未包含在考虑片段中的消息都应被忽略。
- 断言片段(表示为“断言”)指定任何未显示为断言操作数的序列都是无效的。
- 循环片段包含一系列重复的消息。
下图显示了一个循环片段。
还有一个交互发生,类似于组合片段。交互发生是对另一个图的引用,该图在框架的左上角具有“ref”一词,并且在框架的中间显示了被引用图的名称。
门
门是连接片段内部消息和片段外部消息的连接点。EA 将门显示为片段帧上的一个小方块。图门充当序列图的页外连接器,表示传入消息的源或传出消息的目标。以下两个图表显示了它们在实践中的使用方式。请注意,顶层图上的门是消息箭头接触参考片段的点 - 无需将其呈现为框形状。
零件分解
一个对象可以有多个生命线来自它。这允许在同一图表上显示对象间和对象内消息。
状态不变/延续
状态不变量是置于生命线上的约束,在运行时必须为真。它显示为具有半圆形末端的矩形。
延续与状态不变量具有相同的表示法,但用于组合片段中,并且可以跨越多条生命线。