跳转至

UML 学习资源与路线

适合已有编程经验,希望系统学习 UML,并能用它分析源码和设计软件的学习者。建议先用《UML 精粹》建立基础,再通过《UML 和模式应用》学习从需求到设计的完整过程,同时结合已有源码笔记练习。

推荐书籍

书籍 作者 推荐版本 定位
《UML 精粹》 Martin Fowler 第 3 版 入门首选,建立常用图与关系的整体认识
《UML 和模式应用》 Craig Larman 第 3 版 系统学习,串联需求分析、对象设计和设计模式
《UML 用户指南》 Grady Booch、James Rumbaugh、Ivar Jacobson 第 2 版 深入查阅,理解建模元素与语义细节

《UML 精粹》:先掌握常用表达

英文名:UML Distilled: A Brief Guide to the Standard Object Modeling Language。

篇幅精炼,适合先认识类图、时序图、用例图、状态图等常用图,以及它们分别适合表达什么。阅读时重点掌握类和接口、关系箭头、多重性与对象协作,配合代码画出自己的例子。

  • 适合:希望先读懂设计模式和源码分析中的 UML 图。
  • 建议读法:先读常用图,遇到不熟悉的符号时回查,不必一次记住全部符号。
  • 入口:Martin Fowler 的书籍介绍。

《UML 和模式应用》:系统学习建模与设计

英文名:Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development。

通过案例将用例、领域模型、交互图、职责分配和设计模式联系起来。重点在于如何理解需求、识别概念、分配对象职责,并将设计逐步落实到代码。

  • 适合:已经会编程,希望掌握面向对象分析与设计的完整过程。
  • 建议读法:跟随书中的案例推进,重点理解领域模型与软件设计类图的区别,以及 GRASP 职责分配原则。
  • 如果只选一本作为系统学习的主教材,优先选择这本;阅读前可先用《UML 精粹》熟悉基本表达。

《UML 用户指南》:作为深入查阅资料

英文名:The Unified Modeling Language User Guide。

更全面地介绍 UML 的建模元素、关系和图,适合在实际绘图时查阅语义细节。

  • 适合:已有基本实践,希望理解符号含义和使用边界。
  • 建议读法:围绕遇到的问题查阅,例如关联的多重性、聚合与组合、状态机和交互建模。

以上书籍出版较早,但其中的基础建模知识仍适合作为学习材料。学习时以理解模型表达的含义为主,工具界面与具体操作可参考当前工具文档。

视频课程

Object-Oriented Design

  • 提供方:阿尔伯塔大学(University of Alberta)。
  • 平台:Coursera。
  • 入口:Object-Oriented Design。
  • 内容定位:结合面向对象设计与 UML,学习类的职责、对象关系和设计表达。
  • 适合:已有编程基础,希望通过视频与练习理解建模过程的学习者。
  • 搭配方式:作为《UML 精粹》的视频补充,再通过《UML 和模式应用》深入学习完整案例。

课程当前是否开放、可用字幕、旁听和收费规则未实时核实,以课程页面的当前说明为准。

建议学习顺序

下面的顺序适合正在学习设计模式、阅读 Android 开源库源码的场景。每一步都保留一份自己绘制并能解释的图。

阶段 学习重点 练习产出
1. 类图 类、接口、继承、实现、关联、依赖、多重性、聚合与组合 一张只展示关键职责与关系的类图
2. 时序图 参与者、生命线、消息、返回、条件分支和循环 一次完整调用的关键协作过程
3. 状态图与活动图 对象状态、状态迁移、处理步骤、分支与并行 同一业务的状态图和流程图,并说明各自关注点
4. 用例与领域模型 参与者、目标、业务概念及概念之间的关系 一个小项目的用例描述与领域模型
5. 从需求到代码 职责分配、对象交互、设计类图和实现 一份能够对应代码的小型设计

先从现有代码反推模型,再尝试从需求建立模型并实现代码。两种练习分别帮助理解实现和训练设计能力。

结合已有笔记练习

练习 参考笔记 重点
画出 CallAdapter 的关键关系 Retrofit 的设计模式分析 区分接口实现、对象持有和创建依赖
画出主图、缩略图与错误请求的结构 Glide 的组合模式 区分 Request 与 RequestCoordinator 两个接口,理解请求树
画出一次图片加载的时序 Glide 源码分析 区分配置、请求组装、启动与结果回调,标出必要的分支
对照通用模式和实际实现 观察者模式与Glide 生命周期观察者 解释具体角色,以及实际实现与通用结构的差异
从需求设计一个小项目 图书借阅、待办清单或图片加载器 先描述需求与业务概念,再分配职责、绘制交互图并实现

源码练习应记录项目版本,避免把不同版本的类和调用关系混在一张图中。完成后检查:每条关系是否有依据,图是否帮助解释当前问题,是否省略了无关实现细节。

绘图与笔记方式

日常笔记继续使用 Mermaid,使图和文字一起保存在 Markdown 中,便于修改和 Git 版本管理。练习时同时说明每张图的目的、关键角色和协作过程。

遇到 Mermaid 无法准确表达的 UML 元素时,可使用 PlantUML 等工具。建模语义以 UML 为准,不必为了工具支持而改变关系的含义。

评论