UML 是用图形表示软件功能和结构的【语言】——实测一句 18 字的需求里藏着 3 处没写清,它的第一价值是逼你把这几处填上。
第七章讲完【整理方法】,这一章讲怎么把整理结果记下来。方法在心里,图在纸上——这一章就是那张纸。
一、UML 是一门语言,不是一种方法
全称 Unified Modeling Language,统一建模语言,注意是 Language 不是 Method。 它规定的是词汇和语法:一共几种图形、每种能画什么、线怎么连、哪种线表示继承。 它不管你怎么做设计——那是方法的事。7.2 的集合论与职责分配属于方法,UML 只负责把结果记下来。
二、实测:一句话里的三处模糊
拿一句真实需求:借书时如果书没还或者超期,系统就拒绝——18 个字。 【没还】:读者没还,还是书没被登记为已还? 【或者】:二选一,还是两条都算(既没还又超期)? 【系统】:哪个模块来做这个判断? 三处模糊,就是三个必须填的槽位。
三、为什么图形比文字严
文字允许省略:写【系统】不算写错,只是没写清,而没人会因此报错。 图形不允许省略:类图的格子空着就是空着,时序图的箭头不画,别人就真的不知道谁调用谁。 所以 UML 的第一价值是【检查清单】,第二才是【沟通工具】。 这也是它的代价:画图比写字慢,所以只在【必须说清】的地方画。
四、这一章的路线
8.2~8.3 先认全 13 种图形和三种用法。 8.4~8.6 用法一:表示程序的结构和动作(类图/时序图/通信图)。 8.7~8.9 用法二:表示归纳整理法的成果(同一批图,换个阶段画)。 8.10~8.13 用法三:表示非面向对象的信息(用例图/活动图/状态机图)。 8.14 收口:它凭什么算一门【语言】。
五、动手 Demo:UML是表示软件功能和结构的图形的绘制方法
拿一句真实需求,逐处标出【没说清】的地方。 这些点就是 UML 图里必须填的槽位。
sent = "借书时如果书没还或者超期,系统就拒绝"
marks = [
("没还", "指读者没还,还是书没被登记"),
("或者", "二选一,还是两条都算"),
("系统", "哪个模块来做这个判断"),
]
print(len(sent), len(marks), len(marks)) # 18 3 3
实跑输出:
--------------------------------------------------------------------
UML是表示软件功能和结构的图形的绘制方法
--------------------------------------------------------------------
一句真实需求里藏着几处【没写清】?实测逐处标出来:
原词 没说清的地方
------------------------------------
没还 指读者没还,还是书没被登记
或者 二选一,还是两条都算
系统 哪个模块来做这个判断
这句话字数 18 字
模糊点 3 处
UML 要补的槽位 3 个(谁—做什么—对谁)
**文字不是不好,是它允许【没说清】。**
**UML 的办法是:把这 3 个点变成图上必须填的槽位**——不填就画不出来。
**所以它首先是【检查清单】,其次才是【图】。**
实测:18 个字里有 3 处模糊,对应 3 个 UML 必须填的槽位。 文字能含糊过去,图含糊不过去——这就是它作为【检查清单】的价值。 但代价是真的慢,所以只在关键处画,不必事事都画。
30 秒实验
- 翻出你最近写的需求或注释,找出 3 处【说了等于没说】的地方。
- 把这三处改写成 UML 图上的槽位(谁—做什么—对谁)。
常见误区
- 以为 UML 是一种开发方法。它是语言,方法另说(第 10 章)。
- 以为画图只是给领导看的。它是逼自己想清楚的工具,第一个受益者是自己。
自测三问(点开对答案)
1. UML 全称里的 L 指什么? —— Language(语言)。它规定词汇与语法,不规定你怎么做设计。 2. 实测那句话里有几处模糊? —— 18 个字里有 3 处:没还、或者、系统——各对应一个要填的槽位。 3. 为什么说图形比文字严? —— 文字允许省略而不算错,图形空格与缺线一眼可见,含糊不过去。- ☐ 8.2 UML有13种图形
相关笔记
- 在上游工程中化为通用的归纳整理法 — 需要被记下来的那套方法
- 为何化为了通用的归纳整理法 — 图要表示的业务底子
- UML有13种图形 — 这套语言有多少个词
- 🧩 面向对象是怎样工作的 · 索引