第2章 需求分析基础

如何收集需求?用户故事与用例图(UML)入门

需求分析是技术方案设计的起点。没有清晰的需求,后续的架构、编码、测试都会失去方向。本章将带你掌握需求收集的核心方法,并学会使用用户故事和UML用例图这两种经典工具来结构化表达需求。

2.1 需求收集的四大渠道

高效的需求收集需要多维度交叉验证,避免单一视角带来的偏差。以下是最常用的四种方式:

方法适用场景产出物
用户访谈探索性、小规模定性分析访谈纪要、痛点清单
问卷调查大规模定量验证统计报告、优先级排序
现场观察理解真实工作流用户旅程图、操作日志
文档分析已有系统或规范参考功能清单、数据字典
💡 实践建议: 在项目启动阶段,至少组合使用访谈 + 问卷两种方法,既能获得深度洞察,又能覆盖足够样本量。
用户访谈 问卷调查 现场观察 文档分析 需求池(待分析)

2.2 用户故事:让需求有温度

用户故事(User Story)是敏捷需求的标准格式,它从用户视角描述功能价值。标准模板:

作为<角色>,我想要<功能>,以便<商业价值>。

例如:

  • 作为 普通用户,我想要 一键重置密码,以便 在忘记密码时快速恢复访问。
  • 作为 管理员,我想要 查看用户操作日志,以便 审计异常行为。

用户故事的 INVEST 原则

字母含义说明
IIndependent(独立的)故事之间尽量解耦
NNegotiable(可协商的)细节可讨论,非铁板钉钉
VValuable(有价值的)对用户或业务有明确价值
EEstimable(可估算的)团队能评估工作量
SSmall(小的)粒度适中,可在一次迭代完成
TTestable(可测试的)有明确的验收标准
📌 用户故事 作为 普通用户, 我想要 一键重置密码, 以便 在忘记密码时快速恢复访问。

2.3 UML用例图:系统功能的全局视图

用例图(Use Case Diagram)是UML中用于描述系统功能与参与者关系的图形化工具。它不涉及内部实现,只关注外部可见的功能。

核心元素

  • 参与者(Actor):与系统交互的人或外部系统,用火柴人表示。
  • 用例(Use Case):系统提供的完整功能,用椭圆表示。
  • 关系:关联(直线)、包含(<<include>>)、扩展(<<extend>>)、泛化(空心箭头)。
在线书店系统 普通用户 管理员 浏览图书 下单购买 管理图书 <<include>> 支付

用例图 vs 用户故事

维度用户故事用例图
形式文本卡片图形化模型
粒度较小,一个故事一个功能点较大,一个用例包含完整流程
适用阶段迭代计划、需求细化系统分析、范围界定
用户参与度高,用户可自行编写中,需要分析师引导
🔗 最佳实践: 先用用例图确定系统边界和主要功能模块,再针对每个用例编写若干用户故事来细化具体需求。两者互补,而非替代。

2.4 实战演练:从用户故事到用例图

假设我们要设计一个会议室预订系统。以下是收集到的部分用户故事:

  • 作为员工,我想要查看空闲会议室,以便快速预订。
  • 作为员工,我想要取消我的预订,以便释放资源。
  • 作为管理员,我想要设置会议室容量和设备,以便维护基础数据。

将这些故事抽象为用例图:

会议室预订系统 员工 管理员 查看空闲会议室 预订会议室 取消预订 管理会议室

验收标准示例(用户故事配套)

场景:员工成功预订会议室
  给定 员工已登录系统
  当 员工选择空闲时段并提交预订
  则 系统显示预订成功,并发送确认邮件

场景:预订冲突
  给定 该时段已被预订
  当 员工尝试预订同一时段
  则 系统提示“该时段已被占用”,并推荐其他空闲时段

本章小结

需求分析不是一次性活动,而是贯穿项目始终的持续对话。掌握用户故事和用例图,你就拥有了从用户视角和系统视角双向描述需求的能力。下一章我们将学习如何对需求进行结构化拆解,为技术设计打下坚实基础。