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时序图的更多相关文章

  1. 10分钟学会Linux

    10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...

  2. Markdown 绘制 UML 图 -- PlantUML + Gravizo(转)

    原文地址:Markdown 绘制 UML 图 -- PlantUML + Gravizo

  3. 在VSCode使用Markdown绘制UML图

    在VSCode使用Markdown绘制UML图 需要插件 Markdown All in One Markdown Preview Enhanced PlantUML markdownlint Mar ...

  4. 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 ...

  5. 10分钟学会VS NuGet包私有化部署

    前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...

  6. UML时序图(Sequence Diagram)学习笔记

    什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...

  7. [转载]UML时序图总结

    前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过 ...

  8. 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实

    2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

  9. 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程

    1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

随机推荐

  1. Comet OJ - Contest #6 B.双倍快乐(二维最大上升子序列和)

    双倍快乐 题目描述 Illyasviel:"你想要最长不下降子序列吗?" star-dust:"好啊!" Illyasviel:"老板,给我整两个最长 ...

  2. maven插件上传本地jar包到maven中央仓库

    settings配置(如果设置后有问题,可以重启idea,保证重新加载settings文件): <!-- 上传jar包到maven中央仓库配置start --> <server> ...

  3. 会话技术cookie与session

    目录 会话技术cookie 会话技术 cookie 服务器怎样把Cookie写 给客户端 服务器如何获取客户端携带的cookie session session简介 Session如何办到在一个ser ...

  4. OAuth 2.0 的四种方式

    上一篇文章介绍了 OAuth 2.0 是一种授权机制,主要用来颁发令牌(token).本文接着介绍颁发令牌的实务操作. 下面我假定,你已经理解了 OAuth 2.0 的含义和设计思想,否则请先阅读这个 ...

  5. Oracle 11c下载 及连接到OracleDB的简单程序

    Oracle官网总是不太贴心.还是网友贴心. https://pan.baidu.com/s/1ZCFLUi4Ti_WUYOFR3gB2dA 是11g版本下载包,下载下来解压就能用了. 安装完毕后,驱 ...

  6. es6对象复制合并 Object.assign

    对象的复制 var obj= { a: 1 }; var copy = Object.assign({}, obj); console.log(copy); //{ a: 1 } 对象的合并和封装 v ...

  7. spring could 微服务 跨域问题(CORS )

    问题发现 正常情况下,跨域是这样的:1. 微服务配置跨域+zuul不配置=有跨域问题2. 微服务配置+zuul配置=有跨域问题3. 微服务不配置+zuul不配置=有跨域问题4. 微服务不配置+zuul ...

  8. OpenStack Magnum项目简介

    1 项目简介 Magnum是OpenStack中一个提供容器集群部署的服务. Magnum是一个Pass层的OpenStack项目. Magnum使用Heat部署一个包含Docker和Kubernet ...

  9. Delphi分割字符串函数Split源码

    function TStringHelper.Split(const Separator: array of string; Count: Integer; Options: TStringSplit ...

  10. shell数组编程

    .数组定义 [chengmo@centos5 ~]$ a=( ) [chengmo@centos5 ~]$ echo $a 一对括号表示是数组,数组元素用“空格”符号分割开. .数组读取与赋值 得到长 ...