刚接手一个新项目时,最头疼的就是需求模糊不清。产品经理说"我们要做个电商平台",开发团队问"具体要哪些功能",得到的回答往往是"就和淘宝差不多"。这时候,用例图就像是一把手术刀,能精准地解剖出系统的核心功能和用户交互。
我去年负责过一个社区团购项目,最初的需求文档只有三页PPT。通过和业务方反复沟通,我们用一周时间画出了完整的用例图,不仅明确了"团长管理"、"商品上下架"、"订单核销"等23个核心功能,还发现了5个被遗漏的重要场景。这份可视化文档后来成为整个项目的需求基准。
用例图之所以被称为"对话蓝图",是因为它能:
参与者不一定是人。我做过一个物流系统,主要的参与者包括:
识别参与者时要注意:
plantuml复制@startuml
left to right direction
actor 顾客 as C
actor 银行系统 as B #LightGray
@enduml
好的用例命名应该是"动词+宾语"结构。比如:
常见错误:
我习惯给每个用例加备注说明:
code复制用例:团长审核
触发条件:新团长提交申请
前置条件:用户具有管理员权限
基本流程:
1. 系统显示待审核列表
2. 管理员查看资料
3. 通过/驳回申请
异常流程:
- 资料不全时提示补充
除了基本的关联关系,实际项目中经常会用到:
包含关系(include):
扩展关系(extend):
泛化关系:
plantuml复制@startuml
(订单支付) as pay
(验证余额) as valid
(微信支付) as wx
(加急配送) as urgent
pay --> valid : include
pay <|-- wx
(订单配送) ..> urgent : extend
@enduml
用矩形框标注系统范围,我常用Visio的虚线边框。最近做的智能家居项目中,系统边界明确排除了:
关键问题清单:
不要漏掉这些隐藏角色:
技巧:列出所有涉众后,用MoSCoW法则筛选:
采用"用户故事"思维:
"作为[角色],我想要[目标],以便[价值]"
案例对比:
推荐工具:用例描述模板
code复制编号:UC-102
名称:商品退货
级别:用户目标
主要参与者:买家
触发事件:收到瑕疵商品
前置条件:订单处于可退货期
成功保证:退款到账
常见连线问题解决方案:
工具技巧:
应该包含的补充信息:
不建议包含的细节:
原始需求:"要增加学习监督功能"
通过用例图梳理出:
特殊场景处理案例:
最终产出物包含:
大型项目建议分三级:
案例:银行核心系统
code复制L1:客户服务/风控/运营
L2:客户服务→存款/贷款/理财
L3:存款→活期/定期/通知存款
我踩过的坑:
2023年实测推荐:
特别提醒:避免用Photoshop等图形工具画用例图,难以维护
我的标准模板:
markdown复制## 功能需求FR-203:商品退货
**对应用例**:UC-102
**业务规则**:
- 7天无理由退货
- 生鲜商品除外
**验收标准**:
1. 退货申请提交后生成RMA编号
2. 系统自动计算应退金额
用例图到类图的转化示例:
code复制用例"用户注册" →
类: UserService
方法: register(username, password)
正向测试案例:
code复制用例:登录系统
测试步骤:
1. 输入正确用户名密码
2. 点击登录
预期结果:跳转至个人中心
反向测试案例:
code复制用例:登录系统
测试步骤:
1. 输入错误密码
2. 点击登录
预期结果:显示"密码错误"提示
在实际项目交付时,我会把用例图打印成A0尺寸贴在团队墙上,每周用不同颜色便利贴标注进度。这种可视化方法能让所有人快速理解系统全貌,特别当新成员加入时,这份"对话蓝图"能让他两天内掌握系统核心逻辑。记住,好的用例图应该像城市地铁图一样——复杂系统,简单呈现。