4. 系统需求分析:客户需求解读、SRS编写与需求追溯

系统需求分析,说白了就是搞清楚客户到底要什么。很多工程师觉得这步就是“翻译”客户的话,其实没那么简单。我做了十几年ECU开发,见过太多因为需求没对齐,最后改板改到崩溃的项目。

你想想看,客户说“我要一个稳定的雨刮控制器”。什么叫稳定?是刮100万次不出错,还是下雨天不能突然停?这些细节,全得在需求分析阶段挖出来。

4.1 客户需求解读:别让“我以为”害了你

客户给的需求,通常有两种形式:一种是正式的RFQ(Request for Quotation),里面会有功能列表、性能指标;另一种就是口头沟通或者邮件里的零散信息。我个人习惯,拿到客户需求后先做三件事:

  1. 分类整理:把功能相关的归一类,性能相关的归一类,法规相关的单独列出来。
  2. 标记模糊点:凡是出现“尽可能”、“最好”、“必要时”这类词,全部标红。
  3. 确认边界:比如工作温度范围、供电电压波动、EMC等级,这些必须白纸黑字写清楚。
我曾经踩过一个坑:客户说“ECU要在-40℃到125℃工作”,我们按这个设计了。结果量产前客户才说,他们说的125℃是存储温度,工作温度其实只有105℃。白白多花了30%的器件成本。所以,温度等级、电压范围、寿命要求,一定要区分“工作”和“存储”。

4.2 系统需求规格书(SRS)编写

SRS是ECU开发的“宪法”。所有后续的设计、测试、验收,都得拿它说话。我见过很多团队SRS写得像流水账,结果开发到一半发现需求矛盾,只能返工。

一份好的SRS,应该包含以下核心内容:

章节 内容 我的建议
1. 范围 产品定义、应用场景、目标车型 写清楚“做什么”和“不做什么”
2. 总体描述 系统架构、硬件拓扑、接口定义 附上框图,一图胜千言
3. 功能需求 每个功能的行为、触发条件、响应时间 用“当…时,系统应…”的句式
4. 非功能需求 可靠性、EMC、热管理、诊断 量化指标,比如“MTBF≥10000小时”
5. 约束条件 成本、尺寸、重量、法规 这些往往是硬杠杠,不能妥协
6. 验收标准 测试方法、通过条件 写清楚“怎么证明做到了”
写SRS的小技巧:每条需求都要有唯一编号,比如“SRS-FUNC-001”。这样后面做追溯矩阵、写测试用例,直接引用编号就行,省得来回翻文档。

4.3 功能需求与非功能需求

很多新手分不清这两类。我举个例子:

  • 功能需求:踩刹车时,刹车灯必须在100ms内点亮。
  • 非功能需求:刹车灯控制器在85℃环境下,连续工作1000小时不失效。

功能需求描述的是“系统做什么”,非功能需求描述的是“系统做得怎么样”。两者缺一不可。

在车载ECU开发中,非功能需求往往比功能需求更烧钱。比如:

  • 可靠性:ISO 26262功能安全等级(ASIL A/B/C/D)
  • 环境适应性:温度、湿度、盐雾、振动
  • EMC:辐射发射、抗扰度(ISO 11452系列)
  • 诊断:UDS协议支持、故障码管理
记住:非功能需求是ECU的“隐形门槛”。功能做得再花哨,过不了EMC测试,照样不能量产。我见过一个项目,功能需求两周就写完了,非功能需求写了两个月——因为每个指标都要和客户、测试、认证机构来回确认。

4.4 需求追溯矩阵:别让需求“丢了”

需求追溯矩阵(RTM),说白了就是一张表,把客户需求、SRS条目、设计文档、测试用例、验证结果全部串起来。它的作用是:

  1. 正向追溯:从客户需求出发,能找到对应的设计和测试。
  2. 反向追溯:从测试用例出发,能找到它验证的是哪条需求。
  3. 变更影响分析:客户改了一条需求,能快速知道哪些设计、代码、测试要跟着改。

我习惯用Excel或者DOORS来维护RTM。格式大概这样:

需求ID 需求描述 来源 SRS编号 设计文档 测试用例 验证状态
REQ-001 上电后500ms内完成自检 客户RFQ SRS-FUNC-001 HW_ARCH_V2.3 TC-PWR-001 通过
REQ-002 CAN通信波特率500kbps 客户RFQ SRS-FUNC-002 HW_IF_SPEC TC-CAN-002 未验证
REQ-003 工作温度-40℃~105℃ 客户RFQ SRS-NFUNC-001 THERMAL_ANALYSIS TC-ENV-003 通过
注意:RTM不是一次性写完就完事了。项目过程中,需求会变、设计会改、测试会增补。RTM必须跟着更新。我见过最惨的案例:项目验收时发现有一条客户需求从头到尾没人管,因为RTM里根本没写进去。结果?重新走变更流程,项目延期两个月。

4.5 需求分析阶段的知识体系

下面这张图,是我自己总结的需求分析阶段核心逻辑。你可以把它当成一个检查清单:

系统需求分析知识体系 客户需求解读 RFQ / 口头 / 邮件 SRS编写 范围 / 描述 / 需求 需求分类 功能 / 非功能 功能需求 • 行为描述 • 触发条件 • 响应时间 非功能需求 • 可靠性 / 安全 • EMC / 环境 • 诊断 / 热管理 需求追溯矩阵 正向追溯 反向追溯 变更影响分析 输出:经过评审的SRS + 完整的RTM 作为后续硬件设计、软件开发的唯一输入

这张图把需求分析的四个核心环节串起来了。从客户需求出发,经过解读和分类,写成SRS,最后用RTM保证每条需求都有归宿。嗯,这里要注意:RTM不是做完就扔的,它要贯穿整个项目生命周期。

4.6 避坑指南:需求分析阶段的常见问题

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

  • 需求模糊:客户说“响应要快”,你得追问“快”是10ms还是100ms?不量化,后面全是扯皮。
  • 需求遗漏:只写了功能需求,忘了写诊断需求。结果样机做出来,连个故障码都读不出来。
  • 需求矛盾:一边要求“成本降低20%”,一边要求“所有器件必须用车规级”。这两个目标有时候是冲突的,得提前和客户沟通优先级。
  • RTM不更新:需求变了,RTM没改。最后测试发现测错了东西,白干两周。
我的经验:需求分析阶段多花一周,硬件设计阶段能省一个月。别急着画原理图、做Layout,先把需求搞清楚。你想想看,地基没打好,上面盖的房子能稳吗?