画图必备技能 - UML之时序图

什么是时序图#

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

使用场景#

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

1. 梳理业务流程

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

2. 梳理开源软件

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

img

时序图的角色#

我们在画时序图时会涉及下面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

  • ProcessOn是一个在线作图工具的聚合平台,它可以在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等,您无需担心下载和更新的问题,不管Mac还是Windows,一个浏览器就可以随时随地的发挥创意,规划工作;
  • 您可以把作品分享给团队成员或好友,无论何时何地大家都可以对作品进行编辑、阅读和评论;
  • ProcessOn不仅仅汇聚着强大的作图工具,这里还有着海量的图形化知识资源我们尽可能的将有价值的知识进行梳理,传递到您的眼前。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
mxGraph 是一个基于 JavaScript 的开源图形库,它提供了一套完整的基于 Web 的图形解决方案,可以用于创建交互式的图形界面和图表。它支持各种类型的图形对象,包括节点、连线、箭头、文本、图片等,并且可以通过拖放、缩放等交互方式来编辑和操作这些图形对象。mxGraph 的功能非常强大,可以用于构建各种类型的图形应用程序,比如流程图、组织结构图、UML 图、时序图等。 下面是使用 mxGraph 的基本步骤: 1. 引入 mxgraph 库文件。 在 HTML 文件引入 mxgraph 库文件,可以通过以下方式引入: ```html <script src="mxgraph/javascript/mxClient.js"></script> ``` 2. 创建布对象。 mxGraph 的主要对象是 mxGraph 对象,我们需要先创建一个 mxGraph 对象,然后将其挂载到 HTML 页面上的一个容器元素,例如: ```html <div id="graphContainer"></div> ``` ```javascript // 创建布对象 var container = document.getElementById('graphContainer'); var graph = new mxGraph(container); ``` 3. 创建图形对象。 mxGraph 提供了各种类型的图形对象,可以通过 mxGraph.insertVertex() 和 mxGraph.insertEdge() 方法来创建节点和边,例如: ```javascript // 创建一个节点 var vertex = graph.insertVertex(parent, null, 'Hello, World!', 20, 20, 80, 30); // 创建一条边 var edge = graph.insertEdge(parent, null, '', vertex1, vertex2); ``` 4. 设置图形对象样式。 mxGraph 的图形对象可以通过样式来设置其外观和行为,例如: ```javascript // 设置节点样式 vertex.setStyle('fillColor=#FFFFFF;strokeColor=#000000;'); // 设置边样式 edge.setStyle('endArrow=classic;'); ``` 5. 添加交互行为。 mxGraph 支持各种类型的交互行为,包括拖放、缩放、连线等,可以通过 mxGraph.addListener() 方法来添加事件监听器,例如: ```javascript // 添加拖放行为 var rubberband = new mxRubberband(graph); ``` 以上是 mxGraph 的基本使用步骤,你可以通过 mxGraph 提供的 API 和示例代码来学习更多的用法和技巧。同时,mxGraph 提供了完善的文档和 API 参考,可以帮助你更好地理解和使用该库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值