4、系统级开发(概念阶段):项目定义、安全生命周期启动、危害分析与风险评估(HARA)实操

各位同学,大家好。今天我们进入系统级开发的概念阶段。说白了,就是项目还没开始写代码之前,我们要把「安全」这件事先想清楚。

我个人习惯,把这个阶段叫做「打地基」。地基不稳,后面盖多高的楼都白搭。ISO26262 里这个概念阶段,核心就三件事:项目定义安全生命周期启动、以及HARA。咱们一个一个来拆。

4.1 项目定义:你到底要做什么?

项目定义听起来简单,不就是写个需求文档吗?其实没那么简单。

我见过不少团队,上来就写「我们要做一个智能刹车系统」。然后呢?什么级别的智能?用在什么车上?有没有冗余?这些都不清楚。结果做到一半,发现功能安全目标定错了,全部返工。

项目定义阶段,你要回答清楚这几个问题:

  • 功能范围:这个系统到底控制什么?是线控制动,还是辅助制动?
  • 运行场景:在什么环境下工作?高速、市区、还是越野?
  • 系统边界:哪些功能是系统内部的,哪些是外部的?
  • 安全目标:初步的安全要求是什么?

举个例子。我之前参与过一个电动助力转向项目。项目定义阶段,我们花了整整两周,把「转向」这件事拆成了十几个子功能。每个子功能都明确了:什么时候启用、什么时候禁用、失效了会怎样。

我的小技巧:项目定义阶段,最好拉上系统工程师、安全工程师、还有测试工程师一起开会。一个人想不全,三个人就能互相补漏。

4.2 安全生命周期启动:别急着写代码

安全生命周期启动,听起来很玄乎。其实就一句话:确定你的安全策略

ISO26262 把安全生命周期分成了几个阶段:概念阶段、产品开发阶段、生产阶段。每个阶段都有对应的安全活动。启动阶段,就是要明确:

  • 你的项目属于哪个 ASIL 等级?
  • 需要做哪些安全活动?
  • 谁来负责?
  • 时间节点是什么?

嗯,这里要注意。很多团队觉得「安全生命周期启动」就是走个过场,填个表就完事了。我曾经在一个项目里吃过这个亏。当时我们觉得 ASIL B 嘛,要求不高,随便搞搞就行。结果到了评审阶段,被安全审核员问得哑口无言——因为我们根本没定义清楚「什么时候该做什么安全活动」。

避坑指南:安全生命周期启动不是形式主义。它决定了你后续所有工作的节奏和深度。跳过这一步,后面全是坑。

4.3 HARA 实操:最核心也最头疼的部分

HARA,全称是 Hazard Analysis and Risk Assessment。中文叫「危害分析与风险评估」。这是概念阶段的重头戏。

说白了,HARA 就是回答三个问题:

  1. 系统可能出什么故障?(危害识别)
  2. 这个故障会导致什么后果?(场景分析)
  3. 这个后果有多严重?(风险评估)

我刚开始做 HARA 的时候,觉得这玩意儿就是写文档。后来发现,写文档只是结果,真正的功夫在「想」上面。

4.3.1 危害识别:别漏掉任何一个可能

危害识别,就是把你系统里所有可能出问题的地方都列出来。注意,是「所有」。

举个例子。一个电子油门系统,可能出什么问题?

  • 油门踏板信号丢失
  • 油门踏板信号异常增大
  • 油门踏板信号卡滞
  • 控制器死机
  • 通信中断
  • 电源掉电
  • ……

你看,光是油门踏板这一个输入,就能列出七八种故障。每个故障都要分析。

我的经验:做危害识别的时候,最好用「头脑风暴」的方式。拉上硬件、软件、系统、测试的人,一起想。一个人想不全,三个人就能互相补漏。我习惯用思维导图,把每个功能模块展开,然后逐层分析。

4.3.2 场景分析:故障发生在什么情况下?

同一个故障,发生在不同场景下,后果完全不同。

比如,刹车助力失效:

  • 在高速上突然失效 → 可能造成严重事故
  • 在停车场低速行驶时失效 → 最多吓一跳,不会出大事
  • 在维修模式下失效 → 根本不影响安全

所以,HARA 要求你分析每个故障在「典型场景」下的表现。ISO26262 里定义了三个维度:

维度 含义 等级
S(Severity) 严重度 S0~S3
E(Exposure) 暴露概率 E0~E4
C(Controllability) 可控性 C0~C3

这三个维度组合起来,就决定了你的 ASIL 等级。

4.3.3 风险评估:到底有多危险?

风险评估,就是把 S、E、C 三个值组合起来,查表得到 ASIL 等级。

举个例子。还是刹车助力失效:

  • S:高速上失效,可能造成多人伤亡 → S3
  • E:高速行驶是常见场景 → E4
  • C:普通驾驶员很难应对 → C3

查表得到:ASIL D。这是最高等级,意味着你需要最严格的安全措施。

避坑指南:我曾经在一个项目里,把 S 值定得太低。当时觉得「这个故障不会死人」,结果评审的时候被安全专家怼了——「你怎么知道不会?你做过实验吗?」从那以后,我学乖了。S 值宁可定高,不要定低。定高了,你多做安全措施;定低了,出了事你担不起。

4.4 HARA 实操模板

说了这么多,给大家一个我常用的 HARA 模板。你直接套用就行。

| 编号 | 功能 | 故障模式 | 危害描述 | 运行场景 | S | E | C | ASIL | 安全目标 |
|------|------|----------|----------|----------|---|---|---|------|----------|
| H001 | 油门控制 | 信号丢失 | 车辆无动力 | 高速行驶 | 3 | 3 | 2 | C | 检测信号丢失,进入跛行模式 |
| H002 | 油门控制 | 信号异常增大 | 车辆非预期加速 | 市区行驶 | 3 | 2 | 3 | C | 限制最大加速度,触发制动 |
| H003 | 制动控制 | 助力失效 | 制动力不足 | 高速行驶 | 3 | 4 | 3 | D | 冗余助力,失效时报警 |

这个表格,你填完以后,基本就完成了 HARA 的核心工作。剩下的就是写报告、评审、修改。

4.5 小结

概念阶段,说白了就是「想清楚再动手」。项目定义让你知道做什么,安全生命周期启动让你知道怎么做,HARA 让你知道做多安全。

我个人觉得,HARA 是整个功能安全里最考验「工程直觉」的部分。你不仅要懂技术,还要懂场景、懂用户、懂法规。多练几次,慢慢就有感觉了。

下一章,我们讲系统级开发的另一个重点——功能安全概念(FSC)。到时候我会分享一个我踩过的坑,关于「安全机制设计过度」的问题。敬请期待。