UML之时序图详解

作者 : 万境绝尘
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131

动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图;
– 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互;
– 协作图 : 描述对象之间的交互关系;

一. 时序图 (Sequence Diagram)

1.时序图的概念

时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;
时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换以完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件;

时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.
时序图轨迹 : 时序图提供了随时间推移的, 清晰的 可视化的轨迹;

2. 时序图组成

时序图组成 : 时序图包括四个元素 对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message);

(1) 对象(Object)

这里写图片描述

对象 : 时序图中的对象在交互中扮演的角色就是对象;

对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;

对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
– 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;
– 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;

(2) 生命线(Lifeline)

这里写图片描述

生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;

生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;

对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;

(3) 激活(Activation)

这里写图片描述

激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;

去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;

激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;

激活去激活的时机 :
– 激活 : 对象激活是在激活条的顶部激活;
– 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;

(4) 消息

消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;

消息动作 :
– 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;
– 产生结果 : 消息可以触发操作, 唤起信号, 或使目标对象创建 或 销毁;

消息的异步和同步通信 :
– 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;
– 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;

时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;

消息类型 :
这里写图片描述 : 两个对象间绘制消息;
这里写图片描述 : 两个对象之间的过程调用;
这里写图片描述: 两个对象之间的异步消息;
这里写图片描述: 过程调用中返回的消息;
这里写图片描述 : 绘制反身消息;

3. 时序图示例

示例简介 :
– 使用场景 : 汽车租赁公司;
– 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);
– 工作流程 : ① 客户 向 工人 提出租车要求, ② 工人 检查 请求, ③ 客户 付款, ④ 工人 填写 记录, ⑤ 工人 取车;

时序图 :

这里写图片描述

4. 对象的创建和撤销

对象位置 :
– 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;
– 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;

交互过程中创建对象的方法 :
– 消息指向对象 : 消息是构造方法, 箭头指向对象所代表的的矩形;
这里写图片描述
– 消息指向激活条 : 消息是构造方法, 箭头指向对象下面的激活条;
这里写图片描述

撤销对象 : 如果想要在时序图中撤销一个对象, 因为如果同时有几个对象, 如果不进行特殊操作其生命周期将会一样长;
– 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;
这里写图片描述

5. 时序图建模技术

时序图使用时机 : 对动态行为建模, 强调时间展开信息的次序的时候, 使用时序图;

时序图管理策略 :
– 单一控制流 : 一个单独的时序图只能显示一个控制流;
– 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;

时序图建模策略 :
– 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作 类 用例等;
– 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;
– 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;
– 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息 在 后发出的消息上面;
– 激活期设置 : 可以将实际操作发生的 时间点 消息 明确的显示出来;
– 时间空间约束 : 每个消息都可以附加合适的时间 和 空间约束;
– 前置后置条件 : 每条消息可以附加 前置 或 后置 条件;

6. Rational Rose 时序图 操作

(1) 创建时序图

新建时序图 : 在 视图浏览器 中 右键点击 Logical View (逻辑视图), 选择 New(新建) -> Sequence Diagram(时序图);
这里写图片描述

(2) 添加对象

添加对象 : 时序图中有两种对象, 一种是参与者Actor, 一种是普通的对象;
– 参与者对象 : 在类图中创建一个对象, 将其 Stereotype 修改为 Actor, 就变成了参与者, 然后在 视图浏览器中将这个元素拖到时序图中即可;
这里写图片描述
– 普通对象 : 直接在 时序图中 点击 按钮, 在界面中创建对象;
– 两种对象效果 :

这里写图片描述
设置对象属性 : 双击对象, 在弹出的 General 对话框中修改对象属性;
– Name : 对象名称, 不输入也可以;
– Document : 描述对象的文档;

这里写图片描述
设置对象持续性 :
– 持续 (Persistent) : 对象保存在数据库 或 其它形式的永久存储体中;
– 静态 (Static) : 对象保存在内存中知道程序终止;
– 临时 (Transient) : 短时间内保存在内存中;

(3) 添加消息

消息作用 : 消息用两个对象生命线之间的箭头表示, 一个对象可以通过消息请求另一个对象执行某个操作;

增加消息 :
– 发送消息 : 将 从发送消息对象的生命线 拖到 接收消息对象的生命线上;
– 显示取消编号和激活条 : 菜单栏 Tools -> Options -> Diagram 选项卡, Sequence numbering 是消消息编号 , Focus of control 显示激活条;

这里写图片描述

你可能感兴趣的:(uml,设计模式)