引言
统一建模语言(UML)长期以来一直与重量级、以文档驱动的开发流程相关联。然而,当经过深思熟虑地应用时,UML可以成为敏捷团队的强大工具。关键在于将UML作为沟通辅助工具,而非文档负担——创建足够多的视觉模型以增强理解,同时不减缓交付速度。
为什么在敏捷中使用UML?

敏捷团队重视可运行的软件胜过全面的文档,但他们同样重视清晰的沟通。UML图表在敏捷环境中具有多种用途:
-
共同理解:视觉模型帮助团队成员就系统设计达成一致
-
入职培训:新团队成员可以快速掌握架构和关系
-
复杂度管理:将复杂功能分解为可视化表示
-
干系人沟通:非技术干系人可以更好地理解拟议的解决方案
-
设计探索:在编写代码前快速草拟替代方案
敏捷UML的核心原则
1. 恰到好处,及时到位
仅在图表能增加价值时才创建它们。不要一开始就为所有内容绘制图表。当你遇到难以仅通过口头或文字讨论的复杂性时,再创建模型。
2. 白板优先于文档
优先在白板上、数字协作工具或餐巾纸上进行草图绘制,而不是创建正式、精美的图表。目标是促进对话,而非追求完美。
3. 随代码演进
将图表视为活生生的产物。当代码发生重大变化时更新它们,如果不再相关则将其丢弃。避免让图表变成过时的遗物。
4. 专注于沟通,而非完整性
一个好的敏捷UML图表传达你需要表达的具体观点。它不需要展示每个属性、方法或关系。
5. 协作创建
在细化会议、设计讨论或冲刺规划期间共同创建图表。共同绘制这一行为有助于建立共同理解。
敏捷团队必备的UML图表
并非所有14种UML图表类型对敏捷团队都同样有用。请专注于这些高价值图表:
1. 类图
何时使用:理解领域模型、定义数据结构、阐明实体之间的关系
敏捷方法:
-
仅展示当前功能或冲刺相关的类
-
包含对讨论至关重要的关键属性和方法
-
使用简化符号——除非重要,否则省略可见性标记
-
关注关系(关联、继承、组合)
示例场景:在新电商功能的待办事项梳理期间,绘制产品、购物车和订单的类图,以阐明它们如何交互。
2. 序列图
何时使用:理解组件之间的交互、阐明 API 调用、调试复杂流程
敏捷方法:
-
建模一个特定的用户故事或交互路径
-
仅展示该流程中涉及的对象/组件
-
保持横向布局——将生命线数量限制在 5 到 7 条以确保可读性
-
用于讨论集成点或异步行为
示例场景:描绘用户结账时的事件序列,展示前端、支付服务、库存服务和通知服务之间的交互。
3. 活动图
何时使用:建模业务流程、工作流逻辑、决策点
敏捷方法:
-
聚焦于一个流程或用户旅程
-
使用泳道展示团队或系统间的职责划分
-
保持决策点简洁
-
非常适合澄清验收标准
示例场景: 绘制费用报销审批流程图,展示基于金额和部门的不同路径。
4. 组件图
何时使用: 理解系统架构、微服务边界及部署考量
敏捷方法:
-
展示高层级组件及其接口
-
适用于讨论技术债务或重构机会
-
有助于可视化服务之间的依赖关系
示例场景: 在架构审查期间,展示用户认证组件如何与用户配置文件服务和会话管理进行交互。
5. 状态机图
何时使用: 对具有复杂生命周期状态的对象进行建模,如订单处理、工作流引擎
敏捷方法:
-
聚焦于具有有意义状态转换的单个实体
-
清晰标注触发器和条件
-
有助于识别边界情况
示例场景: 对订单的状态(已创建、已支付、已发货、已交付、已退货)及其之间的有效转换进行建模。
6. 用例图
何时使用: 项目初始范围界定、利益相关者对齐、识别参与者和目标
敏捷方法:
-
谨慎使用——通常用户故事已足够
-
在项目早期有助于识别范围边界
-
保持高层级;不要深入细节
示例场景:早期发现阶段,用于识别所有参与者类型(客户、管理员、支持代理)及其主要目标。
何时不应使用 UML
在以下情况下应避免使用 UML:
-
概念足够简单,可以用文字解释清楚
-
你正在创建无人会再次参考的图表
-
创建图表所需的时间比实现该功能所需的时间更长
-
你正在记录代码中已经清晰的内容
-
利益相关者无法理解或参与该图表
敏捷仪式中的实用集成
待办事项细化
-
草绘类图或序列图以阐明复杂的故事
-
使用活动图来梳理验收标准
-
以可视化方式记录决策和假设
冲刺规划
-
使用组件图识别用户故事之间的依赖关系
-
通过快速草图阐明技术方案
-
通过可视化复杂性进行更准确的估算
每日站会
-
在讨论阻碍因素时参考现有图表
-
如果实现偏离设计,请更新图表
冲刺评审
-
展示改进前后的图表,以说明架构优化
-
使用可视化手段向利益相关者解释技术成果
回顾会议
-
识别哪些地方更好的可视化本可避免误解
-
讨论某些图表是否增加了价值或属于浪费
设计会议
-
使用 UML 符号在白板上列出多种备选方案
-
根据清晰度和可行性对方案进行投票
-
记录已达成共识的设计,供未来参考
工具与技术(不提供具体工具推荐)
低保真方法
-
白板和记号笔
-
纸和铅笔
-
餐巾纸草图
-
贴在墙上的便利贴
数字协作
-
共享数字白板
-
远程会议中的屏幕共享
-
集成在协作平台中的简单绘图工具
-
可版本控制的基于文本的UML
图表的版本控制
-
在代码仓库中存储图表
-
使用支持差异比较和合并的格式
-
当更新内容重要时,将图表更新作为拉取请求的一部分
常见陷阱及避免方法
陷阱一:过度设计图表
问题: 花费数小时完善符号、颜色和布局
解决方案: 设定时间限制。如果创建图表超过15-20分钟,可能过于详细。
陷阱二:创建无人阅读的图表
问题: 生成全面但很快过时的文档
解决方案: 仅创建满足即时沟通需求的图表。问自己:“谁需要这个?何时需要?”
陷阱三:创建后忽视图表
问题: 图表与实现脱节
解决方案:要么将图表的更新纳入“完成定义”的一部分,要么明确将其标记为“某一时刻的快照”,并接受它们将成为历史参考。
陷阱 4:将 UML 作为对话的替代品
问题:发送图表而非讨论设计
解决方案:将图表用作对话的起点,而非对话的替代品。共同浏览图表。
陷阱 5:要求具备 UML 专业知识
问题:团队成员因不了解 UML 符号而感到被排斥
解决方案:以非正式方式教授基础知识。使用简化符号。注重概念而非严格语法。大多数人能够理解方框、箭头和标签。
在多个团队中推广 UML
架构决策记录(ADRs)
在架构决策记录中包含简单的 UML 图表,以记录为何做出某些架构选择。这有助于其他团队理解背景。
接口契约
使用组件图或类图来定义团队之间的 API 和接口。这能建立清晰的边界和预期。
入职资料包
创建一组关键图表,帮助新团队成员理解系统。保持这些图表经过精心筛选并定期更新。
跨团队依赖关系
使用序列图或组件图来可视化团队服务之间的依赖关系。这有助于协调并识别耦合。
衡量价值
如何判断 UML 是否正在帮助你的敏捷团队?
积极指标:
-
实施过程中的误解减少
-
新团队成员入职速度加快
-
技术讨论更加清晰
-
因早期发现设计缺陷而减少返工
-
利益相关者更好地理解技术约束
消极指标:
-
在图表上花费的时间会降低开发速度
-
团队成员忽视或抱怨图表
-
图表总是过时
-
创建图表变成了一种官僚主义要求
适应你的具体情境
每个团队都不同。在决定如何使用 UML 时,请考虑以下因素:
团队成熟度: 经验丰富的团队可能需要的图表较少。以初级人员为主的团队可能从可视化模型中获益更多。
系统复杂性: 简单的增删改查(CRUD)应用通常不需要复杂的建模。复杂的分布式系统则受益于交互的可视化。
监管环境: 某些行业需要特定的文档。找到满足合规要求的最小可行 UML。
远程办公与集中办公: 远程团队可能更依赖数字图表。集中办公的团队可以利用实体白板。
利益相关者的技术素养: 技术素养较高的利益相关者可以参与详细的图表讨论。业务利益相关者则需要更简单、更高层级的视图。
快速参考:何时使用哪种图表?
| 情境 | 推荐图表 |
|---|---|
| 理解数据关系 | 类图 |
| 澄清 API 交互 | 序列图 |
| 建模业务流程 | 活动图 |
| 解释系统架构 | 组件图 |
| 跟踪对象生命周期 | 状态机图 |
| 初始范围发现 | 用例图 |
| 部署考量 | 部署图 |
| 并行过程 | 带泳道的活动图 |
结论
敏捷中的UML旨在实现务实的沟通,而非详尽的文档记录。最成功的敏捷团队会选择性、协作式且轻量地使用UML。他们在视觉思维能带来价值时创建图表,保持图表简洁且聚焦,并在图表完成使命后毫不迟疑地将其弃用。
请记住:目标并非产出完美的UML图表。目标是构建正确的软件,而有时快速草图能比单纯的文字更快地让所有人达成共识。从小处着手,尝试适合你团队的方法,并根据实际交付的价值让实践不断演进。
最好的UML图表是那些能防止误解、加速决策或阐明复杂概念,随后便退居幕后,让团队专注于交付价值的图表。
参考资料
- 精通UML类图:Visual Paradigm实用用户指南: 创建类图、管理可见性并使用泛化集等高级技术的分步指南。
- 通过Visual Paradigm在线免费版释放您的创造力: 免费在线版功能概览,包括无限数量的图表、导出格式及跨平台支持。
- 实践3:结构实现: 关于使用AI生成类图、绘制组件图以及创建部署图的实践课程。
- Visual Paradigm的AI聊天机器人如何革新图表创建: 解释AI聊天机器人如何通过真正的建模智能和上下文理解实现对话式图表创建。
- Visual Paradigm UML快速入门: 官方快速入门指南,涵盖环境配置、图表创建、模型元素文档化及基础格式化。
- 如何在Visual Paradigm中创建UML用例图: 关于创建包含参与者、系统边界及包含/扩展关系的用例图的教程。
- Visual Paradigm VPasCode:综合指南: 关于支持PlantUML、Mermaid和Graphviz的图表即代码工具的指南,具备AI生成和实时预览功能。
- Visual Paradigm社区圈——图表绘制与建模: 涵盖图表编辑、建模工具、模型网格及图表文档的说明。
- 精通序列图建模:Visual Paradigm的实用方法: 关于序列图的实用示例,涵盖基本交互、条件行为、循环及异常处理。
- 高等教育用UML图表软件工具的系统综述:学术评论指出,Visual Paradigm 在顶级工具中协作功能方面被评为最佳。












