2. 危害分析与风险评估(HARA)基础

各位工程师朋友,咱们今天聊聊HARA。说实话,我刚入行那会儿,觉得HARA就是个走形式的文档工作。直到有一次,我负责的一个EPS项目在测试阶段发现了转向助力异常中断——嗯,从那以后,我再也不敢小看HARA了。

2.1 HARA到底是什么?

HARA,全称Hazard Analysis and Risk Assessment,中文叫危害分析与风险评估。说白了,就是回答三个问题:

  • 系统会不会出问题?——识别危害事件
  • 出问题后果多严重?——评估风险等级
  • 需要多严格地保护?——确定ASIL等级

我个人习惯把HARA比作“安全体检”。就像人需要定期体检来发现潜在健康风险,汽车电子系统也需要HARA来找出功能安全方面的“病灶”。

核心定义:HARA是ISO 26262第3部分(概念阶段)的核心活动,用于识别系统的危害事件,并评估其风险等级,从而为后续安全目标的制定提供依据。

2.2 HARA在功能安全中的位置

HARA不是孤立存在的。它在整个功能安全开发流程中扮演着“承上启下”的角色。我画了张图,你看完就明白了。

HARA在功能安全开发流程中的位置 项目定义 Item Definition 危害分析与风险评估 HARA 安全目标 Safety Goals 功能安全概念 Functional Safety Concept HARA的关键作用 1. 输入:项目定义(系统边界、功能列表) 2. 核心活动:识别危害、评估风险 3. 输出:安全目标 + ASIL等级 4. 下游:功能安全概念、技术安全概念 5. 影响:系统架构设计、测试策略 6. 验证:安全案例、确认评审 7. 迭代:设计变更后需重新评估 8. 文档:HARA报告是安全档案核心 9. 责任:功能安全经理主导 10. 时机:概念阶段早期完成

从这张图你能看到,HARA处于项目定义和安全目标之间。它把“系统要做什么”翻译成“系统不能出什么错”。我记得有个项目,项目经理催着要跳过HARA直接写安全目标,被我拦住了。为什么?因为没有HARA,你根本不知道哪些风险需要重点防护。

2.3 HARA的输入

做HARA之前,你得准备好几样东西。我列个表,你对照着检查一下。

输入项 内容说明 来源
项目定义 系统边界、功能列表、运行模式、环境条件 系统需求文档
功能架构 系统功能分解、信号流、接口定义 系统架构设计
运行场景 驾驶场景、道路类型、天气条件、交通状况 使用场景分析
法规要求 ISO 26262、GB/T 34590、客户安全需求 法规库、客户输入
历史数据 同类系统故障记录、召回数据、事故报告 质量部门、售后数据

我的经验:项目定义阶段最容易犯的错是“边界划得太窄”。我曾经遇到一个项目,只考虑了正常驾驶场景,忽略了维修模式下的危害——结果在HARA评审时被安全审计员打回来重做。所以,输入阶段多花点时间,后面能省很多麻烦。

2.4 HARA的输出

HARA做完后,你会得到一套完整的输出物。这些是后续所有安全活动的“宪法”。

  1. 危害事件清单——系统可能出现的所有危害情况
  2. 风险等级评估——每个危害事件的S、E、C参数
  3. ASIL等级——从QM到ASIL D的等级分配
  4. 安全目标——每个危害事件对应的安全要求
  5. HARA报告——完整的分析文档

这里我特别想强调一下安全目标。安全目标不是随便写的,它必须满足几个条件:

  • 可验证——能不能通过测试或分析来确认?
  • 可追溯——能不能追溯到具体的危害事件?
  • 无歧义——不同工程师读完后理解一致

避坑指南:我曾经见过一个安全目标写成“系统应足够安全”。这种表述在HARA评审时直接被否决。安全目标必须具体,比如“当车速超过30km/h时,制动助力失效的概率应低于10^-8每小时”。

2.5 HARA的常见误区

做了这么多年HARA,我总结了几条新手容易踩的坑:

误区 错误表现 正确做法
范围过窄 只考虑正常驾驶,忽略故障模式 覆盖所有运行模式和故障场景
ASIL分配过高 所有危害都定ASIL D 基于实际风险合理分配
忽略组合危害 只分析单一故障 考虑多个故障同时发生的情况
文档不完整 缺少分析过程记录 保留所有分析依据和决策理由

嗯,说到ASIL分配过高,我想起一个真实案例。有个团队做线控制动系统,把所有危害都定成了ASIL D。结果开发成本翻了三倍,周期拉长半年。后来重新做HARA,发现大部分场景其实ASIL B就够了。所以,HARA不是越严格越好,而是要“恰到好处”。

2.6 小结

HARA是功能安全的基石。它把模糊的安全需求变成具体的、可量化的目标。你想想看,如果没有HARA,你怎么知道系统需要多高的安全等级?怎么证明你的设计是充分的?

我个人建议,每次做HARA时,都问自己三个问题:

  • 我有没有漏掉某个危害场景?
  • 我的风险等级评估是否合理?
  • 安全目标能不能被验证?