本科毕设学生咨询:用例图中Include与Exclude的区别及用途
Hey there! As someone who’s walked through UML use case diagrams for undergrad projects myself, let me break down the difference between Include and Exclude (often referred to as Extend in formal UML standards) clearly, since this is a common pain point for grad work.
Include 关系
- 核心定义:这是一种强制依赖关系——当执行主用例时,必须完成被包含的用例,它是主用例顺利收尾的必要步骤,缺了它主用例根本没法完成。
- 核心用途:提取多个主用例里重复的公共逻辑,避免把相同步骤写一遍又一遍,让用例图更简洁、逻辑更清晰。
- 实际例子:比如做电商系统时,「提交订单」和「申请退款」这两个主用例,都需要先完成「验证用户身份」。这时就可以把「验证用户身份」做成独立用例,让前两个主用例都Include它——不做身份验证,这两个主任务都没法推进。
Exclude(扩展)关系
先补个小说明:正式UML标准里叫Extend(扩展),但有些资料会用「Exclude」来指代同一个概念,可以把它理解为主用例流程里的「可选支线」。
- 核心定义:这是一种可选依赖关系——主用例本身可以独立完成,但在特定触发条件下,会额外执行这个被扩展的用例。
- 核心用途:把主用例里的特殊场景、边缘情况或者可选功能拆分出来,避免主用例的核心流程被零散的特殊逻辑搅得杂乱。
- 实际例子:还是电商系统的「浏览商品」用例,用户单纯刷商品、看详情,这个用例就已经完成了。但如果用户点击了「加入收藏夹」(触发条件),就会启动「添加至收藏」这个扩展用例——就算用户从不收藏商品,「浏览商品」依然是一个完整的、成功的用例。
快速对比 cheat sheet
| 对比维度 | Include 关系 | Exclude/Extend 关系 |
|---|---|---|
| 执行必要性 | 强制执行,主用例无法脱离它完成 | 可选执行,仅在特定条件触发时才运行 |
| 依赖方向 | 主用例 → 被包含用例(主任务依赖公共步骤) | 扩展用例 → 主用例(支线需要主任务的上下文) |
| 核心作用 | 提取公共重复逻辑,减少冗余 | 拆分特殊/可选逻辑,简化主用例流程 |
Hope this clears things up for your graduation project—you’ve got this!
内容的提问来源于stack exchange,提问作者Ahsan Khan
相关产品推荐
相关产品推荐

