动态的建模
在前面,初步了解了UML及其中之一:java之类图。
类图可以视为是一种静态的建模,时序图则是一种动态的建模。
一般根据时间的先后顺序,包括一组对象及它们之间的消息。比如一个很普通的用户登陆时序图
时序图
从上面的图可以看到,一个时序图包括涉及到的对象:用户,登陆系统,数据库,会员界面。
以及对应的消息:用户发起的登陆操作,系统发起的数据库查询及页面跳转等。
参加者对象
可以把所有涉及到的系统统一称为参加者对象或者直接叫对象。比如用户对象,数据库对象,用户系统对象。
生命线
其中对应的竖线称为生命线。从上面看到,不同的对象参与的时机是不一样的,用户对象参与了整个登陆操作,而数据库只在查询时才参与。而且一个对象可以在一个时序图中多次参与,比如用户登陆成功之后,进行会员信息查看,也会再次发生在数据库对象上。如图下红色部分
消息
上面的对象间的操作传递,发送消息-Send Message:实线+实心箭头,箭头指向消息接收方。
接收方回传消息-Replay Message:虚线+箭头。上面的第3步,其实画的并不准确,应该是replay message,而不应该是Send message。
同步/异步消息
有时候消息还是有区别的。多线程或者消息中间件的时候,可能会突出消息的类型。(可惜我用的VP上未能找到连续的区别,其它工具是可以的)
比如上面的例子,用户登陆之后,会给用户发送站内信。既用户可以执行其它操作,但是不会由于发送站内信而阻塞等待。如下紫色表示
站内信的返回时机是不定的,因为是异步的,可能返回在4-7步的之间的任何时候,但是都不会影响其它操作的进行。
条件/循环等
alt
上面流程里面有一个alt框选项,表示如果用户合法(用户存在+通过检查等),就会跳转到会员页面;否则就会返回前端错误信息(框中虚线下面部分),这就是一个条件操作:
这有点类似if...else,if条件为真,则走到虚线上面,else否则就走虚线下面
opt
opt是一种特殊的alt选项,它只有一条线路,可以理解为if条件,没有else;如果条件为真就,就走到里面执行。比如如果用户登陆时,密码安全性不够,就提示用户进行修改,如下绿色背景图
循环
循环也是一个很重要的操作,顾名思义,只要符合条件,可多次执行。
比如用户查看相册,取出图片地址,前端进行渲染(只是为了作说明,例子不一定恰当)
除了上面几个以外,还有其实的操作符,下面的解释来自网上
操作符 | 含义 |
par | 并行;每一片段都在运行 |
alt | 提供多重片段;根据条件执行 |
opt | 只有一个片段的alt选项,条件为真时执行 |
loop | 循环;在条件内,片段可以执行多次 |
region | 临界区域;片段只能有一个线程对它立即执行 |
neg | 否定;片段示明一次无效交互 |
sd | 顺序图;可以用它来围绕整个顺序图 |
其中,要说明一下sd,它表示整个顺序图,比如上面的登陆
VP工具
如果你和我一样,用的VP,前面一个文章有介绍,并附下载地址
时序图
对象及消息
操作符
这里面可以设置操作符类型及条件