UML建模(五)--时序图
UML建模(五)--时序图
1、概述
1.1 时序图的定义
在UML 的表示中,时序图将交互关系表示为一个二维图。其中, 纵向是时间轴,时间沿竖线向下延伸。横向代表了在协作中各独立对象的角色。 角色使用生命线进行表示,当对象存在时 ,生命线用一条虚线表示,此时对象不处于激活状态,当对象的过程处于激活状态时,生命线是一个双道线。 时序图中的消息使用从一个对象的生命线到另一个对象生命线的箭头表示,箭头以时间顺序在图中从上到下排列。
==时序图==表示了系统在参与者互动执行某一个用例期间,系统内部的一群对象的协作情况。一个用例就对应一个时序图。==序列图是对系统动态行为进行描述。用于用例分析和设计阶段。==
1.2 时序图在项目开发里的作用
时序图作为一种描述在给定语境中消息是如何在对象间传递的图形化方式,在使用其进行建模时,主要可以将其用途分为以下三个方面:
(1) 确认和丰富一个使用语境的逻辑表达。 一个系统的使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。
( 2) 细化用例的表达。 我们前面已经提到,时序图的主要用途之一,就是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的时序图。
(3) 有效地描述如何分配各个类的职责以及各类具有相应职责的原因。 我们可以根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。
1.3 对比
1、序列图和协作图
序列图跟协作图相似,两种图传递的意思是一样的。不同的是序列图强调的是消息的传递顺序,它将交互关系表示为一个二维图。纵向是时间轴,横轴是对象,对象的生命周期沿竖线向下延伸。而协作图强调的是系统间的组织结构,重在表现对象的角色,消息的传递顺序不明显。
时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;
看示例:
时序图:
image.png
协作图
image.png
2、时序图和类图、用例图
用例图是系统外部对象(参与者)与系统这两大对象之间的互动,而类图是对系统中涉及到得所有对象,进行抽象描述。时序图是参与者和系统进行交互,系统内部对象之间的具体互动实现。==SO,时序图关联了类图与用例图,可以通过用例图和类图进行整合。==
2、元素
2.1 对象(Actor):系统内部参与用例的一群对象。
image.png<font color=red size=4>对象</font> : 时序图中的对象在交互中扮演的角色就是对象;
<font color=red size=4>对象的符号</font> : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;
<font color=red size=4>对象创建时机</font> : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
-- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;
-- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;
2.2 生命线(Lifeline)
image.png<font color=red size=4>生命线</font> : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;
<font color=red size=4>生命线作用</font> : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;
<font color=red size=4>对象的生命线 </font> : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;
2.3 激活(Activation )
image.png时序图可以描述对象的激活(Activation ),激活是对象操作的执行,它表示一个对象直接地或通过从属操作完成操作的过程。它对执行的持续时间和执行与其调用者之间的控制关系进行建模。
激活在时序图中用一个细长的矩形框表示,它的顶端与激活时间对齐而底端与完成时间对齐。被执行的操作根椐不同风格表示成一个附在激活符号旁或在左边空白处的文字标号。
<font color=red size=4>激活(Activation)</font> : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;
<font color=red size=4>去激活(Deactivation)</font> : 指对象处于空闲状态, 在等待消息激活这个对象;
<font color=red size=4>激活的表示 </font> : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;
<font color=red size=4>激活去激活的时机</font> :
-- 激活 : 对象激活是在激活条的顶部激活;
-- 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;
2.4 消息(Message)
<font color=red size=4>消息概念</font> : 定义 交互和协作中交换信息 的类, 对对象之间的通信内容建模;
<font color=red size=4>消息动作</font> :
-- 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过发送和接收消息进行通信;
-- 产生结果 : 消息可以触发操作, 唤起信号, 或使目标对象创建或销毁;
<font color=red size=4>消息的异步和同步通信</font> :
-- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的命名的对象间的异步通信;
-- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;
3、示例
示例简介 :
-- 使用场景 : 汽车租赁公司;
-- 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);
-- 工作流程 : ① 客户 向 工人 提出租车要求, ② 工人 检查 请求, ③ 客户 付款, ④ 工人 填写 记录, ⑤ 工人 取车;
时序图 :
image.png
4、时序图建模技术
<font color=red size=4>时序图使用时机</font> : 对动态行为建模, 强调时间展开信息的次序的时候, 使用时序图;
<font color=red size=4>时序图管理策略 </font> :
-- 单一控制流 : 一个单独的时序图只能显示一个控制流;
-- 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;
<font color=red size=4>时序图建模策略</font> :
-- 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作 类 用例等;
-- 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;
-- 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;
-- 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息 在 后发出的消息上面;
-- 激活期设置 : 可以将实际操作发生的 时间点 消息 明确的显示出来;
-- 时间空间约束 : 每个消息都可以附加合适的时间 和 空间约束;
-- 前置后置条件 : 每条消息可以附加 前置 或 后置 条件;
参考
1、《UML图之五——时序图》
2、《UML总结---时序图》
3、《 UML入门 之 交互图 -- 时序图 协作图详解》