文章目录

  • 顺序图(时序图)
  • 顺序图的引入
  • 顺序图的概念
  • 顺序图的组成
  • ①对象( Object)
  • ②生命线( Lifeline )
  • ③激活(Activation) (控制焦点focus of control)
  • ④消息(Message)
  • 消息的表示和分类
  • 调用消息(Procedure Call)
  • 异步消息(Asynchronous)
  • 返回消息(Return)
  • 三种消息的示例
  • 特殊的消息
  • 自反消息
  • 阻止消息(Rose中)
  • 超时消息(Rose中)
  • 创始消息(Found Message)
  • UML交互片段
  • 常用的交互片段对应的操作符及其作用
  • ①ref 交互片段—— (引用reference)
  • 使用场景
  • 使用方法
  • ②loop交互片段——(循环交互片段)
  • (1) loop(minint, maxint)
  • (2) loop(minint)
  • (3) loop
  • (4) loop(minint, maxint) +监护条件
  • loop实例
  • 对集合的迭代
  • ③opt和alt交互片段——(表示分支)
  • opt交互片段—— (单分支)
  • alt交互片段—— (多分支)
  • ④par交互片段——(表示并发)
  • ⑤break交互片段
  • ⑥critical (临界)交互片段
  • 交互片段的嵌套



顺序图(时序图)

UML中的顺序图(时序图)的相关知识。

顺序图的引入

  • 用例图描述系统需求,类图描述组成系统结构的类关系。
  • 用例图和类图无法描述系统动态行为。
  • 使用交互图为系统各部分交互进行建模。
  • 交互图( interaction diagram)通常用来描述一个用例或者部分用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。( 动态交互行为建模)
  • UML2.x交互图包括顺序图、通信图(协作图)、交互纵览图、定时图。
  • 顺序图着重描述对象之间消息传递的时间顺序。
    通信图(协作图) 强调对象之间的链接关系。
  • 顺序图和通信图从不同的角度表达了系统中的交互,它们之间可以互相转换。
  • UML规范更多是以顺序图为核心,对其表示法和语义投入更多的精力。
  • 准则:针对每个用例中所描述的需求,使用类图进行静态对象建模后,使用交互图进行动态对象建模可以帮助考虑更多的设计细节,提醒分析人员去补充遗漏的类或方法,“ 落实”发送哪些消息、发送给谁、以何种顺序发送等具体问题。
  • 当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起状态转换的触发事件。

顺序图的概念

  • 顺序图 (sequence diagram)是一种详细表示对象之间动态交互的图形文档。
  • 顺序图将交互关系表示为一个 二维图
  • 横轴 代表了在协作中各独立的对象。
  • 纵轴 是时间轴,时间沿竖线向下延伸。
  • 沿时间方向按时间递增顺序列出个对象所发出和接收的消息。

python Transitions 自动售货机 自动售货机uml顺序图_时序图

例如:汽车租赁系统中客户取车的顺序图
取车的动作是从客户向工作人员提出取车要求并出示清单开始,工作人员检查客户的预定申请,确认后顾客付款。工作人员填写工作记录,同时登记汽车的状态,最后客户取车。


python Transitions 自动售货机 自动售货机uml顺序图_时序图_02

顺序图的组成

顺序图包含了4个元素:
①对象( Object)

②生命线( Lifeline )

③激活(Activation) / (控制焦点focus of control) / 控制条

④消息(Message)

①对象( Object)

顺序图中对象的符号和对象图中对象所用的符号一样。

  • 对象的命名方式有三种:
  • 包括对象名和类名
  • 类名(匿名对象)
  • 对象名(不关心类)

python Transitions 自动售货机 自动售货机uml顺序图_时序图_03

  • 对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧。

python Transitions 自动售货机 自动售货机uml顺序图_软件建模_04

  • 将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了。
  • 如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。

python Transitions 自动售货机 自动售货机uml顺序图_顺序图_05

②生命线( Lifeline )

  • 每个对象都有自己的生命线,生命线在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象在特定时间内的存在。

python Transitions 自动售货机 自动售货机uml顺序图_顺序图_06

如果对象生命期结束,则用注销符号表示


python Transitions 自动售货机 自动售货机uml顺序图_UML_07

③激活(Activation) (控制焦点focus of control)

  • 激活 表示该对象被占用以完成某个任务,对象执行某个动作的时期。
  • 去激活 指对象处于空闲状态,不做什么事情,但它是存在的,等待新的消息激活它。
  • 在UML中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩形。其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激活的,对象在完成自己的工作后被去激活。

python Transitions 自动售货机 自动售货机uml顺序图_UML_08

激活表示一个对象直接或者通过从属例程执行一个行为的时期,既可以表示行为执行的持续时间,也表示了活动和它的调用者之间的 控制关系


python Transitions 自动售货机 自动售货机uml顺序图_顺序图_09

④消息(Message)

  • 消息是对象之间某种形式的通信,它可以激发某个操作、发送信号或导致目标对象的创建或撤销。
  • 消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。即从源对象指向目标对象,以触发目标对象中的特定操作。

python Transitions 自动售货机 自动售货机uml顺序图_建模_10

  • 消息可以用于在对象间传递参数。
  • 消息可以是信号(对象间的异步通信),也可以是调用(具有返回控制机制的同步调用)。

消息的表示和分类

  • 消息——在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型。
  • UML三种消息
  • 调用消息(Procedure Call)
  • 异步消息(Asynchronous)
  • 返回消息(Return)
  • Rose消息扩充
  • 阻止消息(Balking )
  • 超时消息(Time-out)

调用消息(Procedure Call)

UML用一个带实心箭头的实线表示调用消息。


python Transitions 自动售货机 自动售货机uml顺序图_时序图_11

  • 调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者执行其某种操作后返回控制。
  • 由于发送者等待接收者,这种消息又叫做同步消息( synchronous)。
  • 通常,同步消息会隐含包含了来自接收者的一个返回消息,尽管建模者经常忽略这个返回消息的符号。

python Transitions 自动售货机 自动售货机uml顺序图_UML_12

异步消息(Asynchronous)


python Transitions 自动售货机 自动售货机uml顺序图_时序图_13

➢消息发送后,发送者继续操作,不等待,常用于并发;

返回消息(Return)
  • 如果异步消息有返回消息,必须明确表示出来。

python Transitions 自动售货机 自动售货机uml顺序图_顺序图_14

➢表示消息的返回。一般同步(过程调用)的返回不需画出,直接隐含,而异步返回则可用它。


python Transitions 自动售货机 自动售货机uml顺序图_建模_15

三种消息的示例


python Transitions 自动售货机 自动售货机uml顺序图_软件建模_16

特殊的消息

自反消息
  • 自调用消息(反身消息) (SelfCall) :一个对象将一个消息发送给它本身。
  • 在反身消息里,消息的发送方和接收方是同一个对象。
  • 自反消息一般是同步消息

python Transitions 自动售货机 自动售货机uml顺序图_时序图_17

阻止消息(Rose中)
  • 阻止消息 是指消息发送者发送消息给接收者,如果接收者无法立即接收消息,则发送者放弃这个消息。
  • Rose中用折回的箭头表示 阻止消息

python Transitions 自动售货机 自动售货机uml顺序图_软件建模_18

超时消息(Rose中)
  • 超时消息 指消息发送者发出消息给接收者并按指定时间等待。如果接收者无法在指定时间内接收消息,则发送者放弃这个消息。

python Transitions 自动售货机 自动售货机uml顺序图_软件建模_19

创始消息(Found Message)
  • 以实心圆作为起点来表示此类消息。
  • 创始消息表示没有特定发送者、发送者不明确或消息源众多的消息。

python Transitions 自动售货机 自动售货机uml顺序图_软件建模_20

UML交互片段

  • UML2.x针对UML1.x顺序图添加了一个有用的改动:交互片段( interaction fragment)
  • 交互片段: 用一个边框包围顺序图中的部分交互,并在其左上角添加一个间隔区。
  • 间隔区中,有操作符来描述交互片段的类型。

python Transitions 自动售货机 自动售货机uml顺序图_UML_21

常用的交互片段对应的操作符及其作用


python Transitions 自动售货机 自动售货机uml顺序图_软件建模_22

①ref 交互片段—— (引用reference)

  • 为一个用例的多个场景创建实例顺序图,图和图之间的相当一部分内容是重复的。
  • ref交互片段能够在一张顺序图中快速容易地复用另一张顺序图的部分内容。
使用场景

当想要简化图时,将其中的一部分分解到另;一个图中,或者存在可复用的交互。

使用方法

引用其它的顺序图作为自身交互的一部分,使用ref交互片段并写明要引用的交互图的名称。

例如:


python Transitions 自动售货机 自动售货机uml顺序图_软件建模_23

或:


python Transitions 自动售货机 自动售货机uml顺序图_建模_24

②loop交互片段——(循环交互片段)

loop操作符 来表示变互判断,表明该片段内的交互被循环执行多次,而具体的次数由 循环次数监护条件 表达式来说明。

(1) loop(minint, maxint)

minint表示循环的最小次数,maxint表示循环的最多次数


python Transitions 自动售货机 自动售货机uml顺序图_UML_25

(2) loop(minint)


python Transitions 自动售货机 自动售货机uml顺序图_UML_26

(3) loop

永无止境的循环


python Transitions 自动售货机 自动售货机uml顺序图_软件建模_27

(4) loop(minint, maxint) +监护条件


python Transitions 自动售货机 自动售货机uml顺序图_建模_28

loop实例


python Transitions 自动售货机 自动售货机uml顺序图_顺序图_29

对集合的迭代
  • 对集合(例如list和map)中所有成员进行迭代的常用算法是向每个成员发送同一条消息。
  • 在这种情况下,通常最终会使用某种迭代器(iterator) 对象。

python Transitions 自动售货机 自动售货机uml顺序图_顺序图_30

③opt和alt交互片段——(表示分支)

  • 分支:表明交互的控制流程取决于某个特定的条件。
  • 可以表示分支的操作符有两个:支持单条件的 opt 和支持多条件的 alt .
opt交互片段—— (单分支)

●包含在此片段中的交互只有在判断条件为真时才执行


python Transitions 自动售货机 自动售货机uml顺序图_时序图_31

特殊情况:

python Transitions 自动售货机 自动售货机uml顺序图_时序图_32

alt交互片段—— (多分支)
  • alt交互片段中可以有多个区域,不同的区域用虚线分割,每一个区域设置一个监护条件,代表一个分支。根据判断条件,选择片段中的一个区域中的交互执行。

python Transitions 自动售货机 自动售货机uml顺序图_建模_33

例如:


python Transitions 自动售货机 自动售货机uml顺序图_时序图_34

④par交互片段——(表示并发)

  • par交互片段 中,每个区域中的交互并发工作而不会互相交互。用于各个片段并行执行。
  • 操作符par是用来表示“并行”的,也就是用来表示两个或多个并发执行的子片段,并行子片段中,单个元素的执行次序可以以任何可能的顺序相互操作(除非采用critical禁止)。

python Transitions 自动售货机 自动售货机uml顺序图_UML_35

例如:


python Transitions 自动售货机 自动售货机uml顺序图_顺序图_36

⑤break交互片段

  • 操作符break和循环语句的break有些类似。
  • 通常用break定义一个含有监护条件的子片段。
  • 如果监护条件为“真”则执行子片段,而且不执行子片段后面的其他交互;如果监护条件为“假”,那么就按正常流程执行。

python Transitions 自动售货机 自动售货机uml顺序图_顺序图_37

例如:

下图中,当系统要用户登录时。如果单击“取消”按钮,那么就将取消登录。并且不再执行后续地交互;否则就将等待用户输入登录信息,系统对输入的信息进行相应地应答。


python Transitions 自动售货机 自动售货机uml顺序图_建模_38

⑥critical (临界)交互片段

  • 操作符critical 表示子片段是 “临界区域“ 在临界区域中,生命线上的事件序列不能和其它区域中的任何其它事
    件交错。

python Transitions 自动售货机 自动售货机uml顺序图_建模_39

多进程并发执行时,表示排它处理,类似于操作系统中的加锁,以防止死锁的产生。

例如:交互片段实例
在VCD播放的过程中,显示图像(displayframe) 的同时,可以响应各种按键。但是有一个例外,当用户按下暂定键(pause)时,在用户按下恢复键resume之前是无法显示图像displayFrame的,即displayFrame不能交错在pause和resume之间。


python Transitions 自动售货机 自动售货机uml顺序图_建模_40

●使用操作符critical还常用来表示一个原子性的连续操作,例如事务性操作。
例如:
从银行帐号( bankaccount)扣钱和往证券帐户(stockaccount)加钱的这两个动作要么全部成功完成,要么都不执行。


python Transitions 自动售货机 自动售货机uml顺序图_UML_41

交互片段的嵌套


python Transitions 自动售货机 自动售货机uml顺序图_建模_42