3、危害分析与风险评估(HARA):HARA的目的与流程
说到功能安全,HARA 绝对是绕不开的核心环节。我个人习惯把它比作「安全工作的地基」——地基没打好,后面盖多高的楼都悬。
HARA 的全称是 Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:
- 系统可能会出什么危险?
- 这些危险在什么场景下发生?
- 风险有多大,该定多高的安全等级?
嗯,咱们一个一个来看。
3.1 HARA 的目的
HARA 的目的其实很单纯:识别出所有合理的危害事件,并给每个事件分配一个 ASIL 等级。这个 ASIL 等级会直接决定后续开发中你要做多少安全工作。
我在项目中遇到过一件事:有个同事觉得某个危害「不太可能发生」,就草草给了个 QM(无安全要求)。结果客户评审时直接打回,说「你凭什么说它不可能?」——你看,HARA 不是拍脑袋,每一步都要有依据。
核心目的总结:
- 识别系统层面的危害
- 分析危害发生的场景
- 评估风险等级(S、E、C)
- 确定 ASIL 等级
- 输出安全目标
3.2 HARA 的流程
HARA 的流程,我一般分四步走。你想想看,其实跟医生看病有点像:先问诊(识别危害),再分析病因(情景分析),然后判断严重程度(风险评估),最后开处方(定 ASIL)。
第一步:危害识别
这一步的目标是找出系统所有可能的危害。常用的方法有:
- 头脑风暴:拉上系统、软件、硬件、测试的人一起聊
- 检查表法:基于过往项目的经验清单
- HAZOP 分析:用引导词(如「无」、「多」、「少」、「反向」)来系统性地找偏差
举个例子,一个电子转向系统,可能的危害包括:
- 非预期的转向助力丢失
- 转向角度输出错误
- 转向卡滞
我曾经在一个项目中,大家 brainstorm 了半天只找出 5 个危害。后来用了 HAZOP 引导词,一下子翻倍到 12 个。嗯,工具还是得用对。
第二步:情景分析
危害本身不可怕,可怕的是危害发生在特定场景下。比如「刹车失灵」在空旷路段和高速公路上,风险完全不一样。
情景分析要回答:
- 这个危害在什么驾驶场景下发生?
- 驾驶员有没有可能干预?
- 周围环境(天气、路况)如何?
我建议每个危害至少分析 2-3 个典型场景。别贪多,但也不能漏掉关键场景。
第三步:风险等级评估(S、E、C 参数)
这是 HARA 最核心的定量部分。ISO 26262 定义了三个参数:
| 参数 | 全称 | 含义 | 等级 |
|---|---|---|---|
| S | Severity | 危害的严重度 | S0~S3 |
| E | Exposure | 场景的暴露概率 | E0~E4 |
| C | Controllability | 驾驶员的可控性 | C0~C3 |
S(Severity)严重度:
- S0:无伤害
- S1:轻伤(可自行处理)
- S2:重伤(需住院,但无生命危险)
- S3:致命或危及生命
E(Exposure)暴露概率:
- E0:几乎不可能
- E1:很少发生(每年几次)
- E2:偶尔发生(每月几次)
- E3:经常发生(每周几次)
- E4:几乎每次驾驶都会遇到
C(Controllability)可控性:
- C0:完全可控
- C1:简单可控(大多数驾驶员能应对)
- C2:一般可控(部分驾驶员可能无法应对)
- C3:难以控制(几乎无法避免伤害)
我的小技巧: 评估 E 值时,别光凭感觉。我习惯先列一个「典型驾驶场景清单」,比如城市拥堵、高速巡航、夜间行驶、雨天湿滑等,然后看每个场景的占比。这样评估出来的 E 值更有说服力。
第四步:ASIL 等级的确定
有了 S、E、C 三个值,就可以查表确定 ASIL 等级了。ISO 26262 给出了一个矩阵:
| S | E | C1 | C2 | C3 |
|---|---|---|---|---|
| S1 | E1 | QM | QM | QM |
| S1 | E2 | QM | QM | ASIL A |
| S1 | E3 | QM | ASIL A | ASIL B |
| S1 | E4 | ASIL A | ASIL B | ASIL B |
| S2 | E1 | QM | QM | ASIL A |
| S2 | E2 | QM | ASIL A | ASIL B |
| S2 | E3 | ASIL A | ASIL B | ASIL C |
| S2 | E4 | ASIL B | ASIL C | ASIL C |
| S3 | E1 | ASIL A | ASIL B | ASIL B |
| S3 | E2 | ASIL B | ASIL C | ASIL D |
| S3 | E3 | ASIL B | ASIL C | ASIL D |
| S3 | E4 | ASIL C | ASIL D | ASIL D |
举个例子:
- 如果 S=3(致命)、E=3(经常发生)、C=2(一般可控),查表得 ASIL D
- 如果 S=1(轻伤)、E=2(偶尔)、C=1(简单可控),查表得 QM
注意: 我曾经见过有人把 S、E、C 三个值加起来取平均来定 ASIL——这是错的!ASIL 必须严格查表,不能自己发明公式。另外,ASIL D 是最高的安全等级,要求最严格,成本也最高。所以别动不动就给 ASIL D,要实事求是。
3.3 避坑指南
做 HARA 这么多年,我踩过不少坑。分享几个给你:
- 别漏掉「合理可预见的误用」:比如驾驶员误操作、儿童乱按按钮。这些不是故障,但也是危害场景。
- 别把「功能失效」和「危害」混为一谈:功能失效是原因,危害是结果。比如「传感器失效」不是危害,「非预期加速」才是。
- 别一个人闷头做:HARA 一定要多角色评审。我建议至少拉上系统工程师、测试工程师、安全工程师三个人一起过一遍。
嗯,HARA 的内容差不多就这些。记住一句话:HARA 不是一次性的工作,而是迭代的。随着设计深入,你可能会发现新的危害,或者原来的评估需要调整。保持更新,别让 HARA 变成一纸空文。