在“快缩短网址”(suo.run)项目的需求梳理与系统设计过程中,我们深刻体会到:清晰表达用户与系统之间的交互逻辑,是产品成功的第一步。而UML用例图,正是连接业务语言与技术实现的桥梁。本文旨在结合实际场景,优雅而精准地阐述用例图的绘制方法与用例描述的核心要义,助你在需求表达之路上行稳致远。
一、缘起:为何要用例?
在产品协作中,需求常如雾里看花——开发困惑于“用户到底想做什么”,测试纠结于“哪些路径必须覆盖”。此时,一个结构清晰、语义明确的用例,便如灯塔般照亮混沌。
然而,初涉用例者常陷于迷思:参与者如何界定?用例如何命名?关系又该如何表达?市面上教程虽多,却良莠不齐,标准不一。为此,我们以“快缩短网址”为实践蓝本,梳理出一套兼具规范性与实用性的用例构建方法,并采用 Visio 的 UML 用例组件进行可视化呈现,力求让每一条线、每一个符号都言之有物。
二、用例图:交互的诗意骨架
用例图由三要素构成:参与者(Actor)、用例(Use Case)及其间错综而有序的关系。它们共同编织出系统对外服务的全景图。
2.1 参与者:角色,而非人名

参与者并非具体个体,而是系统外部与之互动的角色或实体。它可以是人——如“访客”、“注册用户”;亦可是外部系统或事件——如“微信授权服务”、“定时任务调度器”。
在 suo.run 中,“用户”通过网页提交长链接,是典型的人类参与者;而“第三方OAuth平台”在回调时向系统传递身份信息,则作为非人类参与者登场。时间本身亦可成为参与者——譬如“每日凌晨自动清理过期短链”的定时触发机制。
2.2 用例:可观测的价值单元
用例是系统为参与者提供的、端到端的、可观测的功能单元。它始于一个明确触发,终于一个有意义的结果,并涵盖所有可能的主流程与异常分支。
例如,“生成短网址”这一用例,从用户输入长链接开始,经校验、编码、存储,最终返回形如 suo.run/abc123 的短链——整个过程对用户可见、结果可验证,且独立于其他功能。
其核心特征有三:
- 独立性:每个用例自成一体,不依赖其他用例的存在而成立;
- 由参与者启动:无外部触发,用例不自行发生;
- 结果可观测:执行完毕后,系统状态或输出对参与者具有明确意义。
2.3 关系:逻辑的韵律
用例图之美,在于其关系的精准表达。我们重点厘清五类核心关系:
① 关联(Association)
最基础的连线,表示参与者与用例之间的交互。如“用户”关联“生成短网址”,仅以直线相连,简洁明了。
② 泛化(Generalization)
用于抽象共性。箭头由子项指向父项,体现“是一种”的继承关系。
例如,“邮箱登录”与“微信登录”皆泛化自“登录系统”;“VIP用户”与“普通用户”同属“用户”角色。父用例定义通用行为,子用例在此基础上差异化扩展。

③ 包含(Include)
表示某用例必须调用另一用例以完成自身。箭头从基本用例指向被包含用例,标注 «include»。
如“生成短网址”必然包含“校验URL合法性”与“生成唯一编码”——这些是不可或缺的子步骤,但本身不直接服务于用户。
④ 扩展(Extend)
表示在特定条件下可选增强基本用例的行为。箭头从扩展用例指向基本用例,标注 «extend»,并注明触发条件。
例如,“生成短网址”在用户勾选“设置有效期”时,扩展出“配置过期时间”用例。若无此条件,主流程照常执行。
⑤ 依赖(Dependency)
广义上,包含与扩展皆属依赖。但在实践中,若某用例A需先完成用例B方可执行(如“查看个人链接记录”依赖“用户已登录”),可用虚线箭头表示依赖关系,强调执行顺序或前提条件。
此外,注释(Note)可用于标注特殊规则——如“VIP用户可自定义短链后缀”;子系统框(Subsystem Boundary)则将强相关的用例聚类,如将“登录”“注册”“找回密码”归入“认证子系统”,提升图面可读性。
2.4 关系辨析:微妙之处见真章
- 使用条件:包含与泛化的子用例无条件执行;扩展用例则需满足特定前提。
- 服务方式:泛化与扩展用例直接为参与者提供价值;包含用例仅间接支撑主用例。
- 内容归属:泛化子用例继承父用例全部行为与关系;扩展用例则完全独立,仅在条件满足时介入。
三、用例描述:文字的温度
图示仅是骨架,血肉在于详实的用例描述。我们建议采用结构化表格,涵盖以下维度:
| 要素 | 说明 |
|------|------|
| 用例名称 | 动宾结构,如“生成短网址” |
| 参与者 | 明确主参与者及辅助参与者 |
| 前置条件 | 执行前系统必须满足的状态(如“用户已访问首页”) |
| 主成功场景 | 步骤化描述理想路径 |
| 扩展场景 | 列出异常或分支(如“URL无效”“短链已存在”) |
| 后置条件 | 执行后系统应达成的状态(如“短链记录已存入数据库”) |
形式可灵活调整,但核心在于:让开发一眼看懂逻辑,让测试精准覆盖路径,让产品自信确认需求无歧义。
结语
在 suo.run 的世界里,每一个短链背后,都是用户对效率与简洁的向往。而我们的职责,是以最清晰的语言,将这份向往转化为可执行的蓝图。
无论图表多么精美,文档多么详尽,终极目标始终如一:让团队在最短时间内,达成最深的理解。
愿此文如一把精巧的刻刀,助你雕琢出属于自己的需求艺术。若有疏漏,敬请指正——因为每一次交流,都是通往卓越的阶梯。
> 快缩短网址(suo.run)——让链接更短,让沟通更快。