第4章:安全目标与安全要求

各位工程师朋友,今天我们来聊聊功能安全里最核心的一环——安全目标与安全要求。说实话,我见过太多项目在这块栽跟头。有的团队把安全目标写得像散文,有的把安全要求堆成了天书。嗯,咱们今天就把这事掰扯清楚。

4.1 安全目标的定义与导出

安全目标是什么?说白了,就是「系统最不能出事的那几件事」。比如一个刹车系统,安全目标就是「不能意外刹车」和「必须能刹住车」。就这么简单。

但导出安全目标的过程,可没那么简单。我个人习惯用HARA(危害分析与风险评估)来导出。具体怎么做?

  1. 识别危害:列出所有可能的危险事件
  2. 评估风险:看每个危害的严重度、暴露率、可控性
  3. 确定ASIL等级:根据风险等级定安全完整性等级
  4. 定义安全目标:每个危害对应一个安全目标

关键点:安全目标必须是可验证的。我见过有人写「系统要足够安全」——这算什么目标?没法测啊!正确的写法是「当车速超过30km/h时,刹车响应时间不超过200ms」。

我在项目中遇到过一件事。有个团队做ADAS系统,安全目标写了「避免碰撞」。听起来没毛病吧?但后来发现,这个目标太模糊了。是避免所有碰撞?还是特定场景下的碰撞?最后我们拆成了三个具体目标:「前向碰撞避免」「侧向碰撞避免」「后向碰撞避免」。每个目标都带上了具体的场景和阈值。

4.2 安全要求层级

安全目标定好了,接下来就是层层分解。我习惯把安全要求分成三层,就像盖房子:

我的经验:这三层的关系,你可以想象成「做什么→怎么做→用什么做」。很多团队跳过中间层,直接从目标跳到技术实现,结果后面追溯起来一团乱麻。

4.2.1 安全目标(SG)

顶层,描述「系统要避免什么」。比如:

  • SG-1:避免非预期的加速
  • SG-2:避免转向系统失效

4.2.2 功能安全要求(FSR)

中间层,描述「系统要具备什么功能来达成安全目标」。比如针对SG-1:

  • FSR-1.1:当检测到油门踏板信号异常时,系统应在100ms内进入跛行模式
  • FSR-1.2:跛行模式下,加速度限制在0.1g以内

4.2.3 技术安全要求(TSR)

底层,描述「具体用什么技术手段实现」。比如针对FSR-1.1:

  • TSR-1.1.1:使用双通道冗余架构采集油门踏板信号
  • TSR-1.1.2:主从通道偏差超过5%时触发故障响应

你想想看,如果没有FSR这一层,直接从安全目标跳到TSR,会怎样?我见过一个项目,安全目标是「避免电池过充」,技术安全要求直接写了「使用BMS芯片」。结果换芯片方案时,整个追溯链全断了。为什么?因为中间缺了功能安全要求这一层,你不知道当初为什么选这个芯片。

4.3 安全要求的分配与追溯

这部分我特别想多说两句。很多工程师觉得分配和追溯就是画几条线,其实不然。

分配:把安全要求分给具体的系统元素。比如TSR-1.1.1分配给「传感器模块」,TSR-1.1.2分配给「控制模块」。分配时要考虑:

  • 这个元素有能力实现吗?
  • ASIL等级匹配吗?
  • 有没有冲突?

追溯:建立双向的链接。从安全目标能查到TSR,从TSR也能查到安全目标。我曾经吃过这个亏——项目做到一半,客户问「这个TSR对应哪个安全目标?」我翻了三天文档才找到。后来我学乖了,用表格管理:

安全目标 功能安全要求 技术安全要求 分配模块 验证方法
SG-1 FSR-1.1 TSR-1.1.1 传感器模块 故障注入测试
SG-1 FSR-1.1 TSR-1.1.2 控制模块 时序分析
SG-2 FSR-2.1 TSR-2.1.1 执行器模块 耐久测试

避坑指南:我曾经见过一个团队,追溯表做得漂漂亮亮,但全是手工维护。后来需求一变更,表格就乱了。我建议用工具管理,至少也要用Excel的条件格式和公式做自动校验。

说到追溯,还有个容易忽略的点——双向追溯。什么意思?就是:

  • 正向:安全目标 → 功能安全要求 → 技术安全要求 → 实现代码/硬件
  • 反向:代码/硬件 → 技术安全要求 → 功能安全要求 → 安全目标

为什么要双向?因为改代码时,你得知道会影响哪个安全目标。我有个朋友,改了一行代码,结果把ASIL D的要求降级成了ASIL B,测试都没发现,最后被审核员抓了个正着。嗯,那场面,挺尴尬的。

4.4 本章知识体系

为了让大家更直观地理解,我画了一张图:

安全要求层级与追溯关系 安全目标 (SG) 系统要避免什么? 分解 功能安全要求 (FSR) 系统要具备什么功能? 细化 技术安全要求 (TSR) 用什么技术手段实现? 分配 系统实现(硬件/软件) 双向追溯 关键原则:每个TSR必须能追溯到唯一的SG,每个SG必须至少有一个FSR和TSR实现 缺失任何一个环节,安全论证就不完整

这张图我建议你保存下来。每次做安全要求时,对照着看看,自己是不是漏了哪一层。

4.5 实战建议

最后,分享几个我踩过的坑:

  • 别贪多:安全目标一般不超过10个。超过这个数,说明你分解得不够抽象。
  • 别写死:安全要求要留有余地。我见过有人把「使用CAN总线」写进安全要求,结果后来想换以太网,改得痛不欲生。
  • 别忘验证:每个安全要求都要有对应的验证方法。没有验证方法的要求,等于没写。

小技巧:我习惯在写安全要求时,旁边就写上「验证方法」和「测试用例编号」。这样后面做测试时,直接对着看就行,不用再翻一遍文档。

好了,安全目标与安全要求这块,核心就是「目标要准、分解要细、追溯要全」。你按这个思路去做,审核员基本挑不出毛病。


公众号:蓝海资料掘金营,微信deep3321