简介
使用 用例 图 提供 一种 清晰 方式 来 描述 如何 用户, 外部 系统, 和 其他 参与者 交互 与 一个 软件 系统。 它们 帮助 团队 定义 系统 范围, 识别 功能 需求, 和 沟通 预期 行为 在…之前 实施 开始。
PlantUML 使 用例 建模 实用 实用 通过 一种 基于文本的 语法 该 能够 被 存储, 审查, 版本控制, 并 重新生成 与 项目 文档 或 源 代码。 通过 一些 几条 命令, 您 可以 定义 参与者, 使用 用例, 系统 边界, 关联, <<包含>> 关系, <<扩展>> 关系, 泛化, 注释, 和 布局 首选项。
本 指南 解释 关键 关键 PlantUML 使用 用例 符号 显示 在 该 参考 表 并 演示 如何 应用 应用 它 在 现实的 示例。 它 也 引入 一个 更广泛的 工具链 工作流 使用 Visual Paradigm UML, AI 辅助 建模, 和 VPasCode。 Together, 这些 工具 支持 一个 完整的 流程: 将 需求 转化为 一个 初始 模型, 验证 UML 关系, 细化 该 图表, 并 维护 该 最终 模型 为 可读的 图表 源。
UML 用例图描述了外部用户或系统如何与系统交互。它侧重于系统做什么,而不是如何实现。
PlantUML 允许您使用简单的基于文本的符号创建用例图。
1. PlantUML 基本结构
每个 PlantUML 图表都以@startuml开始,并以@enduml.
注释以单引号开头:
您也可以使用多行注释:
2. 定义参与者
参与者代表与您的系统交互的人、角色、组织、设备或外部系统。
基本参与者
这将创建一个名为 的简笔画风格参与者用户.
带有别名的参与者
当显示的名称包含空格,或您希望为关系使用更短的标识符时,别名非常有用。
actor "支付网关" as payment
actor "系统管理员" as admin
随后您可以引用这些别名:
payment --> ProcessPayment
admin --> ManageUsers
使用不同视觉样式的参与者
PlantUML 支持多种参与者样式。默认样式通常已足够,但您也可以使用图标样式的参与者:
skinparam actorStyle awesome
actor Customer
您也可以使用纯矩形样式的参与者:
skinparam actorStyle hollow
actor Customer
确切的外观取决于 PlantUML 渲染引擎和皮肤参数。
3. 定义用例
用例表示系统提供的服务、目标或功能。
基本用例
PlantUML 将此渲染为标记为“登录.
带别名的用例
可见标签为“处理信用卡支付,而ProcessPayment用于关系中。
actor Customer
Customer --> ProcessPayment
多行用例名称
您可以使用n:
当图表包含长标签时,这非常有用。
4. 系统边界
系统边界将属于特定系统的用例进行分组。
矩形 "在线购物系统" {
用例 "浏览产品" 作为 Browse
用例 "结账" 作为 Checkout
}
矩形表示系统,其中的用例代表该系统提供的功能。
您也可以为边界使用命名别名:
rectangle "在线购物系统" as OnlineStore {
usecase "浏览商品" as Browse
usecase "结账" as Checkout
}
在区分系统行为与外部参与者及服务时,系统边界非常有用。
5. 连接参与者与用例
关联表示参与者参与或与用例进行交互。
无向关联
这会创建一条没有箭头的实线。
定向关联
这会创建一条实线,箭头指向用例。
这两种形式都常用。箭头方向应根据您希望强调的通信或责任保持一致地选择。
带标签的关联
该标签描述了交互。
为了获得更清晰的布局,您可以使用更长的箭头:
6. 该<<include>>关系
一个包含关系表示一种行为,该行为始终被需要由另一个用例所要求。
例如,下订单可能始终需要支付验证:
PlaceOrder ..> ValidatePayment : <<include>>
方向很重要:
基础用例 ..> 包含用例 : <<include>>
箭头从需要该行为的用例指向提供可复用行为的用例。
示例
用例 "结账" 作为 Checkout
用例 "验证客户详情" 作为 ValidateCustomer
用例 "计算订单总额" 作为 CalculateTotal
用例 "进行支付" 作为 MakePayment
Checkout ..> ValidateCustomer : <<include>>
Checkout ..> CalculateTotal : <<include>>
Checkout ..> MakePayment : <<include>>
这意味着:
-
结账始终会验证客户详情。
-
结账始终会计算订单总额。
-
结账始终会执行支付。
使用<<include>>当被包含的行为是必需的或可复用时。
7. 该<<扩展>>关系
一个扩展关系表示添加到基本用例中的可选、条件性或异常行为。
例如,应用折扣可能仅在客户拥有有效优惠券时发生:
方向为:
可选扩展用例 ..> 基本用例 : <<extend>>
箭头从可选行为指向基本用例.
正确示例
用例 "结账" 作为 Checkout
用例 "应用折扣券" 作为 ApplyDiscount
ApplyDiscount ..> Checkout : <<extend>>
这意味着应用折扣券可选地扩展结账 流程。
包含与扩展的比较
| 关系 | 目的 | 箭头方向 |
|---|---|---|
<<include>> |
强制的可复用行为 | 基本用例 → 包含的用例 |
<<extend>> |
可选或条件行为 | 扩展用例 → 基本用例 |
示例:
Checkout ..> ValidatePayment : <<include>>
ApplyDiscount ..> Checkout : <<extend>>
避免反转这些关系,因为方向会改变其含义。
8. 用例泛化
泛化表明一个用例是另一个用例的专门形式。
usecase "Search Products" as SearchProducts
usecase "Browse Products" as BrowseProducts
SearchProducts -|> BrowseProducts
空心三角形指向更通用的用例。
这意味着搜索产品是浏览产品.
泛化不如包含和扩展,因此仅在用例之间存在真实的父子关系时使用它。
9. 参与者泛化
参与者也可以具有泛化关系。
actor Customer
actor "Premium Customer" as PremiumCustomer
PremiumCustomer -|> Customer
这表明高级客户是一种特殊的客户类型,并继承了通用角色的交互。
例如:
10. 注释和标注
注释为图表添加解释或约束。
附加到用例的注释
note right of Checkout
客户必须提供
有效的账单信息。
end note
其他位置包括:
note left of Checkout
面向客户的过程
end note
note top of Checkout
主要业务流程
end note
note bottom of Checkout
包括支付处理
end note
简短注释语法
带别名的独立注释
使用虚线将注释连接到某个元素:
约束条件的注释
注释有助于记录条件:
note right of ApplyDiscount
可选行为:
仅在提供有效
优惠券时使用。
end note
11. 布局方向
默认情况下,PlantUML 会自动选择布局。您可以影响方向。
从左到右布局
这通常对用例图很有用,因为参与者显示在左侧,外部系统显示在右侧。
自上而下的布局
这对于紧凑的图表或垂直组织的流程可能很有用。
不可见的布局链接
不可见的链接可以影响定位,而无需显示可见的关系:
这对于改进图表布局很有用。
12. 图表样式设置
移除阴影
使用矩形包和边界
设置颜色
skinparam usecase {
BackgroundColor #FDFDFD
BorderColor #333333
}
skinparam actor {
BorderColor #333333
}
设置箭头颜色
设置默认字体大小
一个完整的样式部分可能如下所示:
skinparam shadowing false
skinparam packageStyle rectangle
skinparam actorStyle awesome
skinparam defaultFontSize 14
skinparam usecase {
BackgroundColor #F9FBFF
BorderColor #234
}
skinparam ArrowColor #555555
13. 包与分组
包可以对相关的用例进行分组。
包 "客户功能" {
用例 "注册账户" 作为 Register
用例 "登录" 作为 Login
用例 "浏览产品" 作为 Browse
}
包 "管理功能" {
用例 "管理产品" 作为 ManageProducts
用例 "生成销售报告" 作为 SalesReport
}
当图表包含大量用例时,包非常有用。
您也可以使用矩形作为分组:
矩形 "订单管理" {
用例 "下订单" 作为 PlaceOrder
用例 "跟踪订单" 作为 TrackOrder
用例 "取消订单" 作为 CancelOrder
}
14. 外部系统
外部应用程序或服务可以表示为参与者。
actor "支付网关" as PaymentGateway
actor "电子邮件服务" as EmailService
actor "外部 CRM" as CRM
将它们连接到系统用例:
PaymentGateway --> MakePayment
EmailService --> SendConfirmation
CRM --> SynchronizeCustomer
这清晰地分离了系统功能与系统边界之外的服务。
15. 完整示例
以下示例结合了参考表中的主要符号。

@startuml
title 在线购物系统 - 用例图
left to right direction
skinparam shadowing false
skinparam packageStyle rectangle
skinparam actorStyle awesome
skinparam usecase {
BackgroundColor #F9FBFF
BorderColor #333333
}
skinparam ArrowColor #555555
' 参与者
actor Customer as customer
actor "高级客户" as premium
actor Administrator as admin
actor "支付网关" as payment
actor "电子邮件服务" as email
' 参与者泛化
premium -|> customer
' 系统边界
rectangle "在线购物系统" {
' 客户用例
usecase "注册账户" as Register
usecase "登录" as Login
usecase "浏览商品" as Browse
usecase "搜索商品" as Search
usecase "查看商品详情" as ViewProduct
usecase "将商品加入购物车" as AddToCart
usecase "查看购物车" as ViewCart
usecase "结账" as Checkout
usecase "下单" as PlaceOrder
usecase "跟踪订单" as TrackOrder
usecase "取消订单" as CancelOrder
' 共享包含行为
usecase "验证客户信息" as ValidateCustomer
usecase "计算订单总额" as CalculateTotal
usecase "进行支付" as MakePayment
usecase "发送订单确认" as SendConfirmation
' 可选行为
usecase "应用折扣券" as ApplyDiscount
usecase "申请退款" as RequestRefund
' 管理用例
usecase "管理商品" as ManageProducts
usecase "生成销售报告" as SalesReport
}
' 参与者关联
customer --> Register
customer --> Login
customer --> Browse
customer --> Search
customer --> ViewProduct
customer --> AddToCart
customer --> ViewCart
customer --> Checkout
customer --> TrackOrder
customer --> CancelOrder
premium --> ApplyDiscount
premium --> RequestRefund
admin --> ManageProducts
admin --> SalesReport
payment --> MakePayment
email --> SendConfirmation
' 包含关系
Checkout ..> ValidateCustomer : <<include>>
Checkout ..> CalculateTotal : <<include>>
Checkout ..> PlaceOrder : <<include>>
PlaceOrder ..> MakePayment : <<include>>
PlaceOrder ..> SendConfirmation : <<include>>
' 扩展关系
ApplyDiscount ..> Checkout : <<extend>>
RequestRefund ..> CancelOrder : <<extend>>
' 用例泛化
Search -|> Browse
' 注释
note right of Checkout
客户主要购买流程
end note
note right of ApplyDiscount
可选行为:
仅在可用有效
优惠券时使用
end note
note bottom of MakePayment
支付由
外部支付网关处理
end note
@enduml

16. 阅读完整示例
该图表传达了以下内容:
-
客户可以浏览商品、将商品加入购物车并结账。 -
高级客户是 的一种专门形式客户. -
结账始终包括客户验证、总额计算和订单提交。 -
提交订单始终包括支付和确认。 -
应用折扣券是可选的,并会延长结账流程。 -
申请退款是取消操作的可选扩展。 -
支付网关负责处理支付。
-
邮件服务用于发送订单确认信息。
-
管理员负责管理产品并生成报告。
17. 常见错误
撤销 包含
不正确:
正确:
基本用例指向所需的包含行为。
反转扩展
不正确:
正确:
ApplyDiscount ..> Checkout : <<extend>>
可选的扩展用例指向基本用例。
使用include用于可选行为
如果行为仅在特定条件下发生,请使用<<extend>>:
ApplyDiscount ..> Checkout : <<extend>>
如果总是发生,请使用<<include>>:
Checkout ..> ValidateCustomer : <<include>>
将外部参与者置于系统边界内
外部用户和服务通常应位于矩形之外:
actor Customer
rectangle "Shopping System" {
usecase "Checkout" as Checkout
}
Customer --> Checkout
创建过于详细的用例
用例应描述有意义的用户目标,例如:
除非某个小型实现步骤被复用、是可选的或对模型至关重要,否则不要将其转化为独立的用例。
18. 最小实用模板
对于较小的图表,请使用此模板:

@startuml
从左到右方向
参与者 用户
矩形 "我的系统" {
用例 "主要用户目标" 作为 MainGoal
用例 "所需共享行为" 作为 SharedBehavior
用例 "可选行为" 作为 OptionalBehavior
}
用户 --> MainGoal
MainGoal ..> SharedBehavior : <<包含>>
OptionalBehavior ..> MainGoal : <<扩展>>
MainGoal 右侧的注释
主要系统功能
结束注释
@enduml

此模板包含基本符号:
-
参与者
-
系统边界
-
用例
-
关联
-
包含
-
扩展
-
注释
-
布局方向
工具:Visual Paradigm UML、AI 和 VPasCode
PlantUML 非常适合以文本形式创建图表,但可视化建模工具可以使相同的工作流程更易于审查、细化和共享。Visual Paradigm 提供 UML 建模功能,同时结合 AI 辅助建模和基于文本的 VPasCode 工作区。其平台支持标准 UML 图表,包括用例图、类图、序列图、活动图、组件图、部署图、状态机图、包图和对象图。
Visual Paradigm UML 建模
当您希望以可视化方式构建用例图,而不是手动编写所有语法时,可以使用 Visual Paradigm。典型的工作流程如下:
-
创建 UML 项目。
-
添加用例图。
-
在画布上放置参与者和用例。
-
绘制系统边界。
-
将参与者连接到用例。
-
添加
包含,扩展以及泛化关系。 -
添加注释和约束。
-
排列并导出完成的图表。
当利益相关者需要交互式审查图表时,可视化建模尤其有用。团队成员可以检查符号、讨论特定元素,并协同标注图表。
手动创建的用例图可能包含:
-
参与者,例如
客户,管理员以及支付网关 -
系统边界,例如
在线购物系统 -
用例,例如
结账,下订单,以及跟踪订单 -
<<包含>>用于强制可复用行为的关联 -
<<扩展>>用于可选行为的关联 -
用于专用参与者或用例的泛化关系
可视化模型应保留 PlantUML 中使用的相同语义规则:
Checkout ..> ValidatePayment : <<include>>
ApplyDiscount ..> Checkout : <<extend>>
PremiumCustomer -|> Customer
重要的区别在于,更换工具不会改变 UML 的含义。无论该图是手绘、由 AI 生成还是用 PlantUML 编写,关系的方向都必须保持正确。
AI 辅助建模
Visual Paradigm 的 AI 能力有助于将自然语言需求转化为模型元素和图表。该平台将其 AI 功能描述为能够将需求转化为图表,并根据文本描述生成软件开发工件。
例如,您可以提供以下需求:
为在线购物系统创建一个用例图。
参与者:
- 客户
- 高级客户
- 管理员
- 支付网关
- 邮件服务
客户可以注册、登录、浏览商品、将商品加入购物车、
结账、跟踪订单和取消订单。
结账必须包括客户验证、总额计算、支付
和订单确认。
应用折扣券是可选的,并扩展了结账流程。
高级客户是客户的一种专门类型。
AI 辅助工具可能会利用此描述提出:
-
参与者定义
-
用例名称
-
系统边界
-
关联
-
包含的用例
-
扩展的用例
-
参与者泛化
-
描述业务规则的注释
人工智能在首次建模阶段最为有用。它能够根据需求快速生成草稿,识别候选参与者,并建议可复用的行为。生成的模型仍需由开发人员、分析师或领域专家进行审查。
推荐的 AI 审查清单
生成图表后,请验证:
-
每个参与者都位于系统边界之外。
-
每个用例都描述了一个有意义的用户目标或系统服务。
-
强制性的可复用行为使用
<<include>>. -
可选或条件性行为使用
<<extend>>. -
该
include箭头从基本用例指向被包含的用例。 -
该
扩展箭头从扩展用例指向基本用例。 -
泛化箭头指向更通用的参与者或用例。
-
已删除重复或过于详细的用例。
-
名称统一以动词短语形式表达。
-
该图清晰地传达了系统范围。
VPasCode:用文本进行建模
VPasCode 在 Visual Paradigm 生态系统中提供了一个文本到图表的工作区。官方平台将其描述为免费的文本到图表在线编辑器,同时也将其呈现为将代码转换为图表的一种方式。
这使得 VPasCode 对于偏好“图表即代码”的精确性和可重复性,同时仍希望在可视化建模环境中工作的用户非常有用。
PlantUML 用例图可以按如下方式编写:

@startuml
标题:在线购物系统
从左到右方向
参与者 Customer 作为 customer
参与者 "Premium Customer" 作为 premium
参与者 Administrator 作为 admin
参与者 "Payment Gateway" 作为 payment
参与者 "Email Service" 作为 email
premium -|> customer
矩形 "Online Shopping System" {
用例 "Register Account" 作为 Register
用例 "Log In" 作为 Login
用例 "Browse Products" 作为 Browse
用例 "Checkout" 作为 Checkout
用例 "Place Order" 作为 PlaceOrder
用例 "Track Order" 作为 TrackOrder
用例 "Cancel Order" 作为 CancelOrder
用例 "Validate Customer Details" 作为 ValidateCustomer
用例 "Calculate Order Total" 作为 CalculateTotal
用例 "Make Payment" 作为 MakePayment
用例 "Send Order Confirmation" 作为 SendConfirmation
用例 "Apply Discount Coupon" 作为 ApplyDiscount
用例 "Request Refund" 作为 RequestRefund
用例 "Manage Products" 作为 ManageProducts
}
customer --> Register
customer --> Login
customer --> Browse
customer --> Checkout
customer --> TrackOrder
customer --> CancelOrder
premium --> ApplyDiscount
premium --> RequestRefund
admin --> ManageProducts
payment --> MakePayment
email --> SendConfirmation
Checkout ..> ValidateCustomer : <<include>>
Checkout ..> CalculateTotal : <<include>>
Checkout ..> PlaceOrder : <<include>>
PlaceOrder ..> MakePayment : <<include>>
PlaceOrder ..> SendConfirmation : <<include>>
ApplyDiscount ..> Checkout : <<extend>>
RequestRefund ..> CancelOrder : <<extend>>
@enduml 
同一模型可以通过多种方式细化:
-
使用以下命令更改布局方向:
从左到右方向. -
添加注释以解释业务规则。
-
将用例分组到包中。
-
使用以下命令添加样式:
skinparam. -
重命名别名而不更改可见标签。
-
将图表源代码纳入版本控制。
-
每当模型发生变化时重新生成图表。
可视化建模与图表即代码
| 方法 | 最适合用于 | 主要优势 | 主要限制 |
|---|---|---|---|
| Visual Paradigm UML | 交互式建模与利益相关者研讨会 | 直接操作与可视化审查 | 作为文本时,变更可能更难比较 |
| AI辅助建模 | 根据需求起草模型 | 快速识别候选元素 | 生成的关系需要验证 |
| VPasCode 和 PlantUML | 可重复的基于文本的建模 | 易于版本控制、审查和重新生成 | 需要熟悉语法 |
| 组合工作流 | 专业分析与开发 | 融合速度、精度与协作 | 需要检查不同表示形式之间的一致性 |
一种实用的组合工作流
高效的工作流是:让每种工具处理其最擅长的任务:
-
用自然语言捕获需求。
描述用户、目标、系统范围和业务规则。 -
使用人工智能创建初始模型。
请人工智能识别参与者和用例,然后生成初稿。 -
在 Visual Paradigm UML 中审查初稿。
检查模型是否准确反映领域,以及图表是否易于理解。 -
将模型导出或重写为 PlantUML 格式。
使用别名、一致的命名和显式的关系语法。 -
将源代码保存在 VPasCode 或版本控制系统中。
存储.puml文件与项目文档或源代码一起保存。 -
验证 UML 语义。
请特别注意include,extend以及泛化方向。 -
发布最终图表。
将其导出为图像或文档,用于需求、架构、设计评审及项目文档。
生成 PlantUML 用例图的提示
以下提示可与 AI 建模助手配合使用:

为在线购物系统生成 PlantUML 用例图。
采用从左到右的布局,并将所有系统用例放置在一个名为“在线购物系统”的矩形框内。
参与者:
- 客户
- 高级客户
- 管理员
- 支付网关
- 邮件服务
客户用例:
- 注册账户
- 登录
- 浏览商品
- 将商品加入购物车
- 结账
- 跟踪订单
- 取消订单
结账必须包含:
- 验证客户信息
- 计算订单总额
- 下订单
下订单必须包含:
- 进行支付
- 发送订单确认
可选行为:
- 应用折扣券 extends 结账
- 申请退款 extends 取消订单
高级客户是客户的特化。
使用标准 PlantUML 语法,并包含:
- 参与者别名
- 用例别名
- 系统边界
- 参与者关联
- <<include>> 关系
- <<extend>> 关系
- 参与者泛化
- 至少一条说明性注释
确保 include 箭头从基础用例指向被包含的用例,
extend 箭头从可选的扩展用例指向基础用例。


关键要点
Visual Paradigm UML 非常适合交互式建模与评审,AI 可加速从需求到初稿的转化,而 VPasCode 结合 PlantUML 则提供可重复的基于文本的工作流。三者协同使用,可支持完整的建模生命周期:描述需求、生成初稿、验证 UML、优化源文件,并发布可维护的图表。












