2. 需求阶段风险识别:需求模糊与变更风险、需求文档评审方法、需求基线化管理

说实话,我见过太多嵌入式项目在后期翻车,根源都出在需求阶段。

硬件改一版,周期至少四周起步,打样费几千上万。软件改架构,牵一发动全身。你想想看,如果需求没理清楚就开干,后面调试时你会发现——这根本不是客户要的东西。

这一节,我们就聊聊需求阶段怎么管风险。

2.1 需求模糊:嵌入式项目的头号杀手

什么叫需求模糊?我举个例子。

客户说:“这个设备要能快速响应。” 什么叫“快速”?是 10ms 还是 100ms?是中断响应还是轮询响应?没有量化,就是模糊。

需求模糊的典型表现:
  • 使用“大概”、“尽量”、“可能”等不确定词汇
  • 缺少具体的性能指标(响应时间、功耗、精度)
  • 没有明确异常处理逻辑(断网怎么办?掉电怎么办?)
  • 接口协议只写“兼容XX协议”,但不写版本号

我在项目中遇到过最典型的一次:客户说“数据要实时上传”。我们按 1 秒间隔做了,结果验收时客户说“实时”是指 100ms。没办法,改硬件选型,换更高主频的 MCU,成本直接涨了 30%。

我的习惯:需求文档里,每个“非功能性需求”必须带数字。响应时间、采样率、存储深度、通信速率,一个都不能少。写不清楚的,当面问,问完签字确认。

2.2 需求变更:不是洪水猛兽,但要有流程

需求变更是常态,不变才不正常。但嵌入式项目最怕的是——变更没有流程。

硬件工程师按 V1.0 画板子,软件按 V1.1 写代码,测试按 V1.2 做用例。最后对不上,互相甩锅。

我曾经见过一个项目:客户口头说“加一个传感器”,项目经理觉得小事,直接让硬件改。结果软件接口不兼容,结构开孔位置不对,整机重做。损失十几万,周期延误两个月。

需求变更必须走正式流程。我建议至少包含这几步:

  1. 变更申请——谁提的?改什么?为什么改?
  2. 影响评估——改硬件?改软件?改测试?改文档?
  3. 成本与周期评估——多花多少钱?多花多少时间?
  4. 变更评审——项目经理、硬件、软件、测试一起签字。
  5. 变更实施与通知——更新基线,通知所有人。
变更类型 影响范围 审批层级 典型周期
功能新增 软件 + 测试 项目经理 1-3 天
接口修改 硬件 + 软件 + 测试 技术负责人 3-7 天
性能指标变更 硬件选型 + 软件架构 项目总监 1-2 周
核心方案变更 全项目组 + 供应链 高层决策 2 周以上

2.3 需求文档评审:别走过场

很多团队做需求评审,就是拉个会,读一遍文档,问“有没有问题?” 没人说话,就过了。这跟没评审一样。

我自己的评审方法,分三轮:

  • 第一轮:自审——写文档的人自己检查。有没有歧义?有没有遗漏?有没有前后矛盾?
  • 第二轮:互审——硬件审软件需求,软件审硬件需求。为什么?因为对方能发现你没想到的依赖关系。
  • 第三轮:专家评审——找有经验的人,专门挑刺。重点关注:边界条件、异常处理、资源约束。
评审清单(我每次必查):
  • 所有输入输出是否定义了电气特性(电压、电流、时序)?
  • 通信协议是否明确了帧格式、校验方式、超时处理?
  • 是否有明确的启动、运行、休眠、故障状态定义?
  • 是否有明确的错误码或故障码定义?
  • 是否有明确的测试验收标准?

说白了,评审不是找茬,是省钱。需求阶段发现一个问题,改一行字就行。等到调试阶段发现,改代码、改硬件、改测试,成本翻几十倍。

2.4 需求基线化管理:锁住版本

基线是什么?就是某个时间点,大家达成一致的需求版本。之后所有变更,都要基于这个基线来谈。

没有基线,就是各说各话。硬件说“我按 V2 做的”,软件说“我按 V3 做的”,测试说“我按 V1 测的”。乱成一锅粥。

我的做法:
  • 每个里程碑(需求冻结、设计冻结、测试冻结)建立基线
  • 基线文档必须带版本号、日期、审批人签名
  • 基线变更必须走变更流程,更新版本号
  • 所有项目成员只能基于最新基线工作

嗯,这里要注意:基线不是锁死需求不让改,而是让变更可控。每次变更都留下记录,将来出了问题,能追溯到是谁、在什么时候、为什么改的。

2.5 知识结构图:需求阶段风险管控全景

下面这张图,是我自己总结的需求阶段风险管控框架。你可以把它贴在工位上。

需求阶段风险管控框架 需求阶段风险管控框架 需求阶段 需求模糊风险 需求变更风险 需求基线管理 指标未量化 异常逻辑缺失 接口协议不明确 无变更流程 口头变更 影响未评估 版本号管理 变更追溯 基线冻结 核心原则:需求阶段每投入1小时,调试阶段节省10小时 需求模糊 → 变更失控 → 基线混乱 → 项目延期

2.6 避坑指南:我踩过的那些坑

最后,分享几个我亲身经历的教训:

我曾经犯过的错:
  • 客户说“跟XX产品一样就行”,我没让他写下来。结果验收时他说“这里不一样,那里也不一样”。—— 从那以后,任何“参考XX”都必须附上具体差异清单。
  • 需求文档里写了“支持OTA升级”,但没写升级失败怎么办。结果现场升级到一半断电,设备变砖。—— 从那以后,所有功能需求必须包含异常处理。
  • 项目经理口头答应客户加功能,没走变更流程。硬件已经投板了,软件已经写完了。最后硬塞进去,稳定性一塌糊涂。—— 从那以后,口头变更一律不认,必须邮件+签字。

嗯,这些坑,你大概率也会遇到。提前做好需求阶段的风险管控,后面调试会轻松很多。