时序图

时序图(Sequence Diagram)描述了对象之间传递消息的时间顺序,它用来表示用例中的行为顺序,是强调消息时间顺序的交互图。时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换。也就是说,时序图描述了类以及类间相互交换以完成期望行为

时序图的基本元素

时序图包括了5个基本元素,分别是对象(Object)、生命线(Lifeline)、激活(Activation)、和消息(Message)。

对象(Object):表示参与交互的对象。每个对象都带有一条生命周期线,对象被激活(创建或者被引用)时,生命周期线上会出现一个长条(会话),表示对象的存在。将对象置于时序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。对象一般包含以下三种命名方式:

生命线(Lifeline): 生命线是一条垂直的虚线,表示时序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从时序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。对象与生命线结合在一起称为对象的生命线;对象的生命线包含对象图标以及图标下面的生命线

激活(Activation)和去激活(Deactivation):时序图通过激活条来描述对象的激活(Activation)和去激活(Deactivation)。激活代表时序图中的对象执行一项操作的时期。激活期可以被理解成C语言语义中一对花括号“{}”中的内容。激活表示该对象被占用以完成某个任务,去激活指的是对象处于空闲状态,在等待消息。在UML中,为了表示对象是激活的,可以将对象的生命线拓宽成为矩形,图中的矩形称为激活条,对象就是在激活条的顶部被激活的。对象在完成自己的工作后被去激活,这通常发生在一个消息箭头离开对象生命线的时候。

消息(Message):消息由一个对象的生命周期线指向另一个对象的生命周期线。如果消息指到空白的生命周期线,将创建一个新的会话;如果消息指到已有的会话,表示该对象延续已有会话。

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(1)

333

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(2)

33

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(3)

33

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(4)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(5)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(6)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(7)

时序图的高级元素

掌握了时序图的基本元素以后就能绘制出主要的时序逻辑。但对象和对象直接的交互往往是很复杂的,会出现条件判断、轮训等待、异常处理等情况,时序图要“精确的”表达出来,这些基本元素就不够了,需要借助时序图的高级元素。

组合片段(Combined Fragments) :Fragments的意思是片段。在时序图中用于表示紧密相连有逻辑关系的片段。片段内的内容是完整不可拆分的。主要的片段类型有以下几种

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(8)

333

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(9)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(10)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(11)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(12)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(13)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(14)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(15)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(16)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(17)

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(18)

编写时序图的要点
  1. 在业务设计和系统设计过程中,过程的梳理和设计是关键的设计之一,静态模型需要通过动态模型(时序图和协作图)来推演和细化。而且时序要考虑很多复杂的情况,比如并发、比如乱序和异步,所以时序的梳理和设计要力求精细,才能在设计阶段发现问题,这也导致时序图特别是高级元素的概念比较复杂,但这些对于做出精细化的设计是很有用的。
  2. 时序图里面还有一个高级概念“Interaction Use”在这个里面没总结到,“Interaction Use”主要是用于表达通用的、被复用的时序,例如“价格计算”就可以定义成一个独立的时序,这个时序在下单和询价过程中都会被用到。这里没有整理的原因是在StarUML里没试出来该如何表达,并可以灵活跳转到引用的交互。
  3. 时序图除了在详细设计阶段用的上,在业务和概念设计阶段其实也是有用的,时序图是用来表达对象和对象之间交互的时间顺序以及行为顺序,不限定是针对设计模型、概念、业务模型。比如通过鲁棒图我们定义了参与者、边界类、控制类、实体类,这些对象直接交互过程也是可以通过时序图来表达的。
时序图示例

5分钟看懂uml类图(UML学习-时序图SequenceDiagram)(19)

,