什么是序列图/时序图?

前言

UML Sequence Diagrams是交互图,详细说明了如何执行操做。 它们捕获协做环境中对象之间的交互。 序列图是时间焦点,它们经过使用图表的垂直轴来直观地显示交互的顺序,以表示消息的发送时间和时间。算法

Sequence Diagram in UML Diagram Hierarchy

序列图捕获:框架

  • 在实现用例或操做的协做中发生的交互(实例图或通用图)
  • 系统用户与系统之间,系统与其余系统之间或子系统之间的高级交互(有时称为系统序列图)

序列图的目的

  • 模拟系统中生成的对象之间的高级交互
  • 对实现用例的协做中的对象实例之间的交互建模
  • 对实现操做的协做中的对象之间的交互建模
  • 模拟通用交互(显示经过交互的全部可能路径)或交互的特定实例(仅显示交互中的一条路径)

初识序列图

序列图显示元素随着时间的推移而相互做用,它们根据对象(水平)和时间(垂直)组织:ide

对象维度

  • 横轴表示交互中涉及的元素
  • 传统上,操做中涉及的对象根据它们什么时候参与消息序列从左到右列出。 可是,横轴上的元素能够按任何顺序出现

时间维度

纵轴表示页面下的时间进程(或进展)。函数

注意:序列图中的时间都是关于排序的,而不是持续时间。 交互图中的垂直空间与交互持续时间无关。oop

序列图例子:旅店系统

序列图是一个交互图,详细说明了如何执行操做 - 发送什么消息以及什么时候发送消息。 序列图根据时间进行组织。 当你走下页面时,时间会进行。 操做中涉及的对象根据它们什么时候参与消息序列从左到右列出。测试

如下是进行酒店预订的序列图。 启动消息序列的对象是预留窗口。ui

Sequence Diagram Example

注意:类和对象图是静态模型视图。 交互图是动态的。 它们描述了对象如何协做。编码

序列图表示法

Actor线程

Actor

  • 与主体交互的实体所扮演的一种角色(例如,经过交换信号和数据)
  • 在主题外部(即,在某个意义上,Actor的实例不是其相应主题的实例的一部分)。
  • 表示人类用户,外部硬件或其余主题所扮演的角色。

参与者不必定表明特定的物理实体,而仅仅表明某个实体的特定角色 一个对象能够扮演几个不一样Actor的角色,相反,一个Actor能够由多个不一样的对象来表示3d

Lifeline

Lifeline

生命线表明交互中的个体参与者

Activations

Activation

  • 生命线上的细长矩形表示元素执行操做的时间段
  • 矩形的顶部和底部分别与启动和完成时间对齐

Call Message

Call Message

  • Message定义了交互的生命线之间的特定通讯。
  • call message是一种表示目标生命线操做调用的消息

注意:call message里面出现的函数调用时目标对象的函数,而不是调用者的函数

Return Message

Return Message

  • 返回消息是一种消息,表示将信息传递回相应的前消息的调用者。

Self Message

Self-Message

  • self message是一种表示同一辈子命线的消息调用的消息(能够理解为调用本身的方法)

Recursive Message(递归消息)

Recursive Message

  • 递归消息是一种表示同一辈子命线的消息调用的消息。 它的目标指向在调用消息的激活之上进行激活。

Create Message

Create Message

  • 建立消息是一种表示(目标)生命线实例化的消息(初始化一个目标对象)

Destroy Message

Destroy Message

销毁消息是一种消息,表示破坏目标生命线生命周期的请求(销毁一个目标对象)

Duration Message

Duration Message

持续时间消息显示消息调用的两个时间点之间的距离

Note

Note

注释(注释)使得可以将各类备注附加到元素。 注释不带语义力,但可能包含对建模者有用的信息。

消息和控制焦点

  • 事件是发生事情的交互中的任何一点。
  • Focus of control: also called execution occurrence, an execution occurrence
  • 它在生命线上显示为高而薄的矩形
  • 它表示元素执行操做的时间段。 矩形的顶部和底部分别与启动和完成时间对齐

Message and Focus of Control

序列片断(Sequence Fragments)

  • UML 2.0引入了序列(或交互)片断。 序列片断能够更轻松地建立和维护准确的序列图
  • 序列片断表示为一个框,称为组合片断,它包含序列图中的一部分相互做用
  • 片断运算符(在左上角的短号)表示片断的类型
  • 片断类型:ref,assert,loop,break,alt,opt,neg

Fragment

Operator Fragment Type
alt 备用多个片断:只执行条件为真的片断
opt 可选:仅当提供的条件为真时才执行片断。 至关于只有一条迹线的alt。
par 并行:每一个片断并行运行
loop 循环:片断能够执行屡次,而且防御指示迭代的基础
region 关键区域:片断只能有一个线程一次执行它
neg 否认:片断显示无效的交互
ref 参考:指在另外一个图上定义的交互。 绘制框架以覆盖交互中涉及的生命线。 您能够定义参数和返回值。
sd 序列图:用于包围整个序列图

能够组合帧以捕获例如循环或分支。 组合片断关键字:alt,opt,break,par,seq,strict,neg,critical,ignore,consideration,assert和loop。 约束一般用于显示消息的时序约束。 它们能够应用于一条消息的时间或消息之间的间隔。

例子

Combined Fragment example

用例场景建模的序列图

用户需求被捕获为精简为方案的用例。 用例是外部参与者与系统之间交互的集合。 在UML中,用例是:

“系统(或实体)能够执行的一系列动做(包括变体)的规范,与系统的参与者进行交互。”

场景是经过用例的一个路径或流程,该用例描述在系统的一个特定执行期间发生的事件序列,其一般由序列图表示。

Sequence Diagram for Use Case

序列图 - 代码前的模型

序列图可能有点接近代码级别,那么为何不编码该算法而不是将其绘制为序列图?

  • 一个好的序列图仍然比实际代码的水平高一点
  • 序列图是语言中立的
  • 非编码人员能够作序列图
  • 做为一个团队,更容易作序列图
  • 可用于测试和/或UX线框图

原文连接

What is Sequence Diagram?

相关文章
相关标签/搜索