什么是时序图

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

使用场景

时序图的使用场景非常广泛,几乎各行各业都可以使用。当然,作为一个软件工作者,我这边主要列举和软件开发有关的场景。

1. 梳理业务流程

一般的软件开发都是为了支撑某个具体的业务。有时候业务的流程会比较复杂,涉及到多种角色,这时就可以使用时序图来梳理这个业务逻辑。这样会使业务看起来非常清晰,代码写起来也是水到渠成的事情了。

2. 梳理开源软件

作为一个合格的程序员,阅读源代码的能力一定要过关。一般成熟框架的源代码调用深度都比较深,类之间的调用关系也比较复杂。我喜欢用时序图来梳理框架中这些对象之间的关系。比如再看Tomcat启动流程的过程中,我就时序图梳理了各个组件之间的关系,看起来层次非常清楚,也便于记忆。

时序图的角色

我们在画时序图时会涉及下面7种元素:

角色(Actor)

对象(Object)

生命线(LifeLine)

控制焦点(Activation)

消息(Message)

自关联消息

组合片段。

其中前6种是比较常用和重要的元素,最后的组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,再单独介绍组合片段元素。

1. 角色(Actor)

系统角色,可以是人或者其他系统和子系统。以一个小人图标表示。

2. 对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:

对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService;

只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。

只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。

3. 生命线(LifeLine)

时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。

4. 控制焦点(Activation)

控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。

5. 消息(Message)

表示对象之间发送的信息。消息分为三种类型。

同步消息(Synchronous Message)

消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线和实心箭头表示。

异步消息(Asynchronous Message)

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线和大于号表示。

返回消息(Return Message)

返回消息表示从过程调用返回。以小于号和虚线表示。

6. 自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

下面举例一个时序图的列子,看下上面几种元素具体的使用方式。

7. 组合片段

组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:

组合名称

组合含义

ref

引用其他地方定义的组合片段

alt

在一组行为中根据特定的条件选择某个交互

opt

表示一个可选的行为

break

提供了和编程语言中的break类拟的机制

par

支持交互片段的并发执行

seq

强迫交互按照特定的顺序执行

strict

明确定义了一组交互片段的执行顺序

neg

用来标志不应该发生的交互

region

标志在组合片段中先于其他交互片断发生的交互

ignore

明确定义了交互片段不应该响应的消息

consider

明确标志了应该被处理的消息

assert

标志了在交互片段中作为事件唯一的合法继续者的操作数

loop

说明交互片段会被重复执行

组合片段的功能平时用的不是很多,具体使用时可以参考本文最后关于组合片段的文章,这边不做深入介绍了。

画图工具推荐

ProcessOn是一个在线作图工具的聚合平台,它可以在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等,您无需担心下载和更新的问题,不管Mac还是Windows,一个浏览器就可以随时随地的发挥创意,规划工作;

您可以把作品分享给团队成员或好友,无论何时何地大家都可以对作品进行编辑、阅读和评论;

ProcessOn不仅仅汇聚着强大的作图工具,这里还有着海量的图形化知识资源我们尽可能的将有价值的知识进行梳理,传递到您的眼前。

参考

机械动作时序图怎么画_程序员必备画图技能之——时序图相关推荐

  1. 程序员必备画图技能之——流程图

    作为一个程序员,经常需要画流程图来展示系统的运行流程或者是来表述某些业务的业务逻辑.可以说画流程图已经是程序员必须掌握的一个技能了.本文就从什么是流程图.流程图的适用场景以及怎么画好一个流程图这几个方 ...

  2. javaweb不同用户需要几张表_程序员必备2020版:JavaWeb快速进阶全套教程

    Java Web应用由一组Servlet.HTML页.类.以及其它可以被绑定的资源构成.它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行. JavaWeb项目简单来说就是一个应 ...

  3. Java如何接手别人项目_程序员必备技能——怎样快速接手一个项目

    作为一个程序员,我们很少能从头到尾参与一个新项目的开发.如果你经常开发的是新项目,那你真是太幸福了. 更多的情况是半路进入一个项目组进行开发,或者是有其他同事离职了,之前由他维护的系统转交给你维护. ...

  4. 小程序背景图满屏_程序员的PPT写作方式果然别具一格啊

    | 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...

  5. java相关的数学知识_程序员必备的一些数学基础知识

    作为一个标准的程序员,应该有一些基本的数学素养,尤其现在很多人在学习人工智能相关知识,想抓住一波人工智能的机会.很多程序员可能连这样一些基础的数学问题都回答不上来. 矩阵A(m,n)与矩阵B(n,k) ...

  6. 谷歌json插件_程序员必备的4款Chrome插件,妥妥的神器!

    之前就粉丝跟小编说,想要推荐几款程序员使用的插件,所以小编就去找了找,发现了这4款当下比较热门且实用的,也是程序员经常用到的,这几款插件也可以提高工作效率,难怪隔壁小哥哥程序员的效率都挺高,估计也用了 ...

  7. dalvik虚拟机执行流程_程序员必备的一些流程图

    阅读文本大概需要3分钟. - 1 - Spring的生命周期 Spring作为当前Java最流行.最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要: 首先容器启动后,对bean进行初始 ...

  8. google浏览器插件 开发 获取页面指定数据_程序员必备的4款Chrome插件,编程神器...

    一直有粉丝留言,想要大侠推荐几款程序员使用的插件,大侠特意去问了隔壁的程序员哥哥,终于被我问出了这4款编程神器!这4款插件不仅仅是提高效率那么简单哦,还可以让你的Chrome浏览器变得高端大气,一起来 ...

  9. python14张思维导图高清pdf_程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)...

    后台回复关键词 20180522 可获取本文中的高清思维导图(PDF版) 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库).首先,按顺序依次展示了以下内容的一系列思维导图:基础 ...

最新文章

  1. 17个Python骚操作,你都Ok吗?
  2. Android WebView缓存策略详解
  3. nginx php 配置 windows_Windows下配置Nginx使之支持PHP
  4. Python初学者之ModuleNotFoundError:No module named 'cv2'简单解决办法
  5. 你能想象吗?几年后数据科学家纷纷下岗再就业
  6. 使用Angular HTTP client对数据模型进行删除操作
  7. coreos 安装mysql_如何执行CoreOS Linux的裸机安装
  8. 我的世界1.6.2 java_我的世界Java版1.16.2
  9. maven项目动态替换配置中的值
  10. sigmoid和softmax总结
  11. go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
  12. ge linux安装apt_教你如何在 Linux 中使用 apt 命令
  13. (转)fiddler使用简介--其二
  14. fscapture下载收费吗?_听歌要收费,下载又要付费?国内的音乐app还想干什么?...
  15. 配置Outlook连接Exchange
  16. 在Windows Server 2008下安装Oracle 10g出现未知错误
  17. 双击java安装包没有反应_eclipse安装包双击没反应怎么回事?
  18. Linux和Solaris系统上添加默认路由和静态路由方法
  19. JAVA 实现阿里云的短信验证码
  20. Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块

热门文章

  1. 中国十大坑人“民族”品牌排行榜,不要再被他们骗了!
  2. 图片转文字怎么转换?这个方法不能错过
  3. 隐私政策-金庸作品集app
  4. 一次30分钟都坚持不到,你算是男人吗?
  5. Android音乐播放器的开发实例(2021新版-Java版)
  6. CAU 人工智能II(2022春) 课程期末复习 - 大纲整理
  7. 风格迁移 Style transfer
  8. Android搜索关键字飞入飞出效果
  9. 强烈推荐四款高效率办公软件
  10. CVE-2019-9766-----Free MP3 CD Ripper音频转换器漏洞复现