UML之序列图事件时刻与轨迹

序列图的生命线代表了时间的流逝,但沿着生命线从上向下移动时,时间在生命线上的分布并不是均匀的,而且不同生命线上时间流逝的速度通常也是不同的。此外,不同生命线在同一水平位置的时刻一般也并不相同。

在生命线上某个时刻发送或者接收消息,可以看作是当前生命线在该时刻上发生的事件。

生命线之间是相互独立的,并且不同生命线上时间流逝的速度不同,因此当一系列事件在不同的生命线上发生时,通常很难确定它们的发生顺序。只有事件发生在同一条生命线时,从上到下的事件才表明它们发生时间顺序。

关于生命线上的消息、事件和时间有如下几个规则:

  1. 消息的结束(接收消息)必须发生在消息开始(发送消息)之后。这是基本的因果关系规则。
  2. 单条生命线上的事件从上到下按时间顺序排列。这是生命线的定义。此规则强制规定了生命线上事件的严格顺序。
  3. 如果消息有返回值,消息的返回只能在原始消息被接收之后发生。这是规则1和2的必然结果。

表示消息的箭头可以是向下倾斜的。可以利用这种倾斜来表示消息从一条生命线传递到另一条生命线时涉及了时间的流逝。当然,根据上述规则1,消息从一条生命线传递到另一条生命线,无论这个过程多快都一定会产生时间的流逝,它与消息箭头是水平还是倾斜没有关系。图 1使用向下倾斜的箭头描述了两条相互交叉的消息。

图 1 交叉的消息

根据前述规则,序列图允许存在事件发生的多条时间路径。就整个图而言,事件形成一个偏序关系。每个有效的事件序列称为一个"轨迹(TRACE)"。当消息像图 1这样相互交叉时,就会产生多个轨迹的可能性。

建模者通常使用"!"标记消息发送事件,使用"?"标记消息接收事件,轨迹则通常用尖括号"< >"表示,尖括号内的事件顺序表明事件发生时间的顺序。

以下尝试分析图 1中的事件与轨迹。

根据规则1,消息m和n都遵循先发送后接收的事件顺序,因而消息m的发送(m!)早于消息m的接收(m?),消息n的发送(n!)早于消息n的接收(n?),即轨迹中存在<m!, m?>、<n!, n?>。

根据规则2,可知在生命线lifeline1上消息m的发送(m!)早于消息n的接收(n?),在轨迹中存在<m!, n?>;在生命线lifeline2上消息n的发送(n!)早于消息m的接收(m?),在轨迹中存在<n!, m?>。

消息m和n的发送事件分别发生于生命线lifeline1和lifeline2,所以这两个发送事件的时间先后顺序存在两种可能,消息m先于消息n发出或者消息n先于消息m发出,即轨迹中存在两种可能<m!, n!>或<n!, m!>。类似地,消息m和n的接收事件轨迹也存在两种可能<m?, n?>或<n?, m?>。

综上,图 1所表达的序列存在四种可能的轨迹:

<m!, n!, m?, n?>

<m!, n1, n?, m?>

<n!, m!, m?, n?>

<n!, m!, n?, m?>

根据上述讨论可知,如果序列图中只有两条生命线并且没有消息交叉,那么序列图中的事件只可能有一种轨迹。然而,当序列图中存在多于两条生命线时,存在的轨迹也将不是唯一的。例如在图 2中,存在几种可能的轨迹?

图 2 多条生命线上的交互

序列图图 2中,可以根据生命线:Server确定消息m的接收事件发生于消息n的接收事件之前,即<m?, n?>。而生命线client1:和client2:上消息m的发送事件m!和消息n的发送事件n!,由于不同生命线的时刻及时间流逝速度不同,并不能依据它们在序列图生命线上的位置确定事件发生的时刻顺序,因而消息m和消息n的发送存在两种可能,即<m!, n!>或<n!, m!>。

类似地,综合上述分析,可知序列图图 2存在以下三种可能的轨迹。

<m!, m?, n!, n?>

<m!, n!, m?, n?>

<n!, m!, m?, n?>

UML -- 光头颜说IThttps://gtyan.com/archives/category/uml

本UML专栏https://blog.csdn.net/mboy2008/category_12860871.html

相关推荐
雾江流8 小时前
虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身
软件工程
勤不了一点8 小时前
小白上手RPM包制作
linux·运维·服务器·软件工程
meisongqing10 小时前
【软件工程】符号执行与约束求解缺陷检测方法
人工智能·算法·软件工程·软件缺陷
meisongqing2 天前
【软件工程】机器学习多缺陷定位技术分析
人工智能·机器学习·软件工程·缺陷定位
widder_2 天前
软考软件设计师中级——软件工程笔记
软件工程·软考·软件设计师
meisongqing3 天前
【软件工程】软件缺陷 基于动态分析的方法
软件工程·缺陷
-qOVOp-3 天前
zst-2001 上午题-历年真题 软件工程(38个内容)
软件工程
workflower3 天前
使用谱聚类将相似度矩阵分为2类
人工智能·深度学习·算法·机器学习·设计模式·软件工程·软件需求
搏博4 天前
软件工程之软件项目管理深度解析
软件工程·软件构建·需求分析·软件需求
爱吃java的羊儿5 天前
信息系统项目管理师-软考高级(软考高项)2025最新(十八)
信息可视化·软件工程·产品经理·可用性测试