快速学习时序图:时序图简介、画法及实例
时序图作为常用的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、添加消息
学生的登录验证作为本时序图的前置行为,可直接引用到本时序图中,也可忽略不画;学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩;
参考资料:
- 时序图-百度百科
- UML序列图总结 http://www.trufun.net/UML/UMLwendang/2016/0115/138.html
- UML系列-时序图 http://www.lupaworld.com/article-233409-1.html
- UML建模之时序http://www.cnblogs.com/ywqu/archive/2009/12/22/1629426.html
本文由 @那只猫的鱼 原创发布于人人都是产品经理。未经许可,禁止转载。
用什么工具画上面描述中的时序图
请问如果有多个角色多个系统的时候,多角色如何画呢?在用户一列直接添加吗
有时候画的太复杂怕研发看不懂😭
数据层
作者,你好,最近我也在学UML,发现visio只有用例图,序列图,类图,状态图,活动图,(甘特图)。但是没有部署图,组件图,协作图这3个图,在想要不要学这3个图,产品经理工作中用不用得上。冒昧问下您的看法😊
你好,Rose中有部署图、组件图和协作图,我在工作过程中,使用过部署图和协作图,没有使用过组件图。部署图主要是为了描述复杂的物理拓扑结构,比如我要做一个在线学习的平台,这个时候,就要事先考虑好视频、直播需要流媒体服务器,而PPT、PDF等文本文件需要文件服务器,这个时候用部署图来描述整个系统架构,就会很清晰。但是如果系统的拓扑结构并不复杂,就不需要画部署图了。协作图的话,在我看来,就是粗线条的流程图,在前期需求阶段可以帮助理解业务流程。我不太清楚组件图的使用,至少目前为止,工作中从未用到过。
协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。
谢谢
VISIO
MAC下有啥软件推荐吗?
VISIO和Trufun Plato