2、系统需求分析:什么是系统需求
各位工程师朋友,咱们今天聊聊系统需求分析。说实话,这是整个V模型开发的起点,也是决定项目成败的关键。我见过太多项目,因为需求没理清楚,后期改得人仰马翻。
系统需求,说白了就是「控制器要干什么」和「干到什么程度」。它分两大类:功能需求和非功能需求。咱们一个一个说。
2.1 功能需求与非功能需求
功能需求,就是控制器必须能做的具体事情。比如:
- 车窗控制器要能接收升降开关信号
- BMS要能采集电池电压和温度
- ESP要能在检测到车轮打滑时主动制动
这些都是「做什么」的问题。我习惯用一句话描述一个功能需求:「系统在什么条件下,对什么输入,产生什么输出」。这样写出来的需求,测试工程师一看就知道怎么测。
非功能需求,则是「做得怎么样」的问题。它不直接描述功能,但决定了功能的品质。常见的有:
| 类别 | 举例 | 典型指标 |
|---|---|---|
| 性能 | 响应时间、吞吐量 | CAN报文延迟 ≤ 10ms |
| 可靠性 | MTBF、故障率 | 系统寿命 ≥ 10年 |
| 安全性 | ASIL等级、功能安全 | ASIL B / ASIL D |
| 可维护性 | 诊断覆盖率、OTA升级 | UDS诊断支持 ≥ 95% |
| 环境适应性 | 温度、湿度、EMC | -40°C ~ 125°C |
我的经验: 非功能需求经常被忽略。我曾经接手一个项目,功能需求写得满满当当,但没提工作温度范围。结果夏天路试,控制器直接罢工。从那以后,我每次评审需求,第一件事就是检查非功能需求有没有遗漏。
2.2 需求来源分析
需求不会凭空冒出来。它们有三个主要来源:
客户需求
这是最直接的来源。主机厂(OEM)会给出系统需求规格书(SRS),里面明确说了控制器要做什么。比如:「当车速超过120km/h时,发出报警声」。这些需求通常写在合同里,是必须满足的。
法规需求
这个躲不掉。汽车行业有大量强制法规:
- GB/T 38698(电动汽车安全要求)
- ISO 26262(功能安全)
- UN R155(网络安全)
- ECE R10(电磁兼容)
我建议在项目启动阶段,就拉一份法规清单。别等到测试了才发现不满足法规,那代价就大了。
内部需求
这部分来自公司内部的经验积累。比如:
- 平台化要求(复用已有模块)
- 可制造性要求(PCB布局规范)
- 可测试性要求(预留诊断接口)
- 成本目标(BOM成本控制在XX元以内)
避坑指南: 内部需求最容易「被遗忘」。我曾经遇到一个项目,工程师觉得「这个不用写,大家都知道」。结果新来的同事接手,完全不知道有这些隐含要求,最后产品做出来没法量产。所以,内部需求也要白纸黑字写清楚。
2.3 需求层级结构
需求不是平铺直叙的,它有层级。我习惯用三层结构:
- 系统级需求: 描述整个控制器系统的行为。比如「BCM(车身控制模块)实现车门锁控制功能」。
- 子系统级需求: 拆解到子系统。比如「门锁驱动模块接收CAN信号,输出PWM控制电机」。
- 组件级需求: 具体到硬件或软件组件。比如「MCU的GPIO1输出高电平,驱动继电器闭合」。
为什么要分层?你想想看,如果所有需求都写在一个层级,那系统工程师和软件工程师看到的是一份文档,谁也看不懂。分层之后,各司其职:系统工程师关注系统级,软件工程师关注组件级。
下面这张图展示了需求的层级关系:
关键原则: 每个层级的需求都要可追溯。系统级需求要能分解到子系统级,子系统级要能分解到组件级。反过来,每个组件级需求都要能找到它的「上级」。这叫需求追溯性,ASPICE审核时必查。
2.4 需求管理工具简介
需求写好了,怎么管?靠Excel?我劝你别。项目一复杂,Excel根本hold不住。咱们看看主流的工具:
| 工具 | 特点 | 适用场景 | 我的评价 |
|---|---|---|---|
| DOORS | 老牌工具,功能强大,支持复杂追溯 | 大型OEM、Tier1 | 功能全,但界面老旧,学习曲线陡 |
| Polarion | 基于Web,集成ALM,支持敏捷 | 中型团队、ASPICE项目 | 我个人比较喜欢,协作方便 |
| Jama | 界面现代,易用性好,支持评审流程 | 初创公司、中小团队 | 上手快,但定制能力有限 |
我的建议: 工具只是手段,不是目的。我见过用DOORS用得一团糟的项目,也见过用Excel管得井井有条的团队。关键是流程要规范:需求要唯一编号、要版本控制、要变更管理。工具帮你自动化这些流程,但流程本身得先想清楚。
嗯,这里要注意一点:不管用哪个工具,需求属性一定要定义清楚。我常用的属性包括:
- 需求ID(唯一标识)
- 需求描述(一句话说清楚)
- 优先级(高/中/低)
- 来源(客户/法规/内部)
- 状态(草稿/评审中/已批准/已变更)
- 责任人
- 关联测试用例
把这些属性维护好,后期做需求追溯、变更影响分析,就轻松多了。