前言
画UML常用的软件有:Visual Paradigm(社区版)、PlantUML(代码绘图)、draw.io(开源)、ProcessOn(在线绘图)。笔者这几种平时都会用,但是有时候会对美观度有更高点的要求,而Axure作为产品原型图设计工具,比较契合我的要求。
说白了就是:我既要专业,又要好看,还要能装。
PlantUML用代码画图是很geek,但给领导汇报的时候说"您看我这代码写得多漂亮",领导只会觉得你在说相声。draw.io功能强大,但默认样式总给人一种"这图是1998年画的"的感觉。ProcessOn在线协作很方便,但免费版的水印让你的架构图看起来像盗版。
所以,Axure——一个被产品经理用来画原型的工具,被我这个架构师拿来画UML图,属于是降维打击了。
什么是UML
UML(Unified Modeling Language,统一建模语言)是软件工程领域的"普通话"。就像普通话让东北人和广东人能够互相理解一样,UML让程序员和产品经理能够互相甩锅。
UML诞生于上世纪90年代,由三位大佬(Grady Booch、James Rumbaugh、Ivar Jacobson)联手打造,人称"三剑客"。他们把各自的建模方法融合在一起,创造了这套图形化语言。
UML的核心思想:与其用一万字描述一个系统,不如画一张图让大家都看不懂。
开个玩笑。UML的真正价值在于:
- 可视化:把抽象的系统设计变成直观的图形
- 标准化:大家用同一套符号,减少沟通成本
- 文档化:比纯文字更容易维护和理解
UML图的分类
UML 2.0定义了14种图,但日常工作中常用的大概就那么几种。我把它们分成两大类:
结构图(静态图)
描述系统"是什么",就像给系统拍X光片:
| 图类型 | 用途 | 使用频率 |
|---|---|---|
| 类图(Class Diagram) | 描述类的结构和关系 | ⭐⭐⭐⭐⭐ |
| 组件图(Component Diagram) | 描述系统的物理组件 | ⭐⭐⭐ |
| 部署图(Deployment Diagram) | 描述系统的部署架构 | ⭐⭐⭐ |
| 对象图(Object Diagram) | 类图的实例化版本 | ⭐⭐ |
| 包图(Package Diagram) | 描述包之间的依赖 | ⭐⭐ |
行为图(动态图)
描述系统"做什么",就像给系统录视频:
| 图类型 | 用途 | 使用频率 |
|---|---|---|
| 用例图(Use Case Diagram) | 描述系统功能和用户交互 | ⭐⭐⭐⭐⭐ |
| 时序图(Sequence Diagram) | 描述对象之间的交互顺序 | ⭐⭐⭐⭐⭐ |
| 活动图(Activity Diagram) | 描述业务流程或算法 | ⭐⭐⭐⭐ |
| 状态图(State Diagram) | 描述对象的状态变化 | ⭐⭐⭐ |
笔者建议:作为初学者,先掌握用例图、类图、时序图、活动图这四种就够用了,能覆盖80%的场景。剩下的等你被领导逼急了再学。
为什么用Axure画UML
在正式开始之前,让我解释一下为什么一个画原型的工具能用来画UML:
1. 元件库可扩展
Axure支持导入自定义元件库(.rplib文件),网上有大量现成的UML元件库可以白嫖。导入之后,画UML图就像搭积木一样简单。
2. 样式控制精细
Axure对颜色、字体、阴影、圆角的控制非常细腻。想让你的类图看起来像苹果的设计规范?没问题。想让时序图带点赛博朋克风?也行。
3. 交互能力强
这是Axure的杀手锏。你可以给UML图加上交互效果,比如点击某个类跳转到详细设计页面,鼠标悬停显示注释说明。汇报的时候,领导会觉得你不是在画图,而是在做艺术。
4. 一专多能
既然你已经用Axure画原型了,顺手画个UML图也不用切换软件,文件管理更方便。
Axure绘制UML实战
准备工作
Step 1:下载UML元件库
推荐几个免费的Axure UML元件库:
- Axure官方元件库(内置,基础够用)
- GitHub上搜索"Axure UML Library"
- 一些设计网站如UI中国、站酷上也有分享
Step 2:导入元件库
打开Axure,在左侧"元件库"面板中:
- 点击"☰"菜单按钮
- 选择"载入元件库"
- 选择下载的.rplib文件
导入成功后,你就能在元件库中看到各种UML符号了。
绘制用例图
用例图是最简单的UML图,适合新手入门。
元素说明:
- 小人(Actor):代表系统的用户或外部系统
- 椭圆(Use Case):代表系统的功能
- 方框(System Boundary):代表系统的边界
- 线条:代表关联关系
绘制步骤:
1. 拖入一个矩形作为系统边界,设置为虚线边框
2. 在矩形顶部添加文字,写上系统名称
3. 拖入小人符号放在边界外侧
4. 拖入椭圆放在边界内,填写用例名称
5. 用连接线把小人和椭圆连起来美化技巧:
- 小人可以用Axure的图标元件替代,显得更现代
- 椭圆内的文字建议用"动词+名词"格式,如"提交订单"
- 相关的用例放在一起,保持视觉平衡
绘制类图
类图是程序员最常用的UML图,也是最考验Axure功底的。
类的表示:
一个标准的类用三层矩形表示:
┌─────────────────────┐
│ <<interface>> │ ← 构造型(可选)
│ Animal │ ← 类名
├─────────────────────┤
│ - name: String │ ← 属性
│ - age: int │
├─────────────────────┤
│ + eat(): void │ ← 方法
│ + sleep(): void │
└─────────────────────┘可见性符号:
+公有(public)-私有(private)#保护(protected)~包内可见(package)
Axure绘制方法:
- 拖入一个矩形,调整大小
- 右键选择"转换为动态面板"(方便复用)
- 添加两条水平线,把矩形分成三部分
- 在各部分添加文字
类之间的关系:
这是类图的精髓,也是最容易画错的地方:
| 关系 | 线条样式 | 箭头 | 含义 | 示例 |
|---|---|---|---|---|
| 继承 | 实线 | 空心三角 | is-a | 猫 → 动物 |
| 实现 | 虚线 | 空心三角 | implements | 类 → 接口 |
| 关联 | 实线 | 普通箭头 | has-a | 订单 → 商品 |
| 依赖 | 虚线 | 普通箭头 | use | 类A用到类B |
| 聚合 | 实线 | 空心菱形 | 弱拥有 | 班级 ◇→ 学生 |
| 组合 | 实线 | 实心菱形 | 强拥有 | 人 ◆→ 心脏 |
记忆口诀:空心可分离,实心不能分。学生可以离开班级,心脏不能离开人体。
绘制时序图
时序图用来描述对象之间的交互顺序,在做接口设计和系统联调时特别有用。
元素说明:
- 参与者(Participant):顶部的方框或小人
- 生命线(Lifeline):从参与者向下延伸的虚线
- 消息(Message):参与者之间的交互
- 激活框(Activation):生命线上的窄矩形,表示对象正在执行
消息类型:
- 同步消息:实线实心箭头 →
- 异步消息:实线开放箭头 →
- 返回消息:虚线开放箭头 ←--
绘制步骤:
1. 在顶部横向排列参与者(方框+名称)
2. 从每个参与者下方画一条虚线(生命线)
3. 用横向箭头表示消息传递
4. 在箭头上方标注消息内容
5. 在接收方生命线上画激活框美化技巧:
- 消息命名用"动词"或"动词+名词",如"查询用户"
- 复杂的交互可以用"分组框"框起来,标注循环或条件
- 返回值用虚线箭头,放在调用箭头下方
绘制活动图
活动图类似于流程图,用来描述业务流程或算法逻辑。
元素说明:
- 实心圆:开始节点
- 圆环套实心圆:结束节点
- 圆角矩形:活动(动作)
- 菱形:判断节点
- 粗横线:分叉/汇合(并行处理)
泳道(Swimlane):
活动图可以用泳道来区分不同的角色或系统:
┌─────────────┬─────────────┬─────────────┐
│ 用户 │ 系统 │ 第三方 │
├─────────────┼─────────────┼─────────────┤
│ │ │ │
│ [提交订单] │ │ │
│ │ │ │ │
│ ├──────┼→ [校验库存] │ │
│ │ │ │ │
│ │ ├──────┼→ [调用支付] │
│ │ │ │
└─────────────┴─────────────┴─────────────┘Axure绘制方法:
- 用矩形画出泳道边界
- 在泳道顶部标注角色名称
- 在泳道内拖入活动元件
- 用连接线把活动串起来
- 添加判断节点和条件标注
实用技巧总结
1. 善用母版(Master)
把常用的元素做成母版,比如:
- 标准类图模板
- 时序图参与者模板
- 通用图例说明
这样画图效率能提升50%。
2. 建立样式规范
给不同类型的元素定义统一的样式:
- 接口类用蓝色
- 实体类用绿色
- 工具类用灰色
既美观又专业。
3. 利用网格和对齐
打开Axure的网格显示,设置合适的间距。画完后用"对齐"和"分布"功能,让图形整整齐齐。
强迫症福音。
4. 添加图例
在图的角落加上图例说明,解释各种符号和颜色的含义。别人看你的图不用猜。
5. 版本管理
UML图也是代码的一部分,建议:
- 文件名带上版本号,如
订单系统类图_v1.2.rp - 在图上标注"最后更新日期"
- 重大改动另存为新版本
写在最后
坦白说,用Axure画UML图属于"非主流"操作。在正经的软件工程项目中,用专业的UML工具(如Enterprise Architect、Visual Paradigm)会更规范、更有保障。
但如果你和我一样:
- 不想为画几张图多装一个软件
- 对图的颜值有执念
- 已经在用Axure了
那么,Axure是一个值得尝试的选择。
毕竟,工具服务于目的。能把事情说清楚的图,就是好图。
作者碎碎念:
写这篇文章的时候,我回想起刚入行时画的第一张UML图。那是一张类图,用Word的自选图形画的,箭头歪歪扭扭,方框大小不一,被技术总监说"这是什么抽象派艺术"。
十年过去了,我用过的UML工具换了一茬又一茬,但有一点始终没变——画图的目的是沟通,不是炫技。
希望这篇文章对你有帮助。如果你画出了好看的UML图,欢迎分享出来让我学习学习。