include 看“每次都要做”
include 表示一个基础用例执行时,总会包含另一个公共用例。比如“提交订单”每次都需要“校验库存”,“办理借书”每次都需要“验证读者身份”。这些动作不是偶尔发生,而是主流程稳定需要的一部分。
考试题干如果强调公共步骤、复用步骤、必经步骤,通常更接近 include。注意,这里的“包含”不是语文里的包含关系,而是用例执行时一定会调用的公共行为。
| 关系 | 判断核心 | 常见例子 |
|---|---|---|
| include | 必做、公共复用 | 登录校验、身份验证、库存校验 |
| extend | 条件触发、可选扩展 | 欠费时缴费、支付失败时重试、异常时补充处理 |
| 泛化 | 一般用例和特殊用例 | 普通用户登录、管理员登录 |
| 关联 | 参与者与用例交互 | 用户发起下单 |
extend 看“满足条件才发生”
extend 表示在特定条件下,对基础用例增加一个扩展行为。比如用户借书时,如果有欠费,才触发“缴纳欠费”;支付订单时,如果支付失败,才触发“重新支付”或“选择其他支付方式”。不是每次都发生,就是 extend 的典型信号。
做题时不要只看到“扩展功能”四个字就选 extend。要看它是不是主流程的可选分支。如果题干说该步骤每次都必须执行,即使名字听起来像扩展,也更可能是 include。
三个场景快速判断
每次下单都要计算订单金额:更像 include。
订单金额超过限额才需要主管审批:更像 extend。
用户可以选择普通支付或积分支付:可能是用例泛化或不同场景建模,不能机械套 include。
别先背箭头方向,先判断业务语义
箭头方向当然要会,但对于选择题来说,真正决定答案的往往是业务语义。很多同学一上来回忆箭头从谁指向谁,结果题干都没读清楚。老师更建议先问:这个动作是不是基础流程必需?是不是多个用例共同复用?是不是只有条件满足才触发?
如果答案已经能从业务语义判断,再回头看箭头方向就比较稳。反过来,如果只背箭头方向,不理解 include 和 extend 的目的,题目换一个图书借阅、网购支付、报销审批的场景,就容易乱。
用一句话把题目改写出来
遇到 include/extend 场景题,可以把题干改写成一句话:做 A 的时候,是否一定要做 B?如果答案是一定要做,而且 B 可能被多个用例复用,优先考虑 include;如果答案是满足某个条件才做 B,优先考虑 extend。
这个方法特别适合下午题填空。不要急着把图画满,先把每个用例背后的业务规则写清楚。用例图不是为了画箭头而画箭头,它是在表达系统要给参与者提供哪些目标,以及这些目标之间的执行关系。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- UML 用例图中 include 和 extend 怎么区分?UML / 用例图
- UML 类图中泛化关系是什么意思?UML 类图关系 / 软件设计师UML类图
- UML 时序图主要用来描述什么?UML / 时序图