3、危害分析与风险评估(HARA):HARA方法、运行场景定义、安全目标导出

好,咱们进入功能安全里最核心、也是最容易翻车的一步——HARA。

HARA 全称 Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:
“我的系统会不会出危险?在什么情况下出?出了以后后果多严重?”

我见过不少团队,上来就写安全目标,结果写到一半发现场景没定义清楚,又回头重做。嗯,HARA 这件事,顺序错了,后面全是补丁。

3.1 HARA 的核心方法

HARA 不是拍脑袋,它有一套标准流程。我个人习惯把它拆成四步走:

  1. 功能分析 —— 搞清楚系统到底有哪些功能。
  2. 危害识别 —— 每个功能失效了会怎样?
  3. 场景定义 —— 失效发生在什么环境、什么工况下?
  4. 风险评估 —— 用 ASIL 等级量化风险。

这里有个坑:很多人把“危害”和“失效”混为一谈。我纠正一下——失效是功能没了或错了,危害是失效导致的人身伤害。比如“刹车灯不亮”是失效,“后车追尾”才是危害。

关键原则:HARA 只关注与人身伤害相关的危害。财产损失、环境破坏,ISO 26262 不管。

3.2 运行场景定义 —— 最容易被忽视的一步

运行场景,就是你的 ECU 在什么情况下会出事。我刚开始做 HARA 时,觉得场景随便写几个就行。直到有一次评审,专家问我:“你这个‘车辆行驶中’到底是多少速度?路面是干是湿?周围有没有行人?”

问得我哑口无言。从那以后,我定了个规矩:每个危害至少写三个场景维度。

维度 示例 说明
车辆状态 静止、低速、高速、倒车 车速直接影响危害严重度
环境条件 白天/黑夜、雨/雪/雾、路面附着系数 环境决定可控性
人员/交通参与者 驾驶员、乘客、行人、其他车辆 暴露对象不同,风险不同

我的习惯:用“场景卡片”的方式,每个危害写 3~5 张卡片。比如“高速公路上,夜间下雨,前车急刹,本车 ACC 未响应”。卡片越具体,安全目标越精准。

3.3 安全目标导出 —— 从危害到约束

安全目标,就是一句话:“系统必须避免某某危害发生”。它不涉及具体实现,只描述“要什么结果”。

举个例子:

  • 危害:EPS 非预期转向导致车辆偏离车道,与相邻车道车辆碰撞。
  • 安全目标:EPS 系统应避免在非驾驶员意图下产生转向力矩,防止车辆非预期偏离车道。

这里要注意,安全目标要带ASIL 等级。怎么定?看三个参数:

  • S(Severity):伤害严重度,S0~S3
  • E(Exposure):场景暴露概率,E0~E4
  • C(Controllability):驾驶员可控性,C0~C3

ASIL 等级 = S × E × C 的组合查表结果。QM 表示无需安全措施,ASIL A/B/C/D 逐级严格。

我曾经踩过的坑:把 ASIL 定得太高。比如一个场景几乎不可能发生(E1),但团队硬给了 ASIL C,导致后续开发成本翻倍。记住:ASIL 不是越高越好,合适才是。

3.4 HARA 整体流程框架

下面这张图,是我每次做 HARA 时贴在墙上的流程。你照着走,基本不会漏。

HARA 流程框架图 HARA 流程框架 1. 功能分析 2. 危害识别 3. 运行场景定义 4. 风险评估 (S/E/C) 5. 安全目标导出 关键输入 • 系统功能清单 • 失效模式 • 运行场景库 • S/E/C 查表 关键输出 • 安全目标列表 • 每个目标带 ASIL • 关联的危害与场景 迭代/评审

3.5 实战避坑指南

最后,分享几个我这些年总结的教训:

  • 场景别太笼统。“车辆行驶中”这种描述,评审时会被打回来。要具体到“城市道路,时速30km/h,跟车距离5米”。
  • 安全目标别写解决方案。比如“增加冗余传感器”是方案,不是目标。目标应该是“系统应避免非预期加速”。
  • ASIL 分解要谨慎。一个 ASIL D 的安全目标,可以分解成 ASIL C + ASIL A 的独立要素。但分解后要证明独立性,否则白做。

一个小技巧:HARA 文档写完后,找两个没参与项目的人来评审。他们往往能发现你“想当然”的场景漏洞。我吃过这个亏,后来每次 HARA 都强制做“盲审”。

好了,HARA 这部分就聊到这儿。记住:HARA 的质量,决定了整个功能安全开发的根基。根基不稳,后面全是空中楼阁。