10分钟学会使用Markdown绘制UML时序图
1.1 什么是Markdown?
Markdown是一种语法特别少、特别简单的标记语言,用来编写文档。用Markdown编写的文档是纯文本格式,经过编辑器的渲染,就会形成排
版优美的文档,本文就是用Markdown编写的。如果我们使用Markdown来编写文档,就不用再像用Word那样疲累于设置标题、缩进、左右对齐、
字体大小等烦杂的工作,而可以完全不考虑排版的事情,专心于写作的内容。Markdown现在已经被广泛使用,一些科技博客的编辑器支持
Markdown,一些新兴的写作阅读平台,比如简书,也支持Markdown,还有github上所有项目的README.md就是用Markdown
写的。
1.2 什么是UML时序图?
UML时序图是众多UML图中的一种,用图形来表示某个系统中的时序关系。它通过描述对象之间发送消息的时间顺序来显示多个对象之间的交互关系。程序员设计模块的时候,常常会画UML时序图来描述模块中几个对象的交互,以此来理清头绪或者向人解说。
2. 为什么用Markdown来绘制UML时序图?
绘制UML时序图的方法有很多,Visio可以绘制时序图,还有一些网站也可以绘制时序图。但是用这些方式,需要大量的拖拖拽拽,勾勾连连,很费时间。如果用Markdown的话,只需用特别简单易懂的几个语法,很快就可以描绘出时序图。
3. 事先准备
Markdown编辑器。以下所列的Markdown编辑器都支持绘制UML时序图,选取其中一个即可: 为知笔记(为知笔记创建Markdown笔记的方式比较特殊,请读者自行查阅为知笔记的帮助内容) 作业部落 CSDN博客编辑器 马克飞象(收费)
4. 语法讲解
上面列出的几种编辑器支持的绘制UML时序图的语法是一样的,只是各编辑器用来标识时序图部分的方法不尽相同。下面的标识方法是以为知笔记为准,其他编辑器的标识方法请具体参考各编辑器的帮助说明。
4.1 标识时序图
```sequence
```
4.2 创建Title
```sequence
title: Title
```
4.3 创建Actor
```sequence
participant A
participant B
participant C as C_Alias
```

创建了A、B、C三个Actor。其中C的创建中,as C_Alias表示给C起一个别名,叫C_Alias。
4.4 Actor的交互
```sequence
A->B: how are you?
B-->>A: fine.
```

->中,-代表实线,>代表实心箭头,还可以用--表示虚线,>>表示非实心箭头。在UML时序图中,实线表示主动发送消息,虚线表示返回(应答)消息,实心箭头表示同步消息(消息发送者停止活动等待应答消息),非实心箭头表示异步消息(消息发送者无须停止活动等待应答消息)。->两边可以是同一个Actor,表示自交互:
```sequence
A->A: 内心os
```

4.5 多个Actor的交互
```sequence
A->B: how are you, B?
B->C: how are you, C?
C->A: how are you, A?
```

4.6 给Actor添加Note
```sequence
Note right of A: I'm A
Note left of A: I'm A
Note over A: I'm A
Note over A, B: We're friends.
```

到此为止,绘制UML时序图的所有语法都讲完了,很少吧。另外,查阅语法可以看这张图(引用自js-sequence-diagram项目):

下面,就让我们用Markdown画一个实际的系统吧。
5. 用Markdown绘制典型的客户端登录时序图
登陆流程大致是:用户在客户端输入通行证的账号密码来登陆一个服务器,这里不考虑第三方登陆,不考虑登陆失败的情况。
```sequence
participant 客户端
participant 服务器
participant 通行证中心
Note over 客户端: 用户输入通行证的账号、密码
客户端->通行证中心: 发送账号、密码
Note over 通行证中心: 验证账号、密码
通行证中心-->>客户端: 返回token
客户端->服务器: 发送token
服务器->通行证中心: 验证token
通行证中心-->>服务器: 验证成功
服务器-->>客户端: 登陆成功
```

6. 限制
Markdown绘制UML时序图虽然简单、快速,但是缺少对一些UML时序图基本元素的支持,比如Focus
of Control、Combined
Fragments、对象的中途创建和对象的销毁。所以当你需要添加一些循环或者分支结构的消息时,或者需要中途创建对象、中途销毁对象
时,Markdown就不能满足你的要求了。不过,技术一直在进步,将来Markdown或许能画出更复杂的时序图来。
10分钟学会使用Markdown绘制UML时序图的更多相关文章
- 10分钟学会Linux
10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...
- Markdown 绘制 UML 图 -- PlantUML + Gravizo(转)
原文地址:Markdown 绘制 UML 图 -- PlantUML + Gravizo
- 在VSCode使用Markdown绘制UML图
在VSCode使用Markdown绘制UML图 需要插件 Markdown All in One Markdown Preview Enhanced PlantUML markdownlint Mar ...
- 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved
10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...
- 10分钟学会VS NuGet包私有化部署
前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...
- UML时序图(Sequence Diagram)学习笔记
什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...
- [转载]UML时序图总结
前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过 ...
- 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
随机推荐
- Git 工作流
一.分类 1.集中式工作流 像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体.所有修改都提交到 Master 这个分支上. 这种方式与 SVN 的主要区别就是开发人员有本地库.Git ...
- 图片上传利用request.getInputStream()获取文件流时遇到的问题
图片上传功能是我们web里面经常用到的,获得的方式也有很多种,这里我用的是request.getInputStream()获取文件流的方式.想要获取文件流有两种方式,附上代码 int length = ...
- Oracle的大表,小表与全表扫描
大小表区分按照数据量的大小区分: 通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,那么全表扫描可能仍然是最好的 ...
- oracle数据库的存储原理
表空间,oracle逻缉存储结构,表空间下包含一个或者多个物理的文件存储.所有用户对象存放在表空间中.与系统有关的对象存放在系统表空间中. 数据库的作用就是实现对数据的管理和查询.任何一个数据库系统, ...
- 【Maven】为什么Maven dependencies有的jar包显示为灰色?
因为它们的scope被限制住了,放开就恢复为亮白色. 来两张图片比对一下就清楚了: 没有限制scope,是正常的亮白色. 限制scope为test,显示为灰黑色. 其实颜色不重要,重要的是scope会 ...
- javascript已存在的对象构造器中是不能添加新的属性的:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程 ...
- springboot之docker化
1.Docker安装 本人是centos7系统,安装也是按照官方文档进行安装.https://docs.docker.com/install/linux/docker-ce/centos/ ,即 1. ...
- osg::Camera 参数修改
#ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...
- SSM配置基于注解AOP
pom.xml <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...
- javascript——URI的编解码方法
有效的URI(统一资源标示符)是不能包含某些字符的,如空格,所以需要进行编码,编码方法有:encodeURI()和encodeURIComponent(), 对编的码进行解码方法有:decodeURI ...