时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;

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

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

时序图轨迹 : 时序图提供了随时间推移的清晰的 可视化的轨迹;

1 时序图组成

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

1.1对象(Object)

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

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

对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;

-- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;

-- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;

1.2生命线(Lifeline)

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

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

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

1.3激活(Activation)

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

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

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

激活去激活的时机 :

-- 激活 : 对象激活是在激活条的顶部激活;

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

1.4消息(Message)

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

消息动作 :

-- 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;

-- 产生结果 : 消息可以触发操作唤起信号, 或使目标对象创建 或 销毁;

消息的异步和同步通信 :

-- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;

-- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;

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

消息类型 :

--  : 两个对象间绘制消息;

--  : 两个对象之间的过程调用;

--  : 两个对象之间的异步消息;

--  : 过程调用中返回的消息;

--  : 绘制反身消息;

2.时序图示例

示例简介 :

-- 使用场景 : 汽车租赁公司;

-- 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);

-- 工作流程 : ① 客户 向 工人 提出租车要求, ② 工人 检查 请求, ③ 客户 付款, ④ 工人 填写 记录, ⑤ 工人 取车;

时序图 :

3.对象的创建和撤销

对象位置 :

-- 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;

-- 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;

交互过程中创建对象的方法 :

-- 消息指向对象 : 消息是构造方法, 箭头指向对象所代表的的矩形;

-- 消息指向激活条 : 消息是构造方法, 箭头指向对象下面的激活条;

撤销对象 : 如果想要在时序图中撤销一个对象, 因为如果同时有几个对象, 如果不进行特殊操作其生命周期将会一样长;

-- 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;

4.时序图建模技术

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

时序图管理策略 :

-- 单一控制流 : 一个单独的时序图只能显示一个控制流;

-- 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;

时序图建模策略 :

-- 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作 类 用例等;

-- 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;

-- 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;

-- 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息 在 后发出的消息上面;

-- 激活期设置 : 可以将实际操作发生的 时间点 消息 明确的显示出来;

-- 时间空间约束 : 每个消息都可以附加合适的时间 和 空间约束;

-- 前置后置条件 : 每条消息可以附加 前置 或 后置 条件;

UML时序图的更多相关文章

  1. [转载]UML时序图总结

    前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过 ...

  2. 10分钟学会使用Markdown绘制UML时序图

    1.1 什么是Markdown? Markdown是一种语法特别少.特别简单的标记语言,用来编写文档.用Markdown编写的文档是纯文本格式,经过编辑器的渲染,就会形成排 版优美的文档,本文就是用M ...

  3. 使用Astah制作UML时序图

    Astah制作UML图--详解 时序图的制作 开篇语: 本文为光荣之路原创文章,欢迎转载,但请注明出处. 做测试的难免看到开发画出各种设计图,都很羡慕,比如: 帅么,漂亮么,其实我们测试人员也可以轻松 ...

  4. UML系列04之 UML时序图

    概要 本章对UML的时序图进行介绍,主要内容包括:时序图介绍时序图组成 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3523355.html 时序图介绍 ...

  5. UML系列03之UML时序图

    时序图介绍 时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图.时序图是用来描述系统内部是如何交互运作的,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协 ...

  6. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  7. uml时序图的初印象-------Day64

    近期有好多想法迫不及待的想去实现,但是其实是在那些最開始想的很明确,感觉会没问题的地方也总是会出现故障,导致稍微有些急躁,还是要淡定啊.又到了周末.明后天要收拾东西搬家,不知道宽带能不能顺利的给挪过去 ...

  8. UML时序图(Sequence Diagram)学习笔记

    什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...

  9. UML时序图总结

    前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过 ...

随机推荐

  1. 几点基于Web日志的Webshell检测思路

    http://www.open-open.com/lib/view/open1456751673359.html

  2. CS001: 清理浮动的几种方法以及对应规范说明

    以下内容转自 http://www.w3help.org/zh-cn/casestudies/001 <!==================> 前言 浮动 Floats 是 CSS 中的 ...

  3. 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph

    题目传送门 /* 二分图点染色:这题就是将点分成两个集合就可以了,点染色用dfs做, 剩下的点放到点少的集合里去 官方解答:首先二分图可以分成两类点X和Y, 完全二分图的边数就是|X|*|Y|.我们的 ...

  4. TCP网络拥塞控制

    拥塞控制过程 数据吞吐量 TCP窗口大小,窗口流量控制,慢启动对TCP的成块数据传输综合作用,可能对TCP的数据传输有意想不到的影响. RTT(Round-Trip Time) :往返时间.是指一个报 ...

  5. hdu 4762 Cut the Cake (大数乘法)

    猜公式: ans=n/m^(n-1) #include<stdio.h> #include<string.h> struct BigNum { ]; int len; }; i ...

  6. Eclipse调试Java的十个技巧

      先提三点 不要使用System.out.println()作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志   1.条件断点 想象一下我们平时如何添加断点,通常的做法是 ...

  7. Intellij Idea 15 生成serialVersionUID的方法

    默认情况下Intellij IDEA是关闭了继承了Serializable接口的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需要做以下设置 ...

  8. C++:主要几种排序算法及其复杂度

     常见排序算法稳定性和复杂度分析快速简记以及转载 分类: 算法 2012-02-07 22:18 399人阅读 评论(1) 收藏 举报 算法mergeshell http://blogold.chin ...

  9. 日期工具类 - DateUtil.java

    日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...

  10. [原]Water Water Search Problems&#39; Set~Orz【updating...】

    [HDU] [POJ] 作者:u011652573 发表于2014-4-30 10:39:04 原文链接 阅读:30 评论:0 查看评论