2. 协同开发的价值:为什么需要协同?功能安全与SOTIF在自动驾驶系统中的互补关系
说实话,我见过太多团队把功能安全和SOTIF当成两件事来做。安全团队搞功能安全,系统团队搞SOTIF,两边各干各的。结果呢?项目后期发现一堆冲突,改来改去,成本翻倍。
今天我就跟你聊聊,为什么这两者必须协同。说白了,它们就像人的左右手,缺一个都不行。
2.1 功能安全与SOTIF的本质差异
先搞清楚它们各自管什么。
| 维度 | 功能安全 (ISO 26262) | SOTIF (ISO 21448) |
|---|---|---|
| 关注对象 | 系统故障(硬件/软件) | 功能不足、场景局限 |
| 触发原因 | 元器件失效、软件bug | 传感器感知局限、算法边界 |
| 典型场景 | 刹车踏板断裂、内存溢出 | 强光下摄像头失效、暴雨中雷达误判 |
| 应对策略 | 冗余、诊断、安全机制 | 场景覆盖、ODD限制、性能提升 |
你看,一个管「坏了怎么办」,一个管「本来就不够好怎么办」。我做过一个项目,功能安全把ASIL D的冗余架构都设计好了,结果上路测试发现——摄像头在隧道出口被强光晃瞎了。这不是故障,是功能不足。SOTIF就是来解决这类问题的。
2.2 为什么必须协同?三个核心原因
2.2.1 风险是交织的,不是孤立的
你想想看,一个传感器故障(功能安全)和一个传感器感知局限(SOTIF),在系统层面会叠加。我记得有个案例:毫米波雷达在暴雨中性能下降(SOTIF问题),同时软件刚好有个内存泄漏的bug(功能安全问题)。两个问题单独看都不致命,但叠加在一起,系统直接宕机了。
嗯,这就是我常说的「风险耦合」。你分开分析,永远看不到全貌。
2.2.2 安全机制可能引入新风险
这一点很多人会忽略。功能安全要求加冗余,比如双摄像头。但冗余本身会带来新的SOTIF问题——两个摄像头如果标定不一致,融合算法反而会出错。
关键认知:功能安全的安全机制,可能成为SOTIF的风险源。反之亦然。
我曾经在一个项目中,为了满足ASIL B要求,给感知模块加了一个看门狗定时器。结果看门狗复位时机不对,导致车辆在高速上突然降级。你说这是功能安全问题还是SOTIF问题?其实都是。
2.2.3 开发效率的硬道理
说白了,分开搞就是浪费钱。你想想看:
- 功能安全要定义安全目标,SOTIF要定义功能不足场景。这两个其实是同一件事的两面。
- 功能安全要做FMEA,SOTIF要做HARA。很多输入是共享的。
- 功能安全要验证安全机制,SOTIF要验证场景覆盖。测试用例可以复用。
我建议你从一开始就把两个流程合并。别问我怎么知道的——我见过一个项目,功能安全团队做了三版FMEA,SOTIF团队又做了两版HARA,最后发现80%的输入是重复的。浪费了三个月。
2.3 协同开发的核心模型:互补关系
怎么理解这个互补关系?我画个简单的图给你看:
┌─────────────────────────────────────────────┐
│ 自动驾驶系统安全 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 功能安全 │ │ SOTIF │ │
│ │ (系统故障) │ │ (功能不足) │ │
│ │ │ │ │ │
│ │ • 硬件冗余 │ │ • 场景覆盖 │ │
│ │ • 软件诊断 │ │ • ODD定义 │ │
│ │ • 安全机制 │ │ • 性能边界 │ │
│ │ • 故障响应 │ │ • 人机交互 │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ └─────────┬───────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ 协同接口 │ │
│ │ • 安全目标 │ │
│ │ • 场景库 │ │
│ │ • 验证策略 │ │
│ │ • 度量指标 │ │
│ └─────────────┘ │
└─────────────────────────────────────────────┘
你看,它们不是上下级关系,也不是并列关系。它们是互补的——一个管「内部故障」,一个管「外部局限」。只有两者都覆盖了,系统才是真正安全的。
2.4 实战中的协同切入点
说了这么多理论,来点实际的。我在项目中总结出三个最有效的协同切入点:
2.4.1 安全目标与ODD的协同
功能安全定义安全目标时,一定要参考SOTIF的ODD定义。举个例子:
- 功能安全说:「车速超过120km/h时,制动系统必须能在3秒内响应」
- SOTIF说:「我们的ODD只覆盖到100km/h」
你看,这不就冲突了吗?协同的做法是:先确定ODD,再基于ODD定义安全目标。或者反过来,安全目标决定了ODD的边界。
我的习惯:每次定义安全目标前,先拉上SOTIF团队过一遍ODD。花半天时间,省后面三个月返工。
2.4.2 场景库的共享
这个最直接。功能安全需要故障场景,SOTIF需要功能不足场景。但很多场景是共用的:
- 传感器被遮挡 → 既是故障(硬件失效)也是功能不足(感知局限)
- 通信延迟 → 既是故障(网络问题)也是功能不足(性能边界)
- 算法误判 → 既是故障(软件bug)也是功能不足(算法局限)
我建议你建立一个统一的场景库,打上标签:「功能安全相关」「SOTIF相关」「两者相关」。这样测试用例可以复用,分析工作也能合并。
2.4.3 验证策略的整合
功能安全验证的是「故障注入后系统是否安全」,SOTIF验证的是「在未知场景下系统是否安全」。这两个验证活动可以共用测试平台和测试数据。
我记得有个项目,功能安全团队做了1000个故障注入测试,SOTIF团队又做了2000个场景测试。后来我们发现,有300个测试用例是重复的。如果一开始就整合,至少省两周时间。
2.5 避坑指南
我曾经踩过的坑:
- 坑1:功能安全和SOTIF分开做文档。结果两个文档互相矛盾,评审时被客户怼得哑口无言。
- 坑2:功能安全团队做完安全机制,SOTIF团队才介入。结果安全机制引入了新的SOTIF风险,又要改架构。
- 坑3:两个团队用不同的工具链。功能安全用Medini,SOTIF用Simulink,数据对不上,沟通成本翻倍。
我的建议:从项目第一天就把两个团队拉在一起,共用工具、共用场景库、共用评审流程。别等到后期再整合,那时候成本已经失控了。
2.6 小结
功能安全和SOTIF不是二选一,也不是谁替代谁。它们是自动驾驶安全的两条腿,缺一条都站不稳。
你想想看,如果只做功能安全,系统在正常工况下很安全,但遇到极端场景就抓瞎。如果只做SOTIF,系统能应对各种场景,但一个硬件故障就全盘崩溃。只有两者协同,才能真正做到「故障时安全,正常时可靠」。
下一章我会具体讲怎么搭建协同开发流程。嗯,那才是真正的硬核内容。