UML 14 种图详解

UML 2.5.1 的 14 种图分为结构图(描述系统静态结构)和行为图(描述系统动态行为)两大类。以下逐一详解每类图的概念、用途及 PlantUML 示例。

1. 14 种图分类

UML 2.5.1 的 14 种图分为结构图(描述系统静态结构)和行为图(描述系统动态行为)两大类:

PlantUML diagram
UML 14 种图分类总览

2. 结构图(Structure Diagrams)

结构图不考虑时间维度,描述系统在某一时刻的静态构成。

2.1 类图(Class Diagram)— 最核心的结构图

描述系统中的类、接口、协作及其关系(继承、关联、聚合、组合、依赖)。是面向对象建模的基石。

PlantUML diagram
示例:订单系统核心类图

2.2 对象图(Object Diagram)

类图的实例化快照——展示某一时刻对象间的连接关系。用于举例说明类图。

PlantUML diagram
示例:张三的订单 #1001 对象图

2.3 包图(Package Diagram)

将模型元素按包组织,展示包之间的依赖和包含关系。用于宏观架构分层。

PlantUML diagram
示例:MVC 架构包图

2.4 组件图(Component Diagram)

展示软件组件之间的组织和依赖,强调接口的提供与消费。适合描述微服务拓扑。

PlantUML diagram
示例:电商系统组件图

2.5 复合结构图(Composite Structure Diagram)

描述类或组件的内部结构(Parts),以及各部件之间的协作连接。侧重内部协作关系。

PlantUML diagram
示例:订单服务的内部结构

2.6 部署图(Deployment Diagram)

展示软件制品(artifact)部署到硬件节点(node)上的物理拓扑。运维和架构师常用。

PlantUML diagram
示例:三层架构物理部署图

2.7 剖面图(Profile Diagram)

UML 的扩展机制——通过 stereotype、tagged value、constraint 定义领域特定建模扩展。

PlantUML diagram
示例:定义 EJB Profile

3. 行为图(Behavior Diagrams)

行为图描述系统随时间变化的动态行为。

3.1 用例图(Use Case Diagram)

从用户视角描述系统提供的功能(用例)及参与者与系统之间的交互。需求阶段首选工具。

PlantUML diagram
示例:在线商城用户用例图

3.2 活动图(Activity Diagram)

流程图的高级形式,支持分支、并发、泳道。适合描述业务流程和算法步骤。

PlantUML diagram
示例:用户下单活动图(带泳道)

3.3 状态机图(State Machine Diagram)

描述对象在其生命周期中经历的状态序列及触发状态转移的事件。适合订单、工单等有明确状态的对象。

PlantUML diagram
示例:订单生命周期状态机

3.4 序列图(Sequence Diagram)

按时间顺序展示对象间的消息交互。UML 中最常用的行为图,适合描述 API 调用链、微服务交互。

PlantUML diagram
示例:用户下单完整序列图

3.5 通信图(Communication Diagram)

与序列图语义等价,但强调对象间的拓扑连接关系而非时间顺序。是序列图的"空间视图"。

PlantUML diagram
示例:下单流程通信图

3.6 交互概览图(Interaction Overview Diagram)

活动图与序列图的混合体——用活动图节点嵌入子序列图。适合宏观业务流程串联。

PlantUML diagram
示例:售后处理流程交互概览图

3.7 时间图(Timing Diagram)

展示对象状态随时间的变化曲线,带有精确的时间刻度。适合实时系统、协议时序分析。

PlantUML diagram
示例:门禁控制器信号时序图

3.8 序列图 vs 活动图:不可替代性说明

核心区别:时序图侧重"谁和谁在什么时候说了什么"(消息交互),活动图侧重"事情怎么流转、谁做什么"(业务流程)。两者视角不同,场景互补,无法完全互相替代。

3.8.1 并行/并发流 — fork/join 是活动图的独有优势

活动图通过 fork/join 节点直观展示多个活动同时进行。时序图虽然有 par 交互片段,但表达的是"多条消息平行发送"而非"多个业务流程分支同时执行"——语义和可视化效果差异明显。例如订单确认后需要同时执行库存校验、风控检查、价格计算,活动图一个 fork 就清楚了。

PlantUML diagram
活动图:fork/join 直观展示并行任务
PlantUML diagram
时序图:par 片段勉强表达——不够直观

3.8.2 对象流 / 数据流 — 活动图的专有概念

活动图可以用 对象节点(Object Node) 和 数据引脚(Pin) 显式建模数据在各节点间如何流动、变换形态。例如"表单数据 → 校验 → 有效订单对象 → 计算运费 → 含运费订单 → 入库"——数据在各步骤间的形态变化清晰可追踪。而时序图只关心消息本身,完全不关心数据在流程中如何变换。

PlantUML diagram
活动图:对象节点显式展示数据在各步骤的形态变化

3.8.3 泳道(Partitions)— 按职责边界组织流程

活动图的泳道按组织/角色/部门划分,一眼看出"谁负责哪一段",适用于跨部门业务流程。时序图的参与者(Participant)侧重消息收发,而泳道更侧重组织级别的运营视图——两者表达的维度不同。

PlantUML diagram
活动图:泳道按部门划分——职责边界一目了然
PlantUML diagram
时序图:参与者侧重消息交互——职责边界隐式

3.8.4 场景适用性总结

场景活动图时序图推荐
并行/并发任务fork/join 直观par 片段勉强可用活动图
对象/数据流转原生支持对象流无此概念活动图独有
泳道/部门职责划分天然适合业务流程建模参与者侧重消息交互活动图
复杂决策分支网络决策/合并节点清晰嵌套 alt/opt 易混乱活动图
API 调用链/协议交互不适合天然适合时序图独有
对象生命周期时序不适合时间线按序展示时序图独有

3.8.5 活动图关键术语解释

活动图中每个节点和连接线都有明确的名字。理解这些术语是读懂活动图的前提:

PlantUML diagram
活动图关键术语图解
术语中文/别名说明图示
Fork / Join 分叉 / 汇合 Fork 将一条控制流拆成多条并行分支同步执行;Join 等待所有分支都完成后才汇合成一条继续。类比:厨房同时备菜、炒菜、做饮品(fork),三道都齐才上桌(join)。与 Decision 的关键区别:Fork 是同时走多条,Decision 是选一条走。 粗横线
Decision / Merge 决策 / 合并 Decision 根据条件只选一条分支执行;Merge 将多条分支汇总,任意一条到达即继续(不等全部,区别于 Join)。 菱形 ◇
Swimlane / Partition 泳道 / 分区 按角色、部门、系统划分职责区域,每个泳道内的 Action 由该角色负责。纵向或横向的矩形条。 纵向/横向长条
Action Node 动作节点 不可再分的原子操作,如"校验库存""发送邮件"。活动图的基本单元。 圆角矩形
Object Node 对象节点 表示数据在某时刻的形态快照——Action 产生的输出或需要的输入。 矩形
Pin 引脚 附着在 Action 边上的小矩形,表示该 Action 的输入参数或输出结果端口。 Action 边上的小矩形
Initial / Final Node 起始 / 终止 流程入口(实心圆 ●)和出口(实心圆加外圈 ◉ / 叉号 ⊗)。Flow Final 表示该支流结束但不终止整个活动。 实心圆 / 牛眼圈
Control Flow 控制流 表示执行顺序的有向箭头,不携带数据,只传递控制权。 实线箭头 →
Object Flow 对象流 表示数据对象在节点间传递的有向箭头,数据随箭头流动。 实线箭头 →
Guard Condition 守卫条件 写在决策分支出口上的条件表达式 [condition],决定激活哪条分支。如 [库存 > 0]。 方括号标注
Activity Edge 活动边 所有连接两个节点的有向线段统称,包含 Control Flow 和 Object Flow。 箭头线