4、需求管理:需求追溯矩阵、需求变更流程、需求版本冻结
说到安全气囊系统的需求管理,我脑子里立刻浮现出几年前的一个项目。那时候我们团队刚接手一个平台化项目,需求文档乱得像一锅粥。嗯,后来花了整整两周才把需求理清楚。今天我就把这块的经验掰开了揉碎了讲给你听。
4.1 需求追溯矩阵——别让需求「失联」
需求追溯矩阵,说白了就是一张「需求地图」。它告诉你每个需求从哪来,到哪去。我个人习惯叫它 RTM(Requirements Traceability Matrix)。
为什么要做这个?你想想看,安全气囊系统涉及的功能安全等级是 ASIL-D,最高等级。一个需求如果「失联」了,后果可能是致命的。
RTM 的核心作用:
- 正向追溯:从客户需求 → 系统需求 → 软件需求 → 测试用例
- 反向追溯:从测试用例 → 软件需求 → 系统需求 → 客户需求
- 覆盖度分析:确保每个需求都有对应的实现和验证
我在项目中遇到过一件事:一个关于「点火回路诊断时间」的需求,在系统需求文档里写的是「≤5ms」,但到了软件需求文档里变成了「≤10ms」。如果没有 RTM,这种差异可能直到系统集成测试才发现。你想想看,那得多被动?
RTM 的格式其实很简单,我一般用表格来管理:
| 需求ID | 需求描述 | 来源 | 软件需求ID | 测试用例ID | 状态 |
|---|---|---|---|---|---|
| REQ-001 | 点火回路诊断时间 ≤5ms | 客户需求 V1.2 | SW-REQ-015 | TC-023 | 已实现 |
| REQ-002 | 碰撞检测阈值 20g±2g | 系统需求 V2.0 | SW-REQ-032 | TC-047 | 已验证 |
| REQ-003 | 故障自检周期 100ms | 功能安全需求 | SW-REQ-078 | TC-112 | 待评审 |
我的小技巧:RTM 最好用工具来维护,比如 DOORS 或者 Polarion。别用 Excel,版本一多就乱。我曾经吃过这个亏,后来再也不敢了。
4.2 需求变更流程——别让变更「失控」
需求变更是家常便饭。但安全气囊系统的变更,必须走严格的流程。为什么?因为一个看似微小的变更,可能影响整个系统的功能安全。
我记得有一次,客户提出要修改碰撞检测的阈值。看起来只是改一个参数,对吧?但实际上,这个变更涉及了传感器选型、算法逻辑、标定参数、测试用例……整整影响了 12 个模块。
我建议的变更流程是这样的:
- 变更申请:提交变更请求,说明变更原因和预期影响
- 影响分析:评估变更对功能安全、性能、成本、进度的影响
- 变更评审:由 CCB(变更控制委员会)评审,决定是否批准
- 变更实施:在受控环境下修改需求、设计、代码、测试
- 变更验证:执行回归测试,确保变更没有引入新问题
- 变更关闭:更新所有相关文档,关闭变更请求
警告:千万不要跳过影响分析这一步!我曾经见过一个团队,因为赶进度直接改了代码,结果导致安全气囊在低速碰撞时误触发。嗯,那次的教训很深刻。
变更流程中,我最看重的是「影响分析」这个环节。它需要回答几个问题:
- 这个变更会影响哪些模块?
- 会影响功能安全等级吗?
- 需要重新做哪些测试?
- 会影响已经冻结的版本吗?
说白了,影响分析做得好,变更就成功了一半。
4.3 需求版本冻结——别让需求「漂移」
需求版本冻结,是项目开发中的一个里程碑。它意味着需求不再变动,开发团队可以安心地基于这个版本进行设计和编码。
但冻结不是随便说说的。我一般会分几个阶段来冻结:
| 冻结阶段 | 时间点 | 冻结范围 | 允许的变更 |
|---|---|---|---|
| 初步冻结 | 系统需求评审后 | 系统需求 | 仅限缺陷修复 |
| 基线冻结 | 软件需求评审后 | 系统需求 + 软件需求 | 需 CCB 批准 |
| 发布冻结 | 集成测试前 | 所有需求 | 原则上不允许变更 |
你可能会问:为什么不能一次性冻结?原因很简单——需求是逐步细化的。系统需求冻结了,软件需求可能还在迭代。分阶段冻结,既保证了稳定性,又保留了灵活性。
我的经验:冻结后的需求,一定要打上版本标签。比如「SRS_V2.1_Frozen_20240115」。这样每个人都知道当前用的是哪个版本。我曾经遇到过团队拿着不同版本的需求在开发,那叫一个乱。
冻结之后,如果还有变更怎么办?嗯,那就走变更流程。但这时候的变更门槛会很高,需要 CCB 批准,而且必须评估对已冻结版本的影响。
我记得有一个项目,在发布冻结后客户突然要求增加一个诊断功能。我们评估后发现,这个变更会影响 5 个模块的代码,还需要重新做一轮功能安全测试。最后 CCB 决定把这个功能放到下一个版本。虽然客户不太高兴,但保证了当前版本的质量。
说白了,需求版本冻结不是不让变更,而是让变更变得「可控」。你想想看,如果需求一直在漂移,开发团队就像在流沙上盖房子,永远盖不起来。
总结一下我的核心观点:
- RTM 是需求的「地图」,别让需求失联
- 变更流程是需求的「护栏」,别让变更失控
- 版本冻结是需求的「锚点」,别让需求漂移
嗯,今天就先聊到这里。下一章我会讲需求评审和确认,到时候再分享一些我在评审会上踩过的坑。