第五章顺序图和协作图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
34
条件执行-Alt
• 表示多条件的分支结构(选择结构) • 虚线分隔区域,每一个区域设置一个监 护条件,代表一个分支
35
可选执行(Opt)
• 表示满足条件则执行分支结构
36
循环(loop)
37
并行执行(Par)
• 用来表示“并行”的,也就是用来表示两个 或多个并发执行的子片段,并行子片段中单 个元素的执行次序可以以任何可能的顺序相 互操作
简单消息 消息带返回值
[x < 0] 4: invert (x, color) 条件消息 3.1*: update ( ) 循环消息
A3,B4/ C2: copy(a,b)
线程间同步
32
在交互图中使用的一些概念
object
循环
条件
返回消息 创建对象
33
顺序图的结构化控制
• 序列性的消息能很好的说明单一的线性 的序列,但是通常需要展示条件和循环。 有时候要展示多个序列的并发执行。在 顺序图中用结构化控制操作符能展示这 种高层控制。 • 控制操作符表示为顺序图上的一个矩形 区域,其左上角有一个写在小五边形内 的文字标签,用来表明控制操作符的类 型。
30
• [return-value]:将赋值为消息的返回值的
名字列表,如果消息没有返回值,则returnvalue部分被省略。
• [message-name]:消息名 • [argument-list]:消息的参数列表
31
例:一些消息的例子
2: display (x, y)
1.3.1: p:= find(specs)
8
顺序图例子
Form Object Open form Enter information Save Information Create Populate with information Save Data Object
: Actor
9
Sequence图中的组成元素
• 顺序图中的一些主要元素: – Object (对象,包括actor实例) – Lifeline (生命线) – Focus of control(控制焦点)和 activation(激活期) – Message(消息)
说明: 1. 调用消息的接收者必须是一个被动对象(passive object), 即它是一个需要通过消息驱动才能执行动作的对象。 2. 一般调用消息必有一个配对的返回消息,为了图的清晰可 不画出返回消息。。
23
• 异步消息(asynchronous)。异步消息的 发送者通过消息把信号传递给消息的接 收者,然后继续自己的活动,不等待接 收者返回消息或控制。 例:异步消息的表示符号。
39
分析级-用来概要描述交互场景
40
设计级
41
• 类PaymentController必须实现哪些方法
• 如图类Account必须实现哪些方法?
• 例1. 汽车自动上锁系统。 • 车主使用遥控钥匙,按下“锁车”按钮 ,则汽车自动上锁,闪动一下车灯并发 出一声蜂鸣,告诉车主车门已经上锁了 。
3
交互图说明:
• 交互图是用来描述对象之间的动态协作关系以 及协作过程中的行为次序,它常常用来描述一 个用例的行为,显示该用例中所涉及的对象和 这些对象之间的消息传递情况。 • 一般一个use case需要一个或多个顺序图或协 作图,除非特别简单的use case. • 顺序图和协作图从不同的角度表达了系统中的 交互和系统的行为,它们之间可以相互转化。 • 顺序图着重描述对象按照时间顺序的消息交换, 协作图着重描述系统成分如何协同工作。
26
• 超时(time-out)消息。消息发送者发出消 息给接收者并等待指定时间,如果接收 者无法在指定时间内接收消息,则发送 者放弃这个消息。 例:超时消息的表示符号。
27
顺序图中的消息
• 消息的语法格式
– [predecessor] [guard-condition] [sequenceexpression] [return-value :=] message-name ([argument-list])
13
创建对象的两种表示方法:
14
对象撤销
• 如果要撤销一个对象,只要在其生命线 终止点放置一个“X”符号即可,该点通 常是对删除或取消消息的回应。
15
lifeline (生命线)
• 生命线表示对象存在的时间,在顺序图 中生命线表示为从对象图标向下延伸的 一条虚线。 • 生命线是一条垂直的虚线,表示顺序图 中的对象在一段时间内的存在。每个对 象的底部中心的位置都带有生命线。 • 生命线是一个时间线,从顺序图的顶部 一直延伸到底部,所用的时间取决于交 互持续的时间。
20
消息(message)
• 顺序图的主要内容是消息。把消息表示为从一条生 命线到另一条生命线的箭线,箭头指向接受者。 • 消息定义的是对象之间某种形式的通信,它可以激 发某个操作、唤起信号或导致目标对象的创建或撤 销。 • 消息是两个对象之间的单路通信,从发送方到接收 方的控制信息流。 • 消息可以用于在对象间传递参数。 • 在UML中,消息使用箭头来表示,箭头的类型表示 了消息的类型。
第5章 交互图
东北大学信息科学与工程学院
E-Mail: yanglei@ise.neu.edu.cn
杨雷
1/336
开发流程-动态建模
2
交互图(interaction diagram)
• 在对软件密集型(software-intensive)系统 建模时,如何对它的动态方面建模?怎样 才能可视化一个运行的系统? • 交互图(interaction diagram)是一种详细 表示对象之间以及对象与系统外部的参与 者(actor)之间动态联系的图形文档。 • 交互图有两种形式,即顺序图(sequence diagram) 和协作图(collaboration diagram) 。
16
• 对象与生命线结合在一起称为对象的生 命线,对象的生命线包含矩形的对象图 标以及图标下面的生命线
17
控制焦点(Focus of control)
• 控制焦点:顺序图中表示时间段的符号,它 是一个瘦高的矩形,表示对象执行一个动作 所经历的时间段,既可以直接执行,也可以 是通过下级过程执行。矩形的顶部表示动作 的开始,底部表示动作的结束(由一个返回 消息来标记)。图例:
5
主要Hale Waihona Puke Baidu容 顺序图
交互图
6
顺序(Sequence)图
• 定义:也称时序图,顺序图中显示的是 参与交互的对象及对象之间消息交互的 顺序。 • 顺序图强调的是消息交互的时间顺序。
7
说明:
• 顺序图是一个二维图形。在顺序图中水平 方向为对象维,沿水平方向排列参与交互 的对象;竖向方向为时间维,沿垂直向下 方向按时间递增顺序列出各对象所发出和 接收的消息。 • 水平轴上的对象间的相互顺序并不重要。
38
建立sequence图的步骤
1. 确定交互过程的上下文(context); 2. 识别参与交互过程的对象; 3. 为每个对象设置生命线,即确定哪些对象存在于整个交 互过程中,哪些对象在交互过程中被创建和撤销; 4. 从引发这个交互过程的初始消息开始,在生命线之间从 顶到下依次画出随后的各个消息; 5. 如果需要表示消息的嵌套,或/和表示消息发生时的时间 点,则采用FOC; 6. 如果需要说明时间约束,则在消息旁边加上约束说明; 7. 如果需要,可以为每个消息附上前置和后置条件。
UML 1.4/1.5中的异步消息
UML 1.3中的异步消息
24
• 返回消息(return)。从过程调用返回。 例:返回消息的表示符号。
• 如果是从过程调用返回,则返回消息是 隐含包括的,所以返回消息可省略。 • 对于非过程调用,如果有返回消息,必 须明确表示出来。
25
• 阻止(balking)消息。消息发送者发出消 息给接收者,如果接收者无法立即接收 消息,则发送者放弃这个消息。 例:阻止消息的表示符号。
focus of control
18
控制焦点的嵌套
• 控制焦点可以通过将一个控制焦点放在它的 父控制焦点的右边来表示控制焦点的嵌套 (其嵌套深度可以任意)。嵌套的控制焦点 可以由循环、自身操作调用或从另一个对象 的回调所引起,它可以更精确地说明消息的 开始和结束位置。 • 图例:
19
说明: • activation(激活期)表示对象执行一个动 作的期间,也即对象激活的时间段。 • 控制焦点和激活期是同一个概念。
21
消息的类型
• 消息的类型:在UML 1.4以上版本的规范说明 中消息分调用消息,异步消息,返回消息三 种。
– 其它消息类型:如阻止(balking)消息,超时(timeout)消息等为UML核心的扩充。
22
• 调用消息(Procedure call)。 调用消息的发送者把控制传 例:调用消息的表示符号。 递给消息的接收者,然后停 止活动,等待消息接收者放 弃或返回控制。 • 调用消息也可以用来表示同 步的意义。
11
Object
• 交互图中的对象的常见命名方式:
显示对象名和类名
只显示类名
只显示对象名
12
对象的创建和销毁
• 如果对象位于顺序图的顶部,说明在交 互开始之前该对象已经存在了。如果对 象是在交互的过程中创建的,那么它应 当位于图的中间部分。 • 对象在创建消息发生之后才能存在,对 象的生命线也是在创建消息之后才存在 的。
• [predecessor] • 必须先发生的消息的列表
– 格式:sequence-number ‘,’…’/’
• [guard-condition]
– 警戒条件:条件满足时才能发送该消息 – 格式:‘[‘boolean-expression’]’
28
4.3 顺序图中的消息
• [sequence-expression]
4
交互图的用途
• 帮助分析员对照检查每个use case 中描述的 用户需求,是否已经落实到一些能够完成这 些功能的类中去实现。提醒分析员去补充遗 漏的类或服务。 • 用例模型驱动交互图的开发,交互图驱动类 模型的开发,从而构成了一条从需求到实现 的清晰路径。 • 和类图相互补充 – 类图对对象之间的消息(交互情况)表达不 够详细; – 交互图表示少数几个对象之间的交互。
29
– 其中integer表示消息序号,name表示并发的控制线程, 例: 如果两个消息为3.1a,3.1b,则表示这两个消息在激 活期3.1内是并发的。 – recurrence表示消息是条件发送或循环发送,格式如下:
‘*’ [‘[’ iteration-clause ‘]’] 循环发送 ‘[’ condition-clause ‘]’ 条件发送 例:*[i := 1..n] [x > y] 说明: 1. 如果循环发送的消息是并发的,可用符号*||表示。 2. UML中并没有规定循环子句,条件子句的格式
10
Object
• sequence图和collaboration图描述的是对象 之间的消息发送关系,而不是类之间的关系。 • 最顶上一排矩形框。在交互图中,参与交互 的对象既可以是具体的事物,又可以是原型 化的事物。 • 作为具体的事物,一个对象代表现实世界中 的某个东西。例如,aOrder作为类Order的一 个实例,可以代表一个特定的订单;而如果 作为一个原型化的事件,则aOrder可以代表 类Order的任何一实例。
(1) 请画出汽车自动上锁系统的类图。 (2) 请画汽车自动上锁系统的顺序图。
汽车自动上锁系统的类图
请画出汽车自动上锁系统的顺序图
例 饮料销售机系统
开始对饮料销售机建模:
• 前端的主要功能:
(1)接受顾客的选购和现钞. (2)显示信息. (3)从记录仪接收找回的零钱并交给顾客. (4)返还现钞. (5)从分配器接收饮料.
– 消息顺序表达式。用句点“.”分隔,以冒号结束 “:”。 – 格式:sequence-term ‘,’…’:’
• 每个sequence-term的语法格式为: [ integer | name ] [ recurrence ]
– 消息的顺序号用整数表示。通常以消息1作为一个 消息序列中的第一个消息,消息1.1是在处理消息 1时的第一个需要处理的嵌套消息…, 通过编号描 述了消息的执行顺序号和嵌套层次。 – 例: 1, 1.1, 1.2, 1.2.1, 1.2.2
条件执行-Alt
• 表示多条件的分支结构(选择结构) • 虚线分隔区域,每一个区域设置一个监 护条件,代表一个分支
35
可选执行(Opt)
• 表示满足条件则执行分支结构
36
循环(loop)
37
并行执行(Par)
• 用来表示“并行”的,也就是用来表示两个 或多个并发执行的子片段,并行子片段中单 个元素的执行次序可以以任何可能的顺序相 互操作
简单消息 消息带返回值
[x < 0] 4: invert (x, color) 条件消息 3.1*: update ( ) 循环消息
A3,B4/ C2: copy(a,b)
线程间同步
32
在交互图中使用的一些概念
object
循环
条件
返回消息 创建对象
33
顺序图的结构化控制
• 序列性的消息能很好的说明单一的线性 的序列,但是通常需要展示条件和循环。 有时候要展示多个序列的并发执行。在 顺序图中用结构化控制操作符能展示这 种高层控制。 • 控制操作符表示为顺序图上的一个矩形 区域,其左上角有一个写在小五边形内 的文字标签,用来表明控制操作符的类 型。
30
• [return-value]:将赋值为消息的返回值的
名字列表,如果消息没有返回值,则returnvalue部分被省略。
• [message-name]:消息名 • [argument-list]:消息的参数列表
31
例:一些消息的例子
2: display (x, y)
1.3.1: p:= find(specs)
8
顺序图例子
Form Object Open form Enter information Save Information Create Populate with information Save Data Object
: Actor
9
Sequence图中的组成元素
• 顺序图中的一些主要元素: – Object (对象,包括actor实例) – Lifeline (生命线) – Focus of control(控制焦点)和 activation(激活期) – Message(消息)
说明: 1. 调用消息的接收者必须是一个被动对象(passive object), 即它是一个需要通过消息驱动才能执行动作的对象。 2. 一般调用消息必有一个配对的返回消息,为了图的清晰可 不画出返回消息。。
23
• 异步消息(asynchronous)。异步消息的 发送者通过消息把信号传递给消息的接 收者,然后继续自己的活动,不等待接 收者返回消息或控制。 例:异步消息的表示符号。
39
分析级-用来概要描述交互场景
40
设计级
41
• 类PaymentController必须实现哪些方法
• 如图类Account必须实现哪些方法?
• 例1. 汽车自动上锁系统。 • 车主使用遥控钥匙,按下“锁车”按钮 ,则汽车自动上锁,闪动一下车灯并发 出一声蜂鸣,告诉车主车门已经上锁了 。
3
交互图说明:
• 交互图是用来描述对象之间的动态协作关系以 及协作过程中的行为次序,它常常用来描述一 个用例的行为,显示该用例中所涉及的对象和 这些对象之间的消息传递情况。 • 一般一个use case需要一个或多个顺序图或协 作图,除非特别简单的use case. • 顺序图和协作图从不同的角度表达了系统中的 交互和系统的行为,它们之间可以相互转化。 • 顺序图着重描述对象按照时间顺序的消息交换, 协作图着重描述系统成分如何协同工作。
26
• 超时(time-out)消息。消息发送者发出消 息给接收者并等待指定时间,如果接收 者无法在指定时间内接收消息,则发送 者放弃这个消息。 例:超时消息的表示符号。
27
顺序图中的消息
• 消息的语法格式
– [predecessor] [guard-condition] [sequenceexpression] [return-value :=] message-name ([argument-list])
13
创建对象的两种表示方法:
14
对象撤销
• 如果要撤销一个对象,只要在其生命线 终止点放置一个“X”符号即可,该点通 常是对删除或取消消息的回应。
15
lifeline (生命线)
• 生命线表示对象存在的时间,在顺序图 中生命线表示为从对象图标向下延伸的 一条虚线。 • 生命线是一条垂直的虚线,表示顺序图 中的对象在一段时间内的存在。每个对 象的底部中心的位置都带有生命线。 • 生命线是一个时间线,从顺序图的顶部 一直延伸到底部,所用的时间取决于交 互持续的时间。
20
消息(message)
• 顺序图的主要内容是消息。把消息表示为从一条生 命线到另一条生命线的箭线,箭头指向接受者。 • 消息定义的是对象之间某种形式的通信,它可以激 发某个操作、唤起信号或导致目标对象的创建或撤 销。 • 消息是两个对象之间的单路通信,从发送方到接收 方的控制信息流。 • 消息可以用于在对象间传递参数。 • 在UML中,消息使用箭头来表示,箭头的类型表示 了消息的类型。
第5章 交互图
东北大学信息科学与工程学院
E-Mail: yanglei@ise.neu.edu.cn
杨雷
1/336
开发流程-动态建模
2
交互图(interaction diagram)
• 在对软件密集型(software-intensive)系统 建模时,如何对它的动态方面建模?怎样 才能可视化一个运行的系统? • 交互图(interaction diagram)是一种详细 表示对象之间以及对象与系统外部的参与 者(actor)之间动态联系的图形文档。 • 交互图有两种形式,即顺序图(sequence diagram) 和协作图(collaboration diagram) 。
16
• 对象与生命线结合在一起称为对象的生 命线,对象的生命线包含矩形的对象图 标以及图标下面的生命线
17
控制焦点(Focus of control)
• 控制焦点:顺序图中表示时间段的符号,它 是一个瘦高的矩形,表示对象执行一个动作 所经历的时间段,既可以直接执行,也可以 是通过下级过程执行。矩形的顶部表示动作 的开始,底部表示动作的结束(由一个返回 消息来标记)。图例:
5
主要Hale Waihona Puke Baidu容 顺序图
交互图
6
顺序(Sequence)图
• 定义:也称时序图,顺序图中显示的是 参与交互的对象及对象之间消息交互的 顺序。 • 顺序图强调的是消息交互的时间顺序。
7
说明:
• 顺序图是一个二维图形。在顺序图中水平 方向为对象维,沿水平方向排列参与交互 的对象;竖向方向为时间维,沿垂直向下 方向按时间递增顺序列出各对象所发出和 接收的消息。 • 水平轴上的对象间的相互顺序并不重要。
38
建立sequence图的步骤
1. 确定交互过程的上下文(context); 2. 识别参与交互过程的对象; 3. 为每个对象设置生命线,即确定哪些对象存在于整个交 互过程中,哪些对象在交互过程中被创建和撤销; 4. 从引发这个交互过程的初始消息开始,在生命线之间从 顶到下依次画出随后的各个消息; 5. 如果需要表示消息的嵌套,或/和表示消息发生时的时间 点,则采用FOC; 6. 如果需要说明时间约束,则在消息旁边加上约束说明; 7. 如果需要,可以为每个消息附上前置和后置条件。
UML 1.4/1.5中的异步消息
UML 1.3中的异步消息
24
• 返回消息(return)。从过程调用返回。 例:返回消息的表示符号。
• 如果是从过程调用返回,则返回消息是 隐含包括的,所以返回消息可省略。 • 对于非过程调用,如果有返回消息,必 须明确表示出来。
25
• 阻止(balking)消息。消息发送者发出消 息给接收者,如果接收者无法立即接收 消息,则发送者放弃这个消息。 例:阻止消息的表示符号。
focus of control
18
控制焦点的嵌套
• 控制焦点可以通过将一个控制焦点放在它的 父控制焦点的右边来表示控制焦点的嵌套 (其嵌套深度可以任意)。嵌套的控制焦点 可以由循环、自身操作调用或从另一个对象 的回调所引起,它可以更精确地说明消息的 开始和结束位置。 • 图例:
19
说明: • activation(激活期)表示对象执行一个动 作的期间,也即对象激活的时间段。 • 控制焦点和激活期是同一个概念。
21
消息的类型
• 消息的类型:在UML 1.4以上版本的规范说明 中消息分调用消息,异步消息,返回消息三 种。
– 其它消息类型:如阻止(balking)消息,超时(timeout)消息等为UML核心的扩充。
22
• 调用消息(Procedure call)。 调用消息的发送者把控制传 例:调用消息的表示符号。 递给消息的接收者,然后停 止活动,等待消息接收者放 弃或返回控制。 • 调用消息也可以用来表示同 步的意义。
11
Object
• 交互图中的对象的常见命名方式:
显示对象名和类名
只显示类名
只显示对象名
12
对象的创建和销毁
• 如果对象位于顺序图的顶部,说明在交 互开始之前该对象已经存在了。如果对 象是在交互的过程中创建的,那么它应 当位于图的中间部分。 • 对象在创建消息发生之后才能存在,对 象的生命线也是在创建消息之后才存在 的。
• [predecessor] • 必须先发生的消息的列表
– 格式:sequence-number ‘,’…’/’
• [guard-condition]
– 警戒条件:条件满足时才能发送该消息 – 格式:‘[‘boolean-expression’]’
28
4.3 顺序图中的消息
• [sequence-expression]
4
交互图的用途
• 帮助分析员对照检查每个use case 中描述的 用户需求,是否已经落实到一些能够完成这 些功能的类中去实现。提醒分析员去补充遗 漏的类或服务。 • 用例模型驱动交互图的开发,交互图驱动类 模型的开发,从而构成了一条从需求到实现 的清晰路径。 • 和类图相互补充 – 类图对对象之间的消息(交互情况)表达不 够详细; – 交互图表示少数几个对象之间的交互。
29
– 其中integer表示消息序号,name表示并发的控制线程, 例: 如果两个消息为3.1a,3.1b,则表示这两个消息在激 活期3.1内是并发的。 – recurrence表示消息是条件发送或循环发送,格式如下:
‘*’ [‘[’ iteration-clause ‘]’] 循环发送 ‘[’ condition-clause ‘]’ 条件发送 例:*[i := 1..n] [x > y] 说明: 1. 如果循环发送的消息是并发的,可用符号*||表示。 2. UML中并没有规定循环子句,条件子句的格式
10
Object
• sequence图和collaboration图描述的是对象 之间的消息发送关系,而不是类之间的关系。 • 最顶上一排矩形框。在交互图中,参与交互 的对象既可以是具体的事物,又可以是原型 化的事物。 • 作为具体的事物,一个对象代表现实世界中 的某个东西。例如,aOrder作为类Order的一 个实例,可以代表一个特定的订单;而如果 作为一个原型化的事件,则aOrder可以代表 类Order的任何一实例。
(1) 请画出汽车自动上锁系统的类图。 (2) 请画汽车自动上锁系统的顺序图。
汽车自动上锁系统的类图
请画出汽车自动上锁系统的顺序图
例 饮料销售机系统
开始对饮料销售机建模:
• 前端的主要功能:
(1)接受顾客的选购和现钞. (2)显示信息. (3)从记录仪接收找回的零钱并交给顾客. (4)返还现钞. (5)从分配器接收饮料.
– 消息顺序表达式。用句点“.”分隔,以冒号结束 “:”。 – 格式:sequence-term ‘,’…’:’
• 每个sequence-term的语法格式为: [ integer | name ] [ recurrence ]
– 消息的顺序号用整数表示。通常以消息1作为一个 消息序列中的第一个消息,消息1.1是在处理消息 1时的第一个需要处理的嵌套消息…, 通过编号描 述了消息的执行顺序号和嵌套层次。 – 例: 1, 1.1, 1.2, 1.2.1, 1.2.2