第4章:安全目标与安全要求
各位工程师朋友,今天我们来聊聊功能安全里最核心的一环——安全目标与安全要求。说实话,我见过太多项目在这块栽跟头。有的团队把安全目标写得像散文,有的把安全要求堆成了天书。嗯,咱们今天就把这事掰扯清楚。
4.1 安全目标的定义与导出
安全目标是什么?说白了,就是「系统最不能出事的那几件事」。比如一个刹车系统,安全目标就是「不能意外刹车」和「必须能刹住车」。就这么简单。
但导出安全目标的过程,可没那么简单。我个人习惯用HARA(危害分析与风险评估)来导出。具体怎么做?
- 识别危害:列出所有可能的危险事件
- 评估风险:看每个危害的严重度、暴露率、可控性
- 确定ASIL等级:根据风险等级定安全完整性等级
- 定义安全目标:每个危害对应一个安全目标
关键点:安全目标必须是可验证的。我见过有人写「系统要足够安全」——这算什么目标?没法测啊!正确的写法是「当车速超过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 本章知识体系
为了让大家更直观地理解,我画了一张图:
这张图我建议你保存下来。每次做安全要求时,对照着看看,自己是不是漏了哪一层。
4.5 实战建议
最后,分享几个我踩过的坑:
- 别贪多:安全目标一般不超过10个。超过这个数,说明你分解得不够抽象。
- 别写死:安全要求要留有余地。我见过有人把「使用CAN总线」写进安全要求,结果后来想换以太网,改得痛不欲生。
- 别忘验证:每个安全要求都要有对应的验证方法。没有验证方法的要求,等于没写。
小技巧:我习惯在写安全要求时,旁边就写上「验证方法」和「测试用例编号」。这样后面做测试时,直接对着看就行,不用再翻一遍文档。
好了,安全目标与安全要求这块,核心就是「目标要准、分解要细、追溯要全」。你按这个思路去做,审核员基本挑不出毛病。
公众号:蓝海资料掘金营,微信deep3321