第二章 需求分析:把用户的话翻译成系统能懂的语言

很多人觉得需求分析就是“用户说啥我做啥”。这么想就太天真了。

我做了十几年项目,见过太多“用户满意交付,三个月后推翻重来”的案例。为什么?因为用户描述的是他眼里的症状,我们要诊断的是背后的病因。

这一章,我们就聊聊怎么把模糊的需求变清晰。怎么说白了——就是学会问“为什么”。

2.1 挖掘业务需求:别只盯着用户表面说的话

我说个真实的事。一次电商项目,运营提了个需求:“订单列表加个批量导出功能”。

如果你直接开发,那就踩坑了。

多问一句“为什么”,发现真相是:运营每天要核对500+订单的发货状态,原系统不能按“待发货”筛选,她只能手动翻页。导出到Excel后自己过滤。

我建议的解法是什么?不是加导出,而是加“按状态筛选”。工作量少一半,还能实时查看。

这就是需求捕获的核心——穿透表面语言,找到业务痛点。

我的习惯:每次听完需求,追问三个“为什么”。第三个“为什么”基本能触达真实业务目标。这招帮我避开了至少40%的无用功能。

2.2 需求挖掘的四个层次

我经验里,业务需求通常藏在这四个层次里。你挖到哪一层,决定了系统能走多远。

层次 用户表述 真实需求 挖掘方法
第1层 “我要一个导出按钮” 快速获取数据 问“导出后怎么用?”
第2层 “导出字段要包含收货地址” 物流对账需要地址信息 问“地址参与什么流程?”
第3层 “每天导出两次” 分波次拣货,业务节奏如此 问“为什么是这个频率?”
第4层 “导出格式要和XX系统一致” 需要和外部系统做数据对接 问“对接的上下游是谁?”

别笑。我遇到过从第一层直接跳进开发,做完了用户说“不对”。为什么?因为第三层和第四层的逻辑他没说,我也没问。

我曾经掉过的坑:有次金融项目,对方说要“实时风控报表”。我直接上了流式计算。结果数据源每天凌晨4点才更新——所谓“实时”是对昨天数据的实时查询。白白浪费两周架构设计。记住:用户说的“实时”未必是真实时。

2.3 需求优先级排序:哪件事值得现在做?

资源永远有限,老板永远想要全部。排序不是技术活,是博弈活。

我个人惯用两套模型,组合起来效果不错。

模型一:价值-成本矩阵

把需求放进四个象限:

需求优先级矩阵 高价值 · 低成本 → 立即执行 高价值 · 高成本 → 规划分批 低价值 · 低成本 → 见缝插针 低价值 · 高成本 → 果断舍弃 成本↑ 价值 → 价值由业务影响面×频次决定,成本含开发/运维/培训

模型二:Kano模型(我简化版)

需求分三类:

  • 基本型需求(不满足就投诉):登录、数据不丢、响应别太慢。你不做,用户直接掀桌。
  • 期望型需求(做得好用户夸):搜索精确、操作流畅。用户会主动说出来。
  • 兴奋型需求(没有无所谓,有就惊喜):智能推荐、一键迁移。用户没想到,你做了就加分。

你看,优先级不能一刀切。核心业务功能(基本型)必须优先,哪怕成本高。而那些“锦上添花”、“老板面子工程”的兴奋型需求,我建议等到架构稳定后再做。

避坑指南(血的教训):我曾经接过一个项目,客户把“二维码分享”排第一,把“订单数据一致性校验”排最后。为什么?因为分享功能老板看得见。我只能说,两个月后上线第一天,数据对不上,全公司加班三天。你想想看,谁的优先级更该靠前?

2.4 非功能性需求的识别

业务需求往往看得见摸得着。非功能性需求却常常被忽略——直到系统崩了才想起来。

我总结出四大典型非功能性需求,建议你在需求文档里明确定义。

维度 常见问题 我建议的量化方式
性能 “系统有点慢” PV/并发量/TPS 三个数字说清楚
安全性 “数据要安全” 加密等级、审计日志范围、认证方式
可用性 “别老宕机” SLA 99.9%? 还是 99.99%?成本差很远
扩展性 “以后可能要加功能” 未来半年预计业务量增长比例

嗯,这里要注意。很多人直接把“高并发”当非功能性需求。但“高”是多少?500并发还是5万并发?技术方案选型完全不同。

我以前一个同事,客户说“用户量很大”,他直接上了微服务+分布式缓存。结果上线后日均PV才3000——单机MySQL跑得很欢。你说尴尬不尴尬?

所以我会在需求确认阶段就逼着业务方敲数字:

  • 日活预估多少?峰值并发多少?
  • 数据保留周期多长?总数据量多大?
  • 允许的最大响应时间是多少(秒/毫秒)?
  • 一年内有多少次线上变更窗口?

这些数字不落地,你做的架构就是盲人摸象。

我的小技巧:非功能性需求别自己憋着写。我一般在需求评审会后,拉上业务、QA、运维一起开半小时的“非功能性需求对齐会”。会上只聊三个数字:用户量、数据量、可用性要求。半小时足够,但能筛出大部分隐患。

2.5 需求分析的最终产出

说了这么多,落到纸面上应该有什么?我习惯至少包含三样东西:

  1. 需求列表(功能点 + 业务价值 + 优先级序号)
  2. 非功能性需求矩阵(量化指标,不接受模糊描述)
  3. 用例/用户故事(描述谁通过系统完成什么事,带来什么价值)

有了这三样,开发和测试都能明确边界。就算需求中途变了,你也有依据回溯——为什么当初定了A而不是B。

这一套流程下来,我敢说,项目后期至少减少50%的“这个功能我提过啊”的扯皮。

你记住:需求分析做得越细,后面改代码的次数就越少。这句话值多少钱?值你整个项目的加班时间。