软件工程---交互建模之交互图,顺序图与协作图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[ 条件子句 ] 条件子句一般用来表示分枝而不是用作守卫条件[x<0]是两个可
以用来分枝的条件子句这两个条件只能有一个为真因而只有一 个分枝被执行(即发送与分枝有关的消息) 条件子句和循环子句都可以用伪代码或真正的编程语言来表示 序列表达式用冒号结束
返回值、消息名和参数表
返回值表示一个操作调用(即一个消息)的结 果
时序图
时序图绘制技巧
需求分析阶段的时序图
登录
登录界面
业务逻辑对象
数据访问对象
用户 打开界面
loop [count<=3 and valid==false] 输入数据
提交请求
验证
验证
返回结果
返回结果
返回结果
查询用户信息
时序图
时序图绘制技巧
系统设计阶段的时序图
Login
User
loginForm
如果需要考察单个对象的行为就需要使用状态图; 如果需要考察跨用例行为就需要考虑使用活动图。
时序图
时序图绘制技巧
需求分析阶段的时序图:主要用于描述用例中对象之间 的交互,可以使用自然语言来绘制,用于细化需求。从 业务的角度进行建模,用描述性的文字叙述消息的内容。
系统设计阶段的时序图:确切表示系统设计中对象之间 的交互,考虑到具体的系统实现,对象之间通过方法调 用传递消息。
顺序图制作提示: 只关注核心对象 顺序图用于描述某个用例的部分交互细节
3.3 案例:存款
name表示并发控制线程,例如1.2a和1.2b为同时发送 的并发消息
recurrence表示一个条件或迭代的执行有两种选择 * [ 循环子句 ] 循环子句(iteration-clause)用来指定一个循环(重复执行) 例如:一个包括循环的消息 1.1 *[x = 1..10] : doSomething()
a3,b4/c2: copy(a,b)
线程同步
1.1a, 1.1b/1.2: continue() 带前缀消息
在发送线程c的第2个消 息之前,必须先发送线 程a的第3个消息和线程b 的第在4发个送消消息息1.2之前必须
已经同时发送并发消息给 线程a和b
前缀(predecessor)
语法:消息序列号,消息序列号, ... / 前缀是一个用来同步线程或路径(path)的表达式
顺序图中消息编号可显示,也可不显示。 协作图中必须显示。
2.5 消息
UML三种消息:
调用(Procedure Call) 异步(Asynchronous) 返回(Return) 自关联消息(Self Message)
2.5 消息
UML三种消息:
调用(Procedure Call) 发送者把消息发送后,等待直到接收者返回控制, 可以表示同步(synchronous message); 实心箭头符号
时序图
时序图实例分析
绘制图书管理系统“借书”用例的时序图(业务模 型)。 图书管理员打开借书界面,输入借书信息并提交 借书请求;系统验证借书卡状态,如果借书卡未 借书则记录借书信息且修改图书状态和借书卡状 态,并提示借书成功;否则提示借书失败。
借书
时序图
时序图实例分析
图书管理员
借书界面
打开借书界面
理论上需要为每一个用例创建一个时序图,但是如果一 个用例的交互对象很简单可以不需要创建时序图。
时序图
时序图绘制技巧 时序图绘制步骤: 确定参与交互的执行者 确定与执行者直接交互的对象 确定与交互相关的全部对象(顺藤摸瓜)
时序图
时序图绘制技巧
如果需要考察单个用例内部多个对象的行为就应该使用 时序图;
到配置上。
1 交互图概述
Interaction diagram,是描述对象之间的 关系和对象之间的信息传递的图;
通常用来描述一个用例的行为,实现一个 用例,完成对系统的动态行为建模;
包含两种:
顺序图(或时序图,sequence diagram) 协作图(collaboration diagram)
意思是在发送当前消息之前指定序列号的消息被处理 (必须连续执行)
消息序列号之间用逗号隔开,用斜杠结束
例如 1.1a, 1.1b/1.2: continue() ,在发送消息1.2之前 必须已经同时发送并发消息给线程a和b
守卫条件(guard-condition)
语法: [ 条件短语 ]
条件短语通常用伪代码或真正的程序语言来表示, UML并不规定其语法
control) 消息(message)
2.2 活动者或对象
活动者和对象按照从左到右的顺序排列 一般最多两个活动者,他们分列两端。启动
这个用例的活动者往往排在最左边;接收消 息的活动者则排在最右端; 对象从左到右按照重要性排列或按照消息先 后顺序排列。
2.2 活动者或对象
对象的命名方式有三种:
validator
userDao
loop [count<=3 and valid==false]
input
submit
validate(account,password)
validate(account,password)
display()
return valid
return valid
findUser(account,password)
2.5 消息
格式
[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
带返回值的嵌套消息
[x<0] 4: invert(x, color) 条件消息
3.1 *[x = 1..10] : update() 循环消息
输入借书信息
借书卡状态验证器
数据库访问对象
提交借书请求
借书
opt [valid=true]
显示成功信息
修改图书状态 返回成功
修改借书卡状态
返回成功
修改状态 修改状态
opt [valid==false] 显示失败信息
2.7 建立顺序图的步骤
确定交互的范围; 识别参与交互的对象和活动者; 设置对象生命线开始和结束; 设置消息; 细化消息;
面向对象方法中,消息是对象间交互信息的主 要方式。
结构化程序设计中,模块间传递信息的方式主 要是过程(或函数)调用。
对象A向对象B发送消息,可以简单地理解为 对象A调用对象B的一个操作(operation)。
Hale Waihona Puke Baidu
2.5 消息
顺序图中,尽力保持消息的顺序是从左到 右排列的。
一个顺序图的消息流开始于左上方,消息2 的位置比消息1低,这意味着消息2的顺序 比消息1要迟。
交互建模之交互图 顺序图与协作图
用例图(功能模型): 从用户的角度描述系统能提供哪些功能。 • 结构模型视图(静态):
类图:描述系统的静态结构; 对 象图:描述系统在某个时刻的静态结构; 包图:将类分组成更高层次的静态结构。 • 行为模型视图(动态) 顺序图:按时间顺序描述系统元素之间的交互; 协作图:从时间和空间的顺序描述系统元素之间的交互; 状态图:描述系统元素对事件的响应引起的状态转换; 活动图:描述系统元素的活动。 • 实现模型视图 构件图:描述实现系统的元素的组织结构; 配置图:描述环境元素的配置,并把实现系统的元素映射
例如,[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, 等。这样的序列号不仅能够表示消息的顺序而且还 能表示消息的嵌套关系(当消息是异步消息时消息为嵌套 的操作调用及返回)
顺序图
面向时间描述对象交互的图
协作图
对象间消息的结构化视图
打电话
小张
电话
小王
顺 序 图 举 例
拿起电话 提示正常音
按小王的电话号码 提示接通音 交谈 挂断电话
忙音
挂断电话
对象交互的代码呈现
2 顺序图
按照时间顺序显式对象之间交互的图
2.1 顺序图的组成
2.1 顺序图的组成
活动者(actor)或者 对象(object) 生命线(lifeline) 激活(activation)/ 控制焦点(focus of
2.4 激活期
激活期(activation)/控制焦点(focus of control)
对象在一段时间内获得了焦点,也称激活期 对象执行某个动作的时期 空心矩形条 激活期的长短意味着 对象执行某个动作的 时间有多长,可以 通过约束{10ms}来 限制执行时间的长短。
2.4 激活期
2.5 消息
同步消息的发送者把控制传递给消息的接收者,然后暂停活动 ,等待消息接收者的应答,收到应答后才继续自己的操作。
2.5 消息
UML三种消息:
异步(Asynchronous) 消息发送后,发送者继续操作,不等待,常用于并 发;
异步消息(Asynchronous message)用于控制流在完 成前不需要中断的情况。同步消息的发送者把控制传递给 消息的接收者,然后继续自己的活动,不需等待接收者返 回信息或控制
2.5 消息
UML三种消息:
返回(Return) 表示消息的返回。消息上方放置返回值 同步消息的返回可以画出(如果想明确表达返回 值),也可以不画出,直接隐含。 异步消息可以有返回,也可以没有。(可以响应异 步消息,也可以不响应该异步消息。) 如果顺序图上显示有编号,则返回消息的编号和当 初发送消息的编号完全一样。 虚线箭头表示,和依赖关系不要混淆
2.8 案例:存款
分析级别的顺序图,粗略, 双斜杠
忽略消息同步异步类别也 无妨
Add title 新增书目和图书操作
2.9 练习
用户打印文件,计算机向打印服务器发送 打印命令,打印机如果空闲,则直接打印, 否则把打印文件存储在打印队列中。
2.9 练习
管理员通过课程管理器打印课程UML的信息
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时 间内的存在
垂直的虚线 如果对象生命期结束, 则用注销符号表示 对象默认的位置在图 顶部,表示对象在交互 之前已经存在 如果是在交互过程中 由另外的对象所创建, 则位于图的中间某处。
ATM登录
ATM用户 插卡
提示输入密码 loop [Password Wrong]
输入密码
返回验证结果
ATM
Bank
验证密码 返回验证结果
验证
顺序图
时序图绘制技巧
以用例为单位创建时序图,针对每个用例,考察为完成 它所描述的功能需要哪些对象的操作参与执行,并且进 一步考察这些操作的执行需要通过消息而引起其他哪些 对象操作的执行。把这些对象以及参与交互的执行者组 织到一个时序图中。
以用来分枝的条件子句这两个条件只能有一个为真因而只有一 个分枝被执行(即发送与分枝有关的消息) 条件子句和循环子句都可以用伪代码或真正的编程语言来表示 序列表达式用冒号结束
返回值、消息名和参数表
返回值表示一个操作调用(即一个消息)的结 果
时序图
时序图绘制技巧
需求分析阶段的时序图
登录
登录界面
业务逻辑对象
数据访问对象
用户 打开界面
loop [count<=3 and valid==false] 输入数据
提交请求
验证
验证
返回结果
返回结果
返回结果
查询用户信息
时序图
时序图绘制技巧
系统设计阶段的时序图
Login
User
loginForm
如果需要考察单个对象的行为就需要使用状态图; 如果需要考察跨用例行为就需要考虑使用活动图。
时序图
时序图绘制技巧
需求分析阶段的时序图:主要用于描述用例中对象之间 的交互,可以使用自然语言来绘制,用于细化需求。从 业务的角度进行建模,用描述性的文字叙述消息的内容。
系统设计阶段的时序图:确切表示系统设计中对象之间 的交互,考虑到具体的系统实现,对象之间通过方法调 用传递消息。
顺序图制作提示: 只关注核心对象 顺序图用于描述某个用例的部分交互细节
3.3 案例:存款
name表示并发控制线程,例如1.2a和1.2b为同时发送 的并发消息
recurrence表示一个条件或迭代的执行有两种选择 * [ 循环子句 ] 循环子句(iteration-clause)用来指定一个循环(重复执行) 例如:一个包括循环的消息 1.1 *[x = 1..10] : doSomething()
a3,b4/c2: copy(a,b)
线程同步
1.1a, 1.1b/1.2: continue() 带前缀消息
在发送线程c的第2个消 息之前,必须先发送线 程a的第3个消息和线程b 的第在4发个送消消息息1.2之前必须
已经同时发送并发消息给 线程a和b
前缀(predecessor)
语法:消息序列号,消息序列号, ... / 前缀是一个用来同步线程或路径(path)的表达式
顺序图中消息编号可显示,也可不显示。 协作图中必须显示。
2.5 消息
UML三种消息:
调用(Procedure Call) 异步(Asynchronous) 返回(Return) 自关联消息(Self Message)
2.5 消息
UML三种消息:
调用(Procedure Call) 发送者把消息发送后,等待直到接收者返回控制, 可以表示同步(synchronous message); 实心箭头符号
时序图
时序图实例分析
绘制图书管理系统“借书”用例的时序图(业务模 型)。 图书管理员打开借书界面,输入借书信息并提交 借书请求;系统验证借书卡状态,如果借书卡未 借书则记录借书信息且修改图书状态和借书卡状 态,并提示借书成功;否则提示借书失败。
借书
时序图
时序图实例分析
图书管理员
借书界面
打开借书界面
理论上需要为每一个用例创建一个时序图,但是如果一 个用例的交互对象很简单可以不需要创建时序图。
时序图
时序图绘制技巧 时序图绘制步骤: 确定参与交互的执行者 确定与执行者直接交互的对象 确定与交互相关的全部对象(顺藤摸瓜)
时序图
时序图绘制技巧
如果需要考察单个用例内部多个对象的行为就应该使用 时序图;
到配置上。
1 交互图概述
Interaction diagram,是描述对象之间的 关系和对象之间的信息传递的图;
通常用来描述一个用例的行为,实现一个 用例,完成对系统的动态行为建模;
包含两种:
顺序图(或时序图,sequence diagram) 协作图(collaboration diagram)
意思是在发送当前消息之前指定序列号的消息被处理 (必须连续执行)
消息序列号之间用逗号隔开,用斜杠结束
例如 1.1a, 1.1b/1.2: continue() ,在发送消息1.2之前 必须已经同时发送并发消息给线程a和b
守卫条件(guard-condition)
语法: [ 条件短语 ]
条件短语通常用伪代码或真正的程序语言来表示, UML并不规定其语法
control) 消息(message)
2.2 活动者或对象
活动者和对象按照从左到右的顺序排列 一般最多两个活动者,他们分列两端。启动
这个用例的活动者往往排在最左边;接收消 息的活动者则排在最右端; 对象从左到右按照重要性排列或按照消息先 后顺序排列。
2.2 活动者或对象
对象的命名方式有三种:
validator
userDao
loop [count<=3 and valid==false]
input
submit
validate(account,password)
validate(account,password)
display()
return valid
return valid
findUser(account,password)
2.5 消息
格式
[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
带返回值的嵌套消息
[x<0] 4: invert(x, color) 条件消息
3.1 *[x = 1..10] : update() 循环消息
输入借书信息
借书卡状态验证器
数据库访问对象
提交借书请求
借书
opt [valid=true]
显示成功信息
修改图书状态 返回成功
修改借书卡状态
返回成功
修改状态 修改状态
opt [valid==false] 显示失败信息
2.7 建立顺序图的步骤
确定交互的范围; 识别参与交互的对象和活动者; 设置对象生命线开始和结束; 设置消息; 细化消息;
面向对象方法中,消息是对象间交互信息的主 要方式。
结构化程序设计中,模块间传递信息的方式主 要是过程(或函数)调用。
对象A向对象B发送消息,可以简单地理解为 对象A调用对象B的一个操作(operation)。
Hale Waihona Puke Baidu
2.5 消息
顺序图中,尽力保持消息的顺序是从左到 右排列的。
一个顺序图的消息流开始于左上方,消息2 的位置比消息1低,这意味着消息2的顺序 比消息1要迟。
交互建模之交互图 顺序图与协作图
用例图(功能模型): 从用户的角度描述系统能提供哪些功能。 • 结构模型视图(静态):
类图:描述系统的静态结构; 对 象图:描述系统在某个时刻的静态结构; 包图:将类分组成更高层次的静态结构。 • 行为模型视图(动态) 顺序图:按时间顺序描述系统元素之间的交互; 协作图:从时间和空间的顺序描述系统元素之间的交互; 状态图:描述系统元素对事件的响应引起的状态转换; 活动图:描述系统元素的活动。 • 实现模型视图 构件图:描述实现系统的元素的组织结构; 配置图:描述环境元素的配置,并把实现系统的元素映射
例如,[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, 等。这样的序列号不仅能够表示消息的顺序而且还 能表示消息的嵌套关系(当消息是异步消息时消息为嵌套 的操作调用及返回)
顺序图
面向时间描述对象交互的图
协作图
对象间消息的结构化视图
打电话
小张
电话
小王
顺 序 图 举 例
拿起电话 提示正常音
按小王的电话号码 提示接通音 交谈 挂断电话
忙音
挂断电话
对象交互的代码呈现
2 顺序图
按照时间顺序显式对象之间交互的图
2.1 顺序图的组成
2.1 顺序图的组成
活动者(actor)或者 对象(object) 生命线(lifeline) 激活(activation)/ 控制焦点(focus of
2.4 激活期
激活期(activation)/控制焦点(focus of control)
对象在一段时间内获得了焦点,也称激活期 对象执行某个动作的时期 空心矩形条 激活期的长短意味着 对象执行某个动作的 时间有多长,可以 通过约束{10ms}来 限制执行时间的长短。
2.4 激活期
2.5 消息
同步消息的发送者把控制传递给消息的接收者,然后暂停活动 ,等待消息接收者的应答,收到应答后才继续自己的操作。
2.5 消息
UML三种消息:
异步(Asynchronous) 消息发送后,发送者继续操作,不等待,常用于并 发;
异步消息(Asynchronous message)用于控制流在完 成前不需要中断的情况。同步消息的发送者把控制传递给 消息的接收者,然后继续自己的活动,不需等待接收者返 回信息或控制
2.5 消息
UML三种消息:
返回(Return) 表示消息的返回。消息上方放置返回值 同步消息的返回可以画出(如果想明确表达返回 值),也可以不画出,直接隐含。 异步消息可以有返回,也可以没有。(可以响应异 步消息,也可以不响应该异步消息。) 如果顺序图上显示有编号,则返回消息的编号和当 初发送消息的编号完全一样。 虚线箭头表示,和依赖关系不要混淆
2.8 案例:存款
分析级别的顺序图,粗略, 双斜杠
忽略消息同步异步类别也 无妨
Add title 新增书目和图书操作
2.9 练习
用户打印文件,计算机向打印服务器发送 打印命令,打印机如果空闲,则直接打印, 否则把打印文件存储在打印队列中。
2.9 练习
管理员通过课程管理器打印课程UML的信息
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时 间内的存在
垂直的虚线 如果对象生命期结束, 则用注销符号表示 对象默认的位置在图 顶部,表示对象在交互 之前已经存在 如果是在交互过程中 由另外的对象所创建, 则位于图的中间某处。
ATM登录
ATM用户 插卡
提示输入密码 loop [Password Wrong]
输入密码
返回验证结果
ATM
Bank
验证密码 返回验证结果
验证
顺序图
时序图绘制技巧
以用例为单位创建时序图,针对每个用例,考察为完成 它所描述的功能需要哪些对象的操作参与执行,并且进 一步考察这些操作的执行需要通过消息而引起其他哪些 对象操作的执行。把这些对象以及参与交互的执行者组 织到一个时序图中。