上次分享了一篇关于UML类图的文章,它在标准开发和文档编写时都很有用,画图环节也是必不可少的,就像我们在毕业设计时一样。这里想和大家分享一下我的绘图经验,我主要使用的是Microsoft Visio软件。
除了Visio,网上也有人推荐Processon绘图工具,我在使用Visio之前也曾使用Processon进行绘图工作。
一、概述
序列图,也被称为交互图或时间图,是UML中用于描述对象之间信息交互过程的一种方式。它通过生命线和消息来展示对象之间的时间顺序交互。
二、组成要素
1. 角色:可以是用户、外部系统、机器等。在Visio软件中,我们可以使用特定的图标来表示这些角色。
2. 物体和生命线:在序列图中,对象通过生命线表示其存在的时间,这是一条从对象图标向下延伸的虚线。而对象的命名可以是对象名和类名,例如dispatcherServlet可以只显示类名或只显示对象名。
3. 活动栏:生命线虚线上可以使用活动条来表示某种行为的开始和结束,这通常用一个小矩形来表示。但在很多复杂的序列图中,活动栏的加入可能会使图变得更加复杂。在绘制时需根据实际情况决定是否使用。
4. 消息:在UML中,对象之间的交互可以看作是消息的发送。序列图关注生命线之间的通信,UML使用实心箭头表示消息,每条消息从发送对象指向接收对象。消息还分为简单消息、同步消息和异步消息。
简单消息:描述了控件从一个对象到另一个对象的传输,但不包含控件的详细信息。
同步消息:意味着阻塞等待,如A向B发送消息后,A必须等待B执行完成返回后才能继续执行。
异步消息:则是非阻塞的,如A向B发送消息后,可以直接执行下面的代码,无需等待B的执行。同步消息由实线箭头表示,异步消息则用空心箭头表示。
5. 交互框:UML 2.0向序列图添加了交互框,用于解决交互执行的条件和方式。交互框允许在序列图中直接表示逻辑组件,并为任何生命线的任何部分定义特殊条件和子流程。虽然这里没有详细列出所有交互框的类型及用法,但我们可以根据需要选择合适的交互框来优化序列图的可读性和准确性。
三、示例
这里以SpringMVC的执行流程为例,简单描述了如何将其转换为序列图。通过绘制相关的序列图,我们可以更清晰地理解整个流程的执行过程和对象之间的交互关系。
四、个人感悟
就我个人而言,绘画在软件开发和系统设计中是非常有用的。当我们自己设计一些东西时,通过画图可以更好地整理思路和明确需求。画完相关的图之后,思路就会清晰很多,也能更好地与他人沟通和交流。