很多产品新人在做需求分析时,都会在用例图这一关被卡住。明明知道要表达“用户能做什么”,可一打开 Visio,脑子里就开始打架:“参与者到底怎么画?”“包含和扩展到底有什么区别?”网上的教程看了一堆,图例五花八门,有的甚至越看越乱。下面,我们就结合 Visio 自带的 UML 用例组件,聊聊怎么把用例图画清楚,也把用例描述写明白。
先说说用例图到底在画什么。用例图描述的是系统外部参与者与系统内部功能单元之间的关系,它不关心具体怎么实现,只关心“谁”能用“什么功能”。跟开发、测试同事沟通需求时,一张清晰的用例图常常比好几段文字都管用。用例图的结构其实就三块:参与者、用例,以及它们之间的关系。下面我们逐一展开。
先说参与者,它可不只是“人”。参与者代表系统外部与系统交互的角色或事物,这里有两个常见的误区。
第一个误区,是以为参与者必须是具体的人。实际上,参与者是“角色”,不是某个特定个体。比如“张三”不是参与者,“用户”才是。同一个真人,在不同场景下可能是“买家”,也可能是“卖家”,对应两套完全不同的用例。

第二个误区,是忽略“事物”也能当参与者。比如微信授权登录,系统会跳转到微信确认身份,这时微信应用本身就是一个参与者。再比如,系统设定在凌晨 3 点自动强制退出登录,这个“时间”也可以被建模为参与者。把这些外部系统或定时事件纳入参与者,能让用例图更完整地反映系统边界。
接下来看用例,它可不只是一个椭圆圈。用例是系统对外可见的一个功能单元,它描述的是参与者从开始到结束完成某件事的整个过程、系统需要提供的一系列动作,以及结束时应该返回的有意义的结果——其中还包含各种可能的分支情况。一个规范的用例通常具备几个特征:它由参与者启动,用例之间相互独立,执行结果可被观察到。比如“登录账户”就是一个典型的用例,它由用户发起,结束后要么成功进入系统,要么失败并给出提示,结果非常明确。
最后是关系,这才是用例图真正要花心思的地方。Visio 的 UML 用例组件提供了几种关系线,平时最容易用混的就是包含、扩展和泛化,咱们重点说清楚。
关联关系,就是参与者和用例之间的直线连接,表示双方有交互。比如用户关联“登录系统”,画一条直线就行。
泛化关系,可以理解为“一般与特殊”的关系,既适用于参与者,也适用于用例。箭头从子参与者或子用例指向父级。比如“VIP 会员”和“普通用户”都可以泛化成“用户”;“微信登录”和“账号密码登录”都可以泛化成“登录系统”。父级更抽象,子级更具体。
包含关系,说的是一个用例在执行过程中必然要调用另一个用例。箭头从基本用例指向包含用例,线上标着 <<include>>。比如“账号登录”会包含“输入账号”“输入密码”“确认登录”等步骤,这些步骤本身就是可复用的用例。包含关系的特点是:被包含的用例没有独立的使用条件,基本用例走到那一步就一定会执行它。
扩展关系,与包含关系不同,扩展用例是在特定条件下才会被触发的,用来增强基本用例。箭头从扩展用例指向基本用例,线上标 <<extend>>。比如“忘记密码”就是在用户登录时忘记密码的情况下才触发的扩展用例,它并不总是会发生。
依赖关系,表示一个用例在执行过程中依赖于另一个用例的执行结果或功能。比如“查看主页信息”依赖于“登录系统”,不登录就看不到。这种情况在 Visio 里可以用直线加注释来说明,比硬套 UML 依赖箭头更灵活,实际工作中也更常用。
为了更好地区分,可以这样记:包含关系是“必须做”,扩展关系是“可能做”,泛化关系是“可以选择做”。比如用户登录,系统一定会包含输入账号密码(包含),用户可能忘记密码(扩展),而用户一开始就可以选择用微信登录还是账号登录(泛化)。这些区别在画图时一定要厘清,否则开发看着图去写代码很容易跑偏。
此外,还有些辅助元素很实用。一个是注释,对于有特殊前置条件或业务规则的用例,可以附加注释。比如“VIP 用户登录后看到的菜单和普通用户不同”,这时候拖个注释框把特殊要求写清楚,能省去很多沟通成本。另一个是子系统,当某些用例在业务上强相关时,可以用一个子系统框把它们圈起来,比如“系统登录”和“主页信息显示”同属一个用户认证子系统,这样看图的人一眼就能抓住边界。
用例图画完了,工作其实只完成一半。更重要的是把每个用例用文字描述清楚,包括参与者身份、前置条件、基本流程、备选流程、后置条件等等。这部分通常用一张用例描述表来呈现,表格里可以包含用例名称、参与者、前置条件、基本事件流、备选/异常事件流、后置条件等要素。不同业务系统对用例描述的侧重点可能不同,核心目的只有一个:让团队同事在最短时间内理解这个功能到底要做什么、怎么做。表格形式不必拘泥,能把需求表达准确、无歧义就行。

最后,不管用例图画得多漂亮、表格写得多工整,最终目的都是降低团队的理解成本。扎实的文档能力是产品经理的基本功,也是团队协作的润滑剂。如果这篇文章能帮你把用例和用例描述讲得更清楚,那它就没白写。

以上内容整理自公开资料,仅供学习交流,不构成商业建议。如涉及版权问题,请联系删除。

Login Now