用例图是统一建模语言(UML)的一个关键组成部分,提供了用户(参与者)与系统之间交互的可视化表示。本指南将涵盖用例图的关键概念、组成部分和用途,帮助您理解并有效利用它们进行系统建模。

用例图的目的
用例图用于建模系统、子系统或类的行为,展示系统在其环境背景下所提供的外部可见服务。它们捕捉系统的功能需求,有助于理解用户如何与系统交互以及他们对系统的期望。用例图从特定视角出发,表示外部代理(称为参与者)与主体(如系统)交互时所感知到的功能。
用例
定义与特征
用例代表用户(参与者)希望系统实现的功能单元或目标。它描述了系统为向参与者提供有价值且可观察的结果而执行的一系列操作。关键特征包括:
- 目标导向:每个用例代表某个用户希望系统协助实现的目的或目标。
- 操作:用例可被视为由外部用户调用的操作。
- 行为模型:用例是系统行为模型的一部分,通常被视为对系统的操作。
- 场景:用例可以是一组序列的描述,其中每个序列代表所有变体中的一种可能流程。每个序列被称为一个场景。
- 分类器:用例是一种分类器,因此可以具有属性和操作,类似于类。
示例
在一个电子商务系统中,用例可能是“下单”,它描述了客户下单时执行的一系列操作,包括将商品添加到购物车、输入支付信息以及确认订单。
参与者
定义与特征
参与者代表与系统交互的用户或外部实体(如另一个系统)。参与者启动用例。关键特征包括:
- 外部实体:参与者本身不是系统的一部分。
- 角色:参与者代表角色,而非具体个人或职务头衔。
- 泛化:参与者可以被泛化或特化。当一个参与者被特化时,所有特化后的参与者都可以参与与一般参与者相同的用例。
- 类型:参与者可以是人、其他计算机系统或进程。
示例
在图书馆管理系统中,参与者可能包括“图书管理员”、“会员”和“外部系统”(例如,图书供应商)。
主题
主题是一种分类器,向参与者提供用例。它通常是系统或子系统。一个用例可以有多个主题。主题以一个方框表示,名称和可选的构造型位于左上角。
示例
在银行系统中,主题可能是“银行系统”,它向“客户”和“银行柜员”等参与者提供“取款”、“存款”和“转账”等用例。
关系
用例和参与者通过关系连接,包括:
关联
关联表示参与者与用例之间的通信路径。参与者与用例之间的关联表明它们之间存在相互通信。
泛化
泛化表示一个通用用例与更具体用例之间的关系。它以带三角形箭头的实线表示,类似于类的泛化。
包含
包含用于将多个用例之间共享的公共行为提取到一个独立的用例中。包含关系通过带关键字«include»的虚线箭头表示,箭头从基础用例指向被包含的用例。
扩展
扩展用于向基础用例添加可选或条件性行为。扩展关系通过带关键字«extend»的虚线箭头表示,箭头从扩展指向基础用例。
示例
在一个在线购物系统中,用例“结账”可能包含用例“验证付款”,而用例“添加到购物车”可能扩展用例“浏览商品”。
符号表示
用例
用例以椭圆表示,其名称位于椭圆内部或下方。
参与者
参与者以小人图示或带构造型的类框表示。
主题
主题通常以矩形表示。
示例

图头
图头的类型通常是‘pkg’,但其他命名空间容器如‘class’和‘component’也是可能的。
简化用例
可以使用泛化、包含和扩展等技术来简化复杂的用例。
命名约定
- 动词短语: 用例名称应使用现在时的动词短语,以表明参与者的目标。
- 避免使用名词: 避免使用名词或分词形式,避免使用已完成的行为。
- 参与者术语: 使用参与者的术语,避免使用行话或实现概念。
- 简单术语: 使用简单、明确的术语,确保每个人都能理解。
- 目标陈述: 一个有用的技巧是在目标前加上“O 系统,请帮我……”这样的词语。
示例
在一个项目管理系统中,用例可以命名为“创建任务”,而不是“任务创建”。
用例模板
尽管在资料中并未正式规定“用例模板”,但以下内容通常会被记录在用例中:
- 名称: 一个动词短语,描述参与者想要实现的目标。
- 参与者: 与用例交互的用户或外部实体。
- 主题: 提供功能的系统或子系统。
- 描述: 用例的文本描述。
- 事件流程: 用例开始和结束的时间与方式、用例执行的内容、与参与者的交互方式以及交换的信息。
- 场景: 用例的具体实例或变体。
- 关系: 用例与其他用例之间的关系(包含、扩展、泛化)。
- 前置条件和后置条件: 定义用例执行前后的状态。
- 扩展点: 基础用例中可以发生扩展的特定点。
示例
用例:下单
| 字段 | 描述 |
|---|---|
| 名称 | 下单 |
| 参与者 | 客户 |
| 主体 | 电子商务系统 |
| 描述 | 客户通过将商品添加到购物车、输入支付信息并确认订单来下单。 |
| 事件流 | 1. 客户浏览商品。 2. 客户将商品添加到购物车。 3. 客户输入支付信息。 4. 客户确认订单。 5. 系统处理支付并确认订单。 |
| 场景 | – 成功下单。 – 支付失败。 – 商品缺货。 |
| 关系 | 包含“验证支付”,扩展“浏览商品”。 |
| 前置条件 | 客户必须已登录。 |
| 后置条件 | 订单已确认,付款已处理。 |
用例实例
用例实例是指由参与者的一个实例发送的消息所触发的用例执行。用例实例可能遵循通过扩展或包含关系关联的其他用例。用例实例可以具有属性和操作,以表示执行进度和对系统的影响。
图示用途
用例图通常在分析阶段使用,以捕捉系统的功能需求。它们可用于建模系统的上下文,或建模系统的需求。
与其他图示的关系
可以用其他UML图(如顺序图、状态机图或通信图)来详细描述用例。顺序图、协作图和活动图可用于展示用例的行为以及系统与参与者之间的交互。
正向与逆向工程
尽管用例图不指定系统的实现,也无法直接进行正向或逆向工程,但可以通过基于其事件流生成测试脚本,用于测试。
包
用例通常被组织成包。建议创建以用例为中心的包,即为每个参与者构建一个包,并将相关的用例和类放入每个包中。包也可以根据系统的架构按层次进行组织。
示例
在一个医疗系统中,包可能包括“患者管理”、“预约安排”和“计费”,每个包都包含相关的用例和类。
结论
用例图是从业务用户角度建模和理解系统行为的宝贵工具。通过使用这些元素和概念,您可以创建全面且有效的用例图,作为系统设计和开发的基础。无论您是在设计新系统、记录现有系统,还是向利益相关者传达设计思路,用例图都能提供实现成功结果所需的清晰度和细节。
参考文献
- 什么是用例图?
- 本文介绍了用例图,解释了其目的和关键组成部分,并通过示例说明所讨论的概念。20.
- 用例图教程
- 一份全面的教程,涵盖用例图的基础知识,包括如何创建和何时使用它们。还提供了示例和有效绘制用例图的技巧。21.
- 用例图模板
- 该资源提供免费的在线用例图模板和示例。用户可以使用直观的在线绘图软件创建专业的用例图。22.
- 在线用例图工具
- Visual Paradigm Online 提供了一个易于使用的在线UML图制作工具,配备丰富的可自定义用例图示例,帮助用户快速上手。23.
- SysML:通过用例图识别用户需求
- 本指南解释了如何使用SysML用例图来识别和记录用户需求。其中包含示例以说明所讨论的概念24.
- 免费用例图工具
- 一款免费的在线用例图工具,支持UML、ERD和组织结构图。它允许用户通过直观的UML绘图编辑器快速绘制用例图25.
- 用例图综合教程——Cybermedian
- 本教程提供了创建和理解用例图的详细指南,并以Wheels自行车租赁系统为例26.
- 用例图,UML图示例:业务用例图示例——Visual Paradigm社区圈
- 本文提供了一个业务用例图的示例,解释了如何使用业务用例图来表示整个组织所提供的功能27.
- 用例——通过示例学习——Cybermedian
- 该资源提供了用例图的示例,解释了如何定义用例之间的关系以及软件分析中涉及的决策过程28.












