4. 危害与风险分析:从“可能出事”到“到底多严重”

好,咱们进入SOTIF最核心的一步——危害与风险分析。

前面几章我们聊了场景、聊了功能,但说到底,工程师最关心的是:这车到底会不会出事?出事了有多严重?

我个人习惯把这一步叫做“算账”。算清楚哪些情况可能伤人,伤人的概率多大,我们能不能接受。算明白了,后续的测试验证才有方向。

4.1 危害识别:先找到“敌人”在哪

危害识别,说白了就是问一个问题:系统在什么情况下,会对人造成伤害?

注意,这里说的“危害”不是故障。故障是系统坏了(比如传感器掉线),危害是系统没坏但行为不安全(比如该刹车没刹)。SOTIF主要管后者。

核心区别:

  • 功能安全(ISO 26262): 系统故障导致的危害(硬件随机失效、系统故障)
  • SOTIF(ISO 21448): 系统性能局限或可预见误用导致的危害(没故障,但就是不行)

我在项目里见过一个典型例子:某款车的AEB系统,在晴天测试一切正常。但到了雨天,摄像头被泥水遮挡,系统没报故障(硬件没坏),但就是识别不到前方静止车辆。结果追尾了。这就是SOTIF的危害——系统没坏,但能力不够。

危害识别通常从这几个角度入手:

  • 功能行为异常: 该加速时减速、该转向时不转
  • 功能性能不足: 识别距离不够、响应太慢、精度太低
  • 功能边界模糊: 系统在边缘场景下行为不确定(比如车道线模糊时,系统左右摇摆)
  • 人机交互误导: 系统给了驾驶员错误的信息或提示

4.2 风险评价方法:给危害“打分”

找到危害之后,不能眉毛胡子一把抓。得给每个危害排个优先级——哪些要立刻解决,哪些可以缓缓。

SOTIF里常用的评价方法,我个人觉得跟功能安全很像,但侧重点不同。核心看三个维度:

维度 含义 典型问题
严重度(Severity) 伤害的严重程度 会死人吗?还是只擦破皮?
可控性(Controllability) 驾驶员或周围人能否避免伤害 普通人能反应过来吗?还是根本来不及?
暴露率(Exposure) 触发事件发生的概率 这种情况一年遇到一次?还是每天遇到?

你想想看,一个危害如果严重度是“死亡级”,但可控性很高(驾驶员轻松避开),暴露率极低(百年一遇),那它的风险其实不高。反过来,一个危害虽然只是“轻伤”,但每天都会触发,驾驶员完全控制不了,那风险反而更大。

我的经验: 很多团队容易犯一个错——只盯着严重度。觉得“会死人”就是最高风险。但实际项目中,那些“中严重度、高暴露率、低可控性”的危害,往往才是事故的主要来源。比如城市道路中,AEB对“鬼探头”的误触发——虽然不会死人,但每天触发几次,驾驶员每次都吓一跳,早晚出事故。

4.3 触发事件(Triggering Events):危害的“导火索”

危害是结果,那原因是什么?SOTIF里叫触发事件。

触发事件就是那个“导火索”——它让系统从正常状态,变成了不安全状态。

我习惯把触发事件分成三类:

  1. 环境因素: 天气(雨、雪、雾)、光照(逆光、夜晚)、道路(施工、急弯)、交通参与者(行人突然冲出)
  2. 系统自身局限: 传感器感知范围有限、算法对特定场景识别率低、计算资源不足导致延迟
  3. 可预见的用户误用: 驾驶员过度依赖系统(比如玩手机)、错误操作(比如强行接管)、不按说明使用

举个例子:

  • 危害: 车辆在高速上未识别到静止的故障车,导致追尾
  • 触发事件: 傍晚逆光(环境因素)+ 摄像头动态范围不足(系统局限)+ 驾驶员正在看导航(用户误用)

你看,一个危害往往不是单一原因造成的,而是多个触发事件叠加的结果。这也是SOTIF分析最头疼的地方——组合爆炸。场景千千万,触发事件组合起来更是天文数字。

避坑指南: 我曾经在一个项目里,团队花了两个月列触发事件清单,列了上千条。结果发现大部分根本不会发生,或者发生了也没影响。后来我改了方法:先找危害,再反向推导触发事件。效率高很多。记住,触发事件是为危害服务的,别为了列而列。

4.4 严重度与可控性:两个最难评的维度

严重度和可控性,是风险评价里最主观、也最容易吵架的两个维度。

严重度怎么评?

SOTIF没有像功能安全那样给出明确的S1/S2/S3分级表。但实践中,大家基本沿用功能安全的思路:

  • S0: 无伤害
  • S1: 轻伤(比如擦伤、扭伤)
  • S2: 重伤(比如骨折、内出血)
  • S3: 致命伤

但要注意,SOTIF里严重度要考虑二次伤害。比如系统误刹车导致后车追尾,直接伤害是追尾的碰撞,但间接伤害可能是车辆翻滚、起火。我一般建议团队把“最坏情况”作为严重度基准。

可控性怎么评?

可控性更难。它问的是:普通人(不是专业车手)在那种情况下,能不能避免伤害?

我常用的判断标准:

  • C0: 完全可控(驾驶员有足够时间反应)
  • C1: 简单可控(需要一点反应,但大多数人都能做到)
  • C2: 一般可控(需要一定技巧,部分人做不到)
  • C3: 难以控制(几乎没人能避免)

嗯,这里要注意:可控性不是看“系统能不能控制”,而是看“人能不能控制”。很多团队搞混了,把系统自身的控制能力算进去,那就不对了。

4.5 知识结构图:危害与风险分析全景

下面这张图,是我自己总结的SOTIF危害与风险分析流程。每次做项目,我都会贴在白板上。

SOTIF 危害与风险分析流程 1. 危害识别 功能异常 / 性能不足 2. 触发事件分析 环境 / 系统 / 用户 3. 风险评价 严重度 / 可控性 / 暴露率 严重度 S0-S3 无伤 → 致命 可控性 C0-C3 完全可控 → 不可控 暴露率 E0-E4 极低 → 极高 风险等级 = f(严重度, 可控性, 暴露率) 高风险 → 必须降低;低风险 → 可接受 风险降低措施 功能改进 / 传感器升级 / 算法优化 / 用户手册警示 验证与确认(V&V) 场景测试 / 仿真 / 实车路试

这张图的核心逻辑是:先找危害,再找触发事件,然后评价风险,最后决定怎么降风险。 每一步都环环相扣。

4.6 小结:别让分析变成“纸上谈兵”

危害与风险分析,听起来很理论,但做起来全是实战。

我见过太多团队,花几个月写出一本厚厚的HARA报告,结果项目后期发现,实际路试中暴露的问题,报告里根本没提到。为什么?因为分析的时候太“理想化”了——只考虑了单一故障、单一场景,没考虑真实世界的复杂性。

所以我的建议是:分析要“粗”一点,验证要“细”一点。 先快速识别出最可能出事的几个危害,然后立刻去跑场景、做测试。发现问题再回来补分析。迭代着来,比一次性做完要靠谱得多。