2. 危害分析与风险评估(HARA)
好,咱们进入第二章。HARA,全称是 Hazard Analysis and Risk Assessment。这名字听着挺唬人,说白了就是一件事:找出车子可能出什么危险,然后评估这个危险有多严重。
我个人习惯把HARA看作是功能安全的地基。地基没打好,后面ASIL等级、安全目标全是空中楼阁。我在项目里见过不少团队,急着写安全需求,HARA草草了事,结果后期评审时被安全审计师问得哑口无言。嗯,那场面挺尴尬的。
2.1 HARA的目的
HARA到底要干嘛?三个核心目的:
- 识别危害:找出系统故障后,可能对人造成伤害的场景
- 评估风险:判断这个危害发生的概率和严重程度
- 确定ASIL等级:给每个危害定一个安全等级(A、B、C、D)
你想想看,如果不做HARA,你怎么知道哪个功能需要最高安全等级?总不能所有功能都按ASIL D做吧?那成本谁也扛不住。
核心观点:HARA不是走流程,而是真正理解你的系统在真实世界中会怎么失效。
2.2 危害识别方法
危害识别,我常用的方法有几种。这里给大家列一下:
| 方法 | 适用场景 | 我的经验 |
|---|---|---|
| 头脑风暴 | 项目早期,团队讨论 | 别让领导先发言,否则大家都不敢说 |
| 检查表法 | 有历史数据时 | 我习惯把之前项目的危害清单拿出来对照 |
| FMEA | 详细设计阶段 | 适合分析具体组件,但HARA阶段用得太细反而浪费时间 |
| HAZOP | 复杂系统 | 引导词法,比如「压力过高」「温度过低」 |
我个人最常用的是头脑风暴+检查表的组合。先让大家放开想,再用检查表查漏补缺。我曾经在一个项目中,团队 brainstorm 了半天没发现某个危害,结果检查表里一条「电池过热」直接点醒了大家。
小技巧:危害识别时,多问「如果...会怎样?」。比如:如果刹车信号丢失会怎样?如果传感器输出卡在最大值会怎样?
2.3 运行场景分析
危害不是凭空产生的,它一定发生在某个场景里。运行场景分析,就是要把这些场景找出来。
场景分析要考虑哪些维度?我一般分三类:
- 驾驶场景:高速、城市、乡村、停车场、隧道...
- 环境条件:白天/黑夜、雨/雪/雾、路面湿滑/干燥
- 车辆状态:静止、低速、高速、转弯、倒车
举个例子。同样是「转向助力失效」这个危害:
- 在高速上发生 → 危险程度极高
- 在停车场低速挪车 → 基本没风险
你看,同一个危害,场景不同,风险天差地别。所以ISO 26262要求我们必须结合场景来评估。
注意:场景分析不要只考虑「正常情况」。我见过一个项目,只分析了晴天干燥路面,结果在雨雪天测试时出了大问题。极端场景一定要覆盖。
2.4 危害分类与严重度评估
找到危害和场景后,下一步就是定级。ISO 26262用三个参数来评估:
- S(Severity):严重度,伤害有多重
- E(Exposure):暴露概率,这个场景出现的频率
- C(Controllability):可控性,驾驶员能不能避开危险
三个参数组合,最终得出ASIL等级。具体怎么组合?看下表:
| S | E | C | ASIL |
|---|---|---|---|
| S1(轻伤) | E1(极低) | C1(可控) | QM |
| S2(重伤) | E2(低) | C2(一般) | ASIL A/B |
| S3(致命) | E3(中) | C3(难控) | ASIL C/D |
| S3(致命) | E4(高) | C3(难控) | ASIL D |
这里有个坑,我提醒一下大家。严重度S的评估,一定要基于真实伤害。不是你觉得「这个故障挺严重的」就给S3,而是要看:这个故障会不会导致人员死亡?
我曾经在一个项目中,团队给「空调失效」评了S2。我说等等,空调失效会导致人死亡吗?不会。那最多是S1,甚至QM。别把舒适性问题和安全性问题混为一谈。
总结一下:HARA做得好不好,直接决定了后续所有安全工作的质量。我建议每个项目至少做两轮HARA:第一轮快速扫描,第二轮详细分析。别想着一步到位,那是不可能的。
好了,第二章就到这里。下一章咱们聊聊怎么从HARA结果导出安全目标,那才是真正开始设计安全机制的时候。