第8讲 时序图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单消息 带返回值的嵌套消息 条件消息 在发送线程c的第2个消 息之前,必须先发送线 循环消息 程a的第3个消息和线程b 的第4个消息 线程同步 在发送消息1.2之前必须 已经同时发送并发消息给 带前缀消息 线程a和b
前缀(predecessor)
语法:消息序列号,消息序列号,
... / 前缀是一个用来同步线程或路径(path)的表达式 意思是在发送当前消息之前指定序列号的消息被处理 (必须连续执行) 消息序列号之间用逗号隔开,用斜杠结束 例如 1.1a, 1.1b/1.2: continue() ,在发送消息1.2之前 必须已经同时发送并发消息给线程a和b
(2) 由LoginAction调用UserManager (3) UserManager到用户数据库User Server中查找用户 对象并返回
(4) 由UserManager判断用户名是否为空、密码是否正确 (5) 然后将User对象返回 (6)返回后台登录主界面。
例子
时序图的最大特点是:它以二维的平面上的一维来 表示时间进度,在时间维上展开了一组相互协作的 对象在完成某项功能时所发生的行为与事件
时序图和协作图从不同的角度描述了为完成某种系统功 能,系统中各对象间的交互与协作,可以有效地帮助人 们观察和理解系统的动态行为。
通常用来描述一个用例的行为,实现一个用例,完成对 系统的动态行为建模;
时序图主要用来描述对象之间信息交换时的时间顺序。
而协作图则用来描述系统对象之间如何协作共同完成系 统功能要求,它们相互补充,并可以相互转化。
7.2.4 激活期
当一条消息被传递给对象的时候,它会触发该对 象的某个行为,这时就说该对象被激活了。 在UML中,激活用一个在生命线上的细长矩形框 表示。 矩形本身被称为对象的激活期或控制期,对象就 是在激活期顶端被激活的。 激活期说明对象正在执行某个动作。当动作完成 后,伴随着一个消息箭头离开对象的生命线,此 时对象的一个激活期也宣告结束。
7.2.5 消息
Rose新增消息
阻止(Balking)
接收者如果无法立即接收消息,则发送者放弃该消息 超时(Time-out) 如果接收者无法在指定的时间内接收消息,则发送者放 弃该消息
Q:这两种消息可以看做是同步or异步消息?
5.消息中的参数和序号
时序图中的消息除了具有消息名称之外还可以包 含许多附加的信息。 消息可以与类中的操作等效,即消息可以带有可 传递到被调用对象的参数列表,并且最多包含一 个返回给调用对象的返回值。
异步消息表示发送消息的对象不用等待回 应的返回消息,即可开始另一个活动。 异步消息在某种程度上规定了发送方和接 收方的责任,即发送方只负责将消息发送 到接收方,至于接收方如何响应,发送方 则不需要知道。对接收方来说,在接收到 消息后它既可以对消息进行处理,也可以 什么都不做。
反身消息(Message to Self)
当时序图中的消息比较多时,还可以通过对消息 前置序号表达式的方式指定消息的顺序。
7.2.5 消息
消息内容标识的格式为:
[序号][监护条件]*[重复次数][返回值表:=]操作名(参数表)
例:
2: display () 1.3.1: p:=find() [x<0] 4: invert(x, color) 3.1 *[x = 1..10] : update() a3,b4/c2: copy(a,b) 1.1a, 1.1b/1.2: continue()
7.2.5 消息
在任何一个软件系统中,对象都不是孤立存在的 ,它们之间通过消息进行通信。 消息是用来说明时序图中不同活动对象之间的通 信。因此,消息可以激发某个操作、创建或撤销 某个对象。 在时序图中,消息是由从一个对象的生命线指向 另一个对象的生命线的直线箭头来表示的,箭头 上面还可以表明要发送的消息名及序号。 在个对象之间,消息的次序由它们在垂直轴上的 相对位置决定。
返回消息(Return Message)
返回消息是时序图的一个可选择部分,它 表示控制流从过程调用的返回。 返回消息一般可以缺省,隐含表示每一个 调用都有一个配对的调用返回。 是否使用返回消息依赖于建模的具体/抽 象程度。如果需要较好的具体化,返回消 息是有用的;否则,主动消息就足够了。
第7章 时序图
7.1 交互图
系统或对象的动态模型主要包括状态模型和 交互模型。 状态模型用来描述系统或对象的动态行为, 用状态图和活动图进行描述,因此状态图和 活动图又统称为行为图; 交互模型主要用来帮助人们观察和分析系统 的交互行为,用时序图和协作图进行描述, 因此时序图和协作图又统称为交互图( Interaction diagram )。
从对象传递给另一 个对象的消息 从参与者到对象和 从对象到参与者之 间发送的消息
对象生命线表 示从上到下的 时间顺序,消 息1在消息2之前 发生,消息2在 消息3之前发生
顺序图
对象
控制焦点 消息
生命线
在UML中,时序图用一个二维图描述系统中各个 对象之间的交互关系。其中,纵轴是时间轴,时 间沿竖线向下延伸,由上至下表示时间的先后顺 序。横轴代表了参与相互作用的对象。 当对象存在时,生命线由一条虚线表示;当对象 的过程处于激活状态时,生命线上用一个激活条 表示。消息用从一个对象到另一个对象生命线的 箭头表示,箭头一时间顺序从上到下排列。
守卫条件(guard-condition)
语法:
[ 条件短语 ] 条件短语通常用伪代码或真正的程序语言来表示, UML并不规定其语法 例如,[x<0] 4: invert(x, color)
序列表达式 (sequence-expression)
语法
[integer | name] [recurrence] : integer为指定消息顺序的序列号,消息1是消息序列的 开始消息消息,1.1是消息1的处理过程中的第一条嵌套 的消息,消息1.2是消息1的处理过程中的第二条嵌套的 消息,一个消息序列的例子如1, 1.1, 1.2, 1.2.1, 1.2.2, 1.3, 等。这样的序列号不仅能够表示消息的顺序而且还 能表示消息的嵌套关系(当消息是异步消息时消息为嵌套 的操作调用及返回) name表示并发控制线程,例如1.2a和1.2b为同时发送 的并发消息
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
7.2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对
象在一段时间内的存在 垂直的虚线 如果对象生命期结束,则用注销符号表示 对象默认的位置在图顶部,表示对象在交互之前已经存在 如果是在交互过程中由另外的对象所创建,则位于图的中 间某处。
时序图的主要用途之一是用来为某个用例的 泛化功能提供其所缺乏的解释,即把用例表 达的要求转化为更进一步的精细表达。 用例常常被细化为一个或多个时序图。
时序图除了在设计新系统方面的用途之外, 它还能用来记录一个存在系统的对象现在如 何交互。
Leabharlann Baidu
例子
登录
(1)用户将用户名和密码提交给LoginAction
ObjectA
ObjectB
: Actor
Object1
Object2
1: Message
1: Message
2: Message
2: Message 3: Message
3: Message 4: Message 5: Message
当进行时序图建模时,所用到的消息主要 包括以下几种类型:
简单消息(Simple
Message) 同步消息(Synchronous Message) 异步消息(Asynchronous Message) 反身消息(Message to Self) 返回消息(Return Message)
Object1 1: Simple Message
7.2.2 活动者或对象
活动者和对象按照从左到右的顺序排列 一般最多两个活动者,他们分列两端。启动 这个用例的活动者往往排在最左边;接收消 息的活动者则排在最右端; 对象从左到右按照重要性排列或按照消息先 后顺序排列。
Object1 : ClassA
7.2.2 活动者或对象
对象的命名方式有三种:
Object2
2: Synchronous Message 3: Asynchronous Message 4: Message to Self 5: Return Message
简单消息(Simple Message)
简单消息是在同步和异步之间没有区别的 消息。 使用简单消息是因为有时消息是同步还是 异步无关紧要,或者在不知道消息的类型 的情况下就需要用到简单消息。 在对系统进行时序图建模时,可以对所有 的消息都使用简单消息进行表示,然后再 根据情况确定消息的类型。
简单时序图
顺序图与用例图和类图的关系
UML
7.2.1 顺序图的组成
活动者(actor)或者 对象(object) 生命线(lifeline) 激活(activation)/ 控制焦点(focus of control) 消息(message)
当执行一个用例行为时,顺序图中的每条消息对 应了一个类操作或状态机中引起转换的事件。
7.2.5 消息
面向对象方法中,消息是对象间交互信息的主 要方式。 结构化程序设计中,模块间传递信息的方式主 要是过程(或函数)调用。 对象A向对象B发送消息,可以简单地理解为 对象A调用对象B的一个操作(operation)。
7.2.5 消息
顺序图中,尽力保持消息的顺序是从左到 右排列的。 一个顺序图的消息流开始于左上方,消息2 的位置比消息1低,这意味着消息2的顺序 比消息1要迟。因为西方的阅读习惯是从左 到右。 顺序图中消息编号可显示,也可不显示。 协作图中必须显示。
消息: 向哪个对象发消息实际上就是调用它的类中的操作,就是 调用箭头指向的对象所在类的 一个operation。
订单类发消息给客户类调用客户类中的“验证客户”操 作
UML - 14 -
使用系统的参 与者,这个系 统是为某个用 例的某个场景 设计的
在类图中的 类的对象
窄长方框用以 强调这个部分 处于活动状态
时序图建模过程中,一个对象也可以将一 个消息发送给它自己,这就是反身消息。 如果一条消息只能作为反身消息,那么说 明该操作只能由对象自身的行为触发。 这表明该操作可以被设置为private属性, 只有属于同一个类的对象才能够调用它。 在这种情况下,应该对时序图进行彻底的 检查,以确定该操作不需要被其他对象直 接调用。
顺序图
面向时间描述对象交互的图
协作图
对象间消息的结构化视图
7.2 时序图
按照时间顺序显式对象之间交互的图
时序图(Sequence Diagram)在一些参考书中也被 称为顺序图,是一种详细地表示对象之间行为交互关 系的图 按时间顺序把各个对象所执行的操作以及它们之间所 传送的消息展现出来 可以清晰而直观的表示对象之间的行为交互关系以及 操作和消息的时序关系。
同步消息 (Synchronous Message)
同步消息最常见的情况是调用,即消息发 送者对象在它的一个操作执行时调用接收 者对象的一个操作,此时消息名称通常就 是被调用的操作名称。 当消息被处理完后,可以回送一个简单消 息,或者是隐含的返回。
异步消息 (Asynchronous Message)
各个对象所执行的操作以及它们之间所传送的消息 ,从而能够在逻辑上清晰的刻画这些操作和消息的 时序关系乃至因果关系。 时序图提供了对象所执行的操作以及对象之间传送 的消息随时间推移的、清晰的和可视化的轨迹。
7.2.1 时序图的组成
: Actor
:Object1
:Object2
1: Message 2: Operation :Object3 3: Operation 4: Message 5: Message