4、危害分析与风险评估(HARA):HARA的目的、HARA的步骤、风险参数(严重度、暴露率、可控性)

4.1 我们为什么要做HARA?

说实话,HARA(Hazard Analysis and Risk Assessment)是整个功能安全流程的起点。没有它,后面的所有工作都是空中楼阁。

我见过不少团队,一上来就急着写代码、做测试。结果呢?做到一半发现某个故障场景根本没考虑到,只能推倒重来。嗯,这就是典型的「先开枪后瞄准」。

HARA的核心目的就三个:

  • 找出所有可能的危害——系统在什么情况下会出问题?
  • 评估风险等级——这个危害到底有多严重?
  • 确定安全目标——我们需要把风险降到什么程度?

说白了,HARA就是给整个项目画一张「风险地图」。有了这张地图,你才知道哪里是雷区,该怎么绕过去。

重要提醒:HARA不是一次性的工作。随着项目推进,你会发现新的风险点。我建议在每个里程碑节点都重新审视一下HARA结果。

4.2 HARA的五个步骤

HARA的流程,我习惯把它拆成五步走。每一步都有它的意义,少一步都不行。

步骤一:功能定义

先搞清楚你的系统是干什么的。比如一个刹车系统,它的功能是「根据踏板位置产生制动力」。听起来简单,但你要考虑所有工作模式:正常模式、失效模式、维护模式……

我记得有一次,一个团队做转向系统的HARA,漏掉了「低速泊车模式」。结果分析出来的风险等级完全不对。你想想看,高速和低速下的危害能一样吗?

步骤二:识别危害事件

这一步要回答一个问题:系统在什么情况下会失效?

常用的方法是HAZOP(Hazard and Operability Study)。用引导词去「拷问」每个功能:

  • 没有——功能完全不执行会怎样?
  • 过多——输出超出预期范围呢?
  • 过少——输出不足呢?
  • 相反——方向搞反了呢?
  • 错误时机——该动的时候不动,不该动的时候乱动?

举个例子,对于「自动紧急制动」功能:

  • 「没有」→ 该刹车时不刹车 → 追尾
  • 「过多」→ 刹车力度过大 → 后车追尾
  • 「错误时机」→ 无故急刹车 → 引发事故

步骤三:分析运行场景

同一个危害,在不同场景下风险完全不同。比如:

危害事件 场景A:高速公路上 场景B:停车场里
转向失效 严重度S3,暴露率E4 严重度S1,暴露率E3
刹车失灵 严重度S3,暴露率E3 严重度S2,暴露率E2

看到了吧?同一个故障,场景一变,风险等级天差地别。

步骤四:评估风险参数

这一步就是给每个危害事件打三个分:严重度(S)、暴露率(E)、可控性(C)。

我习惯先打S,再打E,最后打C。为什么?因为严重度最直观,先把这个定下来,后面两个参数就好办了。

步骤五:确定ASIL等级

根据S、E、C三个参数,查ISO 26262的表格,就能得到ASIL等级(A、B、C、D)或者QM(质量管理)。

我的小技巧:ASIL等级确定后,别急着往下走。先问问自己:「这个等级合理吗?」如果感觉不对劲,回头检查一下参数打分。我曾经把一个ASIL D的项目硬生生降到了ASIL B,就是因为发现暴露率打高了。

4.3 风险参数详解

严重度(Severity, S)

严重度衡量的是「如果危害发生了,对人员造成的伤害程度」。ISO 26262把它分成三个等级:

等级 描述 举例
S0 无伤害 信息娱乐系统卡顿
S1 轻伤(可恢复) 安全带预紧器误触发
S2 重伤(可能危及生命) 安全气囊未展开
S3 致命伤害 刹车完全失效

这里有个坑:很多人会把「系统损坏」和「人员伤害」搞混。记住,HARA只关心对人的伤害。系统坏了可以修,人伤了就晚了。

暴露率(Exposure, E)

暴露率衡量的是「人员在危害场景中出现的频率」。说白了,就是「这个倒霉事发生的概率有多大」。

等级 描述 典型场景
E1 极低(每年几次) 在结冰路面上行驶
E2 低(每月几次) 夜间在乡间小路行驶
E3 中(每周几次) 在城市拥堵路段行驶
E4 高(几乎每次驾驶) 在干燥柏油路上行驶

我曾经犯过一个错误:把「高速公路上爆胎」的暴露率打成了E2。后来一想不对,爆胎虽然不常见,但「在高速上行驶」这个场景本身是E4啊!暴露率评估的是场景,不是故障本身。

注意:暴露率评估的是「场景出现的频率」,不是「故障发生的概率」。这两个概念千万别搞混了。

可控性(Controllability, C)

可控性衡量的是「驾驶员或其他人员能否避免伤害」。这是三个参数里最主观的一个,也是最容易引起争议的。

等级 描述 举例
C1 容易控制 仪表盘背光熄灭(不影响驾驶)
C2 一般可控 转向助力突然消失(多数人能应对)
C3 难以控制 刹车踏板踩下去没反应(很难应对)

评估可控性时,我通常会问自己三个问题:

  1. 驾驶员有没有足够的时间反应?
  2. 驾驶员有没有足够的信息判断问题?
  3. 驾驶员有没有能力采取正确的行动?

如果三个答案都是「是」,那可控性就是C1。如果有一个「否」,就要往C2或C3靠了。

4.4 从参数到ASIL等级

有了S、E、C三个参数,查表就能得到ASIL等级:

严重度(S) 暴露率(E) 可控性(C) ASIL等级
S1 E1 C1 QM
S2 E2 C2 ASIL A
S3 E3 C2 ASIL B
S3 E4 C2 ASIL C
S3 E4 C3 ASIL D

注意,这只是简化版。实际查表时,ISO 26262第3部分有完整的矩阵。我建议你把那张表打印出来贴在工位上,随时参考。

4.5 实战中的避坑指南

做了这么多年HARA,我总结了几条血泪教训:

  • 别一个人闷头做——HARA需要团队协作。我建议至少拉上系统工程师、硬件工程师、软件工程师和测试工程师一起讨论。
  • 文档要写清楚——每个参数打分都要有理由。我曾经因为文档写得太简略,被审核老师追着问了一个下午。
  • 别怕修改——HARA不是一锤子买卖。随着设计深入,你可能会发现新的危害,或者原来的参数打错了。改就是了。
  • 关注「组合故障」——单个故障可能风险不高,但两个故障同时发生呢?比如「传感器失效」+「驾驶员分心」,这个组合风险就大了。

我的习惯:每次做完HARA,我都会把结果拿给一个没参与项目的人看。让他挑毛病。往往能发现一些「灯下黑」的问题。

好了,HARA这部分就讲到这里。下一章我们聊聊「安全目标」——有了HARA的结果,怎么把它转化成具体的技术要求。这是从「分析」到「实现」的关键一步,别错过。