知识卡片
用例关系的历史演变
内容
用例之间的关系随UML版本发生过一次实质性拆分:UML 1.1只有«uses»和«extends»两种,都是泛化的构造型;UML 1.3拆成了三种更精确的关系——«include»(依赖的构造型,表示一个用例的路径被包含进另一个用例,用于抽取多个用例共享的公共步骤)、用例泛化(表示一个用例是另一个用例的变体,特化用例可以改变基用例的任何方面)、«extend»(依赖的构造型,比泛化更可控,基用例显式声明扩展点,扩展用例只能在扩展点处改动行为)。经验规律:过去说的«uses»基本等同于现在的«include»;过去的«extends»则被拆成了现在的«extend»(受控扩展)和泛化(整体变体覆盖)两种含义。
结构图:
flowchart LR
A["UML 1.1: «uses»"] -->|大致等同| B["UML 1.3: «include»<br/>共享公共步骤"]
C["UML 1.1: «extends»"] -->|拆分为| D["UML 1.3: «extend»<br/>基用例声明扩展点, 受控扩展"]
C -->|拆分为| E["UML 1.3: 用例泛化<br/>特化用例可改基用例任何方面"]
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》附录A《UML版本之间的变化》(源文件:_epub-src/EPUB/17.xhtml)
- 结论依据:原文说明"UML 1.1有两种用例关系:«uses»和«extends»……UML 1.3提供了3种用例关系……大多数人使用«uses»的方式和使用UML 1.3的«includes»是一样的……UML 1.1的«extends»已经被分裂为UML 1.3的«extend»和泛化"。
- 原始内容:UML 1.1有两种用例关系:«uses»和«extends»,两者都是泛化的构造型。UML 1.3提供了3种用例关系……大多数人使用«uses»的方式和使用UML 1.3的«includes»是一样的,因此对于大多数人来说,我们可以说«includes»替换了«uses»……你可以认为UML 1.1的«extends»已经被分裂为UML 1.3的«extend»和泛化。