时序图作为常⽤的UML交互图,可以直观的传达系统内外之间的交互过程,经常⽤在详细设计⽂档中。下⾯本⽂综合参考了多篇时序图的教程,根据作者的思路将时序图做了更深⼊的讲解。
⼀、 什么是时序图?时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是⼀种UML交互图。它通过描述对象之间发送消息的时间顺序显⽰多个对象之间的动态协作。
时序图是⼀个⼆维图,横轴表⽰对象,纵轴表⽰时间,消息在各对象之间横向传递,依照时间顺序纵向排列。
⼆、 时序图的作⽤是什么?1、展⽰对象之间交互的顺序。将交互⾏为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展⽰对象之间的交互;2、相对于其他UML图,时序图更强调交互的时间顺序;3、可以直观的描述并发进程。
三、 组成元素有哪些?1. ⾓⾊(Actor)系统⾓⾊,可以是⼈、机器、其他系统、⼦系统;在时序图中⽤
2. 对象(Object)表⽰。
(1)对象的三种命名⽅式
第⼀种⽅式包括对象名和类名,例如:直播课时:课时,在时序图中,⽤“对象:类”表⽰;第⼆种⽅式只显⽰类名,即表⽰它是⼀个匿名对象,例如: :课程;在时序图中,⽤“:类”表⽰;第三种⽅式只显⽰对象名不显⽰类名,例如:讲师;在时序图中,⽤“对象”表⽰。(2)命名⽅式的选择
三种命名⽅式均可,哪种最容易让阅读该时序图的⼈理解,就选择哪种。(3)对象的排列顺序
对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交互频繁的对象尽可能的靠拢;2.把初始化整个交互活动的对象放置在最左端。
3. ⽣命线(Lifeline)在时序图中表⽰为从对象图标向下延伸的⼀条虚线,表⽰对象存在的时间。
4. 控制焦点(Focus of Control)⼜称为激活期,表⽰时间段的符号,在这个时间段内对象将执⾏相应的操作。它可以被理解成C语⾔语义中⼀对花括号{ }中的内容;⽤⼩矩形表⽰。
5. 消息(Message)消息⼀般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。
消息的发送者把控制传递给消息的接收者,然后停⽌活动,等待消息的接收者放弃或者返回控制。⽤来表⽰同步的意义;
消息发送者通过消息把信号传递给消息的接收者,然后继续⾃⼰的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发⼯作的。
返回消息表⽰从过程调⽤返回。
6. ⾃关联消息表⽰⽅法的⾃⾝调⽤或者⼀个对象内的⼀个⽅法调⽤另外⼀个⽅法。
7. 组合⽚段组合⽚段⽤来解决交互执⾏的条件和⽅式,它允许在序列图中直接表⽰逻辑组件,⽤于通过指定条件或⼦进程的应⽤区域,为任何⽣命线的任何部分定义特殊条件和⼦进程。组合⽚段共有13种,名称及含义如下:
常⽤组合⽚段举例:
⽤来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..(1)抉择(Alt)
抉择在任何场合下只发⽣⼀个序列。 可以在每个⽚段中设置⼀个临界来指⽰该⽚段可以运⾏的条件。else 的临界指⽰其他任何临界都不为True 时应运⾏的⽚段。如果所有临界都为 False 并且没有 else,则不执⾏任何⽚段。
(2)选项(Opt)
包含⼀个可能发⽣或不发⽣的序列;
(3)循环(Loop)
⽚段重复⼀定次数,可以在临界中指⽰⽚段重复的条件。
(4)并⾏(Par)
四、 时序图的绘制⼯具时序图的绘制⼯具有VISO、Rational Rose、StarUML、Web Sequence Diagrams、Timing Designer、Trufun Plato等,可任选其⼀。
五、 时序图的画法及实例时序图的绘制步骤可简单总结如下:
1. 划清边界,识别交互的语境;
2. 将所要绘制的交互场景中的⾓⾊以及对象梳理出来;
3. 从触发整个交互的某个消息开始,在⽣命线之间从上到下依次画出所有消息,并注明每个消息的特性(如参数等)。接下来,我们按照上⾯所讲的时序图的绘制步骤,以学⽣在教务系统中查询其课程的成绩为例,来讲解时序图的绘制⽅法。
1、划清边界,识别交互的语境所谓划清边界,就是要界定好⾃⼰所要画的时序图的范围,“学⽣在教务系统中查询其课程的成绩”就是所要绘制的时序图的交互内容,不⽤往上延伸到⽤户登录,也不要往下延伸到下载成绩单。
识别交互的语境,即是读懂所要画的时序图的前提和背景。⽐如本例中,既然学⽣可以查询成绩,那么该学⽣肯定已经注册并认证过其⾝份,并可选择其所考试的课程查询相应成绩。
2、梳理⾓⾊和对象在本例中,⾓⾊有学⽣,对象有教务系统、课程、成绩。
对象的梳理是⼀个相对主观的过程,⽐如本例中,课程以及成绩分别作为了对象存在,也可以合并为数据库这⼀个对象。请注意:⾓⾊以及对象,都为名词,动词不可作为⾓⾊和对象,如“成绩查询”不可作为对象。
3、添加消息学⽣的登录验证作为本时序图的前置⾏为,可直接引⽤到本时序图中,也可忽略不画;学⽣进⼊成绩查询页⾯后,页⾯会加载本学⽣的成绩查询课程列表,并显⽰出课程对应的成绩;
因篇幅问题不能全部显示,请点此查看更多更全内容