拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ISO 26262安全分析实战:从HARA、FMEA到FTA与DFA的系统方法

ISO 26262安全分析实战:从HARA、FMEA到FTA与DFA的系统方法

前两年给一个域控制器项目做功能安全预研,第一版安全分析报告交上去之后,评审专家只回了一句话:“你们的安全目标写得不少,但哪一个是分析出来的,哪一个是想当然拍出来的?”当场就把我问住了。从那以后,我才真正把ISO 26262里的安全分析当作一门需要系统性方法的手艺来看,而不是填表交差的流程负担。

这篇“互动分享 | ISO 26262安全分析概览”,就是把我从HARA、FMEA、FTA到DFA一路踩坑、纠偏、沉淀下来的经验和盘托出。适合刚接触功能安全、准备给产品做安全分析的新人,也适合已经做过一两个项目、想回头把分析质量往上提一提的工程师。内容不灌水,不讲教科书式的大道理,全部围绕如何在项目里把安全分析做对、做实、做出可追溯的证据链。

1. 为什么要做安全分析:不是“陪太子读书”,是给安全目标找出处

很多团队把安全分析理解成“为了过评审而准备的一堆文档”。这个心态一旦建立,方向就歪了。ISO 26262里的安全分析不是独立于开发流程之外的附加作业,它是在需求、设计、测试之间建立因果链的关键手段。一句话说清楚:安全分析是回答“我们凭什么认为这个系统是安全的”这问题的唯一途径。

标准里对安全分析的要求分两个层面。第一层面是概念阶段的HARA(Hazard Analysis and Risk Assessment),也就是在还没有具体硬件软件方案之前,先站在整车层面判定系统在什么场景下可能产生危害,以及这些危害有多严重、多容易被触发、驾驶员能不能避开。第二层面是系统、硬件、软件设计阶段的分析工作,也就是FMEA、FTA、DFA这些“硬核”工具,它们负责验证设计实现是否真的把风险控制住了。

如果只把安全分析当作模板填空,那你得到的结果就是一份看起来格式工整但完全经不起推敲的文档。评审专家一旦问“这个失效模式为什么被评成S2而不是S3”“这个FTA的最小割集为什么没包含那条共因路径”,整个逻辑链就散了。我在实际项目里见过太多这样的场景:安全目标写了七八条,但没有任何一条能回溯到具体危害场景,也没有任何一条能量化到可验证的ASIL等级。这样的安全目标,本质上是拍脑袋拍出来的。

1.1 安全分析在整个功能安全开发中的位置

把ISO 26262的V模型摆出来看,安全分析贯穿了左侧设计与右侧验证的全过程。V模型左侧是需求向下分解,从item definition到功能安全概念(Functional Safety Concept)再到技术安全概念(Technical Safety Concept),每一层都要有对应的安全分析。V模型右侧是集成测试、验证、评估,而分析得出的安全机制是否真能覆盖它在左侧承诺的风险,要靠测试来闭环。

我习惯把安全分析的分层逻辑类比成工程领域的“先勘探、再设计、后复核”。HARA是勘探,先搞清楚这块地上到底有什么风险;FMEA和FTA是结构设计复核,确认每面墙、每根梁在受力时不会塌;DFA是检查不同力学路径之间会不会因为共用一个支座而同时失效。每一层分析解决的问题不同,方法不同,输出也不同,绝不能相互替代。

做项目规划的时候,很多人关心的是时间表和资源,却忽略了一个关键点:安全分析的时机窗口是有限的。HARA必须在系统需求冻结前完成——如果系统方案已经锁定再去补危害分析,分析结果大概率会被既有限制绑架,丧失客观性。FMEA最好在详细设计阶段迭代过程中就开始做,而不是等设计冻结后才“补记录”。这一点后面实操章节还会细说。

1.2 安全分析的输入与输出:从item definition到安全案例的证据链

安全分析不是凭空起高楼,它的输入非常明确。最低层的输入是Item Definition,也就是你分析对象本身的边界、功能、接口和环境条件。再往上,是系统架构设计、硬件架构设计、软件架构设计,每一层分析都有与之对应的架构视图作为前置依赖。如果架构还没成型就强行做分析,结果是分析对象在过程中反复变动,FMEA表格改了一版又一版,最后谁也不知道哪版是对的。

输出方面,安全分析的直接产物是危害事件列表、安全目标、安全需求,以及相应的FMEA报告、FTA报告、DFA报告。但这些报告只是载体,真正重要的是报告里体现出的安全论据(Safety Argument)。ISO 26262的评审认可逻辑最终要服务于安全案例(Safety Case),而安全案例的核心就是展示“我们识别了所有合理的风险,为每类风险定义了恰当的安全目标,并设计了充分且有效的安全机制”。

这里有个容易被低估的工作量:安全分析输出与安全需求的追溯性。每个从FMEA或FTA里发现的新失效模式,要么变成一条新的安全需求,要么通过现有需求覆盖,并且必须明确记录在追溯矩阵里。我在实际项目里吃过亏:FMEA里分析出某个 CAN 报文失效会导致车辆动力中断,但需求追踪矩阵里找不到对应安全需求,评审时被开了Major NC。这个坑,请各位务必不要踩。

2. 第一步:HARA危害分析与风险评估——决定整车安全等级的源头

HARA是整个ISO 26262分析工作的源头,也是所有后续分析动作的方向标。这一阶段的目标只有一个:识别车辆或系统在正常运行或可预见误用情况下,可能对人员造成伤害的危险事件,并评估出每个危险事件对应的ASIL等级。ASIL等级直接决定了后续安全需求的安全完整性,D级最高,A级最低,QM表示只需按常规质量管理流程处理。

HARA的操作流程标准里写得很清楚:场景分析、危害识别、风险评估、安全目标定义。但真正落地的时候,团队最容易出错的地方在于场景分析不够系统性。一份好的HARA场景清单必须覆盖正常运行、合理可预见的误用、故障状态下的退化运行,以及外部环境的合理扰动。场景的完整性,决定HARA分析结论的置信度。如果场景本身就漏了,评估结果再准也无济于事。

2.1 HARA的三要素与ASIL等级计算:严重度、暴露概率、可控性

ASIL等级来源于三个参数的组合:

  • Severity(S)——严重度:如果危害事件发生,对驾驶员、乘客、行人或其他交通参与者造成的伤害程度。分S0、S1、S2、S3四级。S3指危及生命的伤害,S2指严重但通常不危及生命的伤害,S1指轻伤,S0指无伤害。
  • Exposure(E)——暴露概率:车辆或人员在会触发危害的场景中出现的概率。分E0、E1、E2、E3、E4五级。E4代表极高概率(比如每天都能遇到的场景),E1代表很罕见。
  • Controllability(C)——可控性:驾驶员或其他涉事人员通过及时合理反应,能否避免伤害的能力。分C0、C1、C2、C3四级。C3代表几乎不可控,C2代表通常不可控但部分熟练驾驶员可以应对,C1代表简单应对即可。

三者的组合查表即得ASIL等级。这张表本质上是一个风险的“三维矩阵”,S维度衡量后果严重度,E维度衡量事故发生频率,C维度衡量最后一道人因防线的可靠性。说实话,真正难的不是查表,而是对S、E、C的准确判断。同一个危害事件,在不同团队、不同项目里,给出的定级可能差出整整一个等级。

实际操作中,我推荐先把场景描述写完整,再逐条评估S/E/C,最后查表。场景描述要包含驾驶工况、道路环境、人员状态、系统故障模式,缺一项都可能影响定级。比如“车辆在高速公路上以120km/h行驶时,ACC系统误判断导致非预期紧急制动”和“车辆在市区拥堵路段低速行驶时,ACC系统误判断导致非预期紧急制动”这两者的S和E评估结果完全不同,但很多初做HARA的人会把这两个场景揉在一起,导致ASIL定级失真。

2.2 实操中HARA最容易踩的坑:场景遗漏与S/E/C参数误判

我在多个项目里做HARA评审,发现最高频的问题有三类。

第一类是危害事件定义里没有写清“整车层面的危害结果”。ISO 26262要求在危害识别环节描述的是危害事件(Hazardous Event),而不是部件失效模式。错误示范是“BMS的AFE采样芯片失效导致SOC估算错误”——这是失效模式,不是危害事件。正确示范是“SOC估算错误导致车辆在行驶中突然切断动力,后车追尾风险增加”。前者的分析对象锁定在具体部件,后者的分析对象是整车安全行为。分析层级错了,后续一切都跟着错。

第二类是E参数的评估没有结合真实使用场景数据。标准给了E0到E4的定义,但“大概率”“经常”“偶尔”这些词在团队内部如果没有统一解释,每个人评出来的结果都不一样。我的建议是项目初期建立一个“场景频率校准表”,和整车性能、市场定义、目标用户群绑定,把每个E等级对应到具体场景年里程或使用频次上。

第三类是可控性C的评估过于乐观或过于悲观。C等级的判定最容易引发争议,因为涉及对人的能力假设。一个聪明的做法是把可控性评估与驾驶员反应时间结合:C1对应简单反应即可避免伤害,C2需要相对复杂的操作且部分人会反应不过来,C3意味着再熟练的驾驶员也无法避免。评审时只认字面定义,不接受拍脑袋等级。

做完HARA,每一项危险事件对应的安全目标也就随之确定了。安全目标是整车层面的顶层安全要求,描述必须足够简洁、足够量化,例如“在车辆行驶过程中,不得发生非预期的动力中断”“BMS必须在检测到热失控风险后的500ms内切断高压回路并发出声光报警”。这些安全目标会作为后续功能安全概念和技术安全概念的输入,贯穿整个开发流程。

3. 核心方法之一:FMEA——从失效模式到系统性的“找茬工程”

FMEA(Failure Mode and Effects Analysis)大概是工程圈里知名度最高的可靠性分析方法,它在ISO 26262中的地位同样重要。FMEA的核心逻辑是自下而上:从具体的部件失效模式出发,逐层分析它对上一层级的影响,直到整车层面的危害结果。这是一种归纳法,把“某个零件坏了会怎样”的问题变成了一张结构化的检查清单。

在ISO 26262框架下做FMEA,我建议先明确分析对象和分析边界。系统FMEA关注系统级功能的失效模式;硬件FMEA关注元器件、芯片、电路模块的失效模式;软件FMEA关注软件单元的失效模式。三种FMEA的分析粒度不同,但分析流程基本一致:构建分析对象的结构树、识别失效模式、分析失效原因、评估失效影响、评估当前的检测与控制措施、计算风险优先级或ASIL相关风险等级、提出改进措施。

3.1 FMEA在ISO 26262中的角色:从“找问题”到“证明安全”

有人质疑FMEA在ISO 26262里的必要性,理由是FMEA产生于汽车行业质量管理与可靠性工程的传统,而功能安全更强调系统性的危害分析。但标准之所以把FMEA纳入安全分析的核心工具箱,是因为FMEA解决了HARA解决不了的问题:具体设计实施层面的失效覆盖。

试想一下,HARA告诉你整车层面有一个“电机非预期扭矩输出”的危害事件,但你要如何在硬件和软件设计层面证明该危害被充分规避?你需要逐条分析:扭矩传感器失效会导致什么?MCU输出引脚短路会引发什么?CAN通信丢帧对扭矩命令有何影响?控制算法的变量被误写入又会怎样?这些问题没有FMEA的结构化分析流程,很难保证不漏项。

从安全标准的角度看,FMEA的产出要解决两个问题。第一个是覆盖性(Coverage):设计中的所有安全相关失效模式是否都被识别了?第二个是适当性(Adequacy):针对每个失效模式设计的安全机制是否足以将风险控制在ASIL允许范围内?所以FMEA不仅要展示失效模式列表,还要展示“失效模式→安全机制→安全验证活动”的完整链条。

3.2 FMEA的实操流程:从结构树到措施跟踪的六步闭环

我在项目里常用的FMEA流程分为六步,每一步都有明确的输入输出和参与角色:

第一步,建立分析边界和结构树。结构树从系统功能开始逐层分解到组件级,树上的每个节点都是后续失效模式分析的附着点。结构树的颗粒度很关键——太粗掩盖失效模式,太细则分析工作量爆炸。通常颗粒度定到可替换的硬件单元或软件模块即可。

第二步,识别每个节点的失效模式。硬件层的失效模式有开路、短路、漂移、卡滞、漏电;软件层有数据错误、逻辑跳转错误、时序错乱、存储单元访问错误。识别失效模式时建议参考FMD(Failure Mode Distribution)数据和历史经验库,不要凭个人经验硬编。

第三步,分析失效原因和失效影响。失效原因可以从FMEDA(Failure Modes, Effects and Diagnostic Analysis)表获取,或者从部件规格书的失效分布里查。失效影响要沿着结构树向上追踪,直到整车危害层面,并和HARA中定义的危险事件关联。

第四步,评估当前设计的安全措施。对每个失效模式,说明现有设计中的探测机制和控制机制。例如,对电流传感器失效,现有机制是否为“看门狗监控+冗余采样交叉校验”;对CAN通信中断,现有机制是否为“E2E校验+超时监控”。

第五步,评估风险等级。传统FMEA用RPN(风险优先数),但ISO 26262场景下更推荐采用“ASIL相关性”评估方式:如果某个失效模式的影响与HARA中的危险事件相关,则该失效模式的安全等级直接对标其ASIL等级,评估难度也相应提高。

第六步,提出措施并跟踪闭环。措施可以是增加监控机制、修改设计、增加测试覆盖、改进维护策略,跟踪的方式包括措施责任人、完成时间、验证结果三要素。FMEA不是分析了就结束,措施落地并验证有效,分析才有价值。

3.3 几种FMEA的差异:系统FMEA、硬件FMEA、软件FMEA怎么选、怎么做

很多团队拿着同一套FMEA模板通吃系统、硬件、软件分析,结果做出来的文档要么颗粒度过细导致工作量爆炸,要么颗粒度过粗导致评审不认可。我的经验是:FMEA的类型必须与分析对象和分析目的严格匹配。

系统FMEA分析对象是系统功能,比如“自适应巡航功能”“自动紧急制动功能”,失效模式是功能层面的失效,比如“ACC失去目标”“AEB误触发”。系统FMEA适合在功能安全概念和技术安全概念阶段进行,用来验证安全需求对危害的覆盖。

硬件FMEA分析对象是硬件电路和元器件,失效模式是具体的电子失效,比如“电源芯片输出短路”“MCU某个AI引脚对地短路”“传感器零点漂移”。硬件FMEA通常在硬件设计阶段进行,输出的诊断覆盖率参数直接支撑硬件架构度量(比如SPFM、LFM、PMHF)的计算。

软件FMEA分析对象是软件架构层面的每个软件组件,失效模式是软件逻辑错误、时序错误、数据越界、堆栈溢出等。软件FMEA在软件架构设计阶段进行,部分团队会用软件FTA配合使用,互为补充。

表格对比一下三种FMEA的核心差异,方便大家选型:

维度系统FMEA硬件FMEA软件FMEA
分析对象系统功能硬件电路与元器件软件组件与模块
主要失效模式功能缺失、误动作、非预期介入开路、短路、漂移、锁存逻辑跳转错误、数据错误、超时
输出核心安全需求的覆盖性验证SPFM/LFM/PMHF参数支撑软件安全机制的完整性验证
典型应用阶段系统设计阶段硬件详细设计阶段软件架构设计阶段

有些团队会把系统FMEA和硬件FMEA混在一起做成一份“大而全”的文档,这种做法我极不推荐。两类分析的判据标准完全不同,混在一起极易造成逻辑混乱,评审时也容易被挑战。宁可拆开做、分步交付,也别为了省事挤在一份文档里。

4. 核心方法之二:FTA——用逻辑树推演“怎么死”的,再让它“死不了”

FTA(Fault Tree Analysis,故障树分析)与FMEA正相反,它是一种自上而下的演绎法。从一个不期望发生的顶层事件出发,逐层向下追问“什么组合会导致它发生”,直到分解到最基本的底事件。顶层事件通常是HARA定义的危险事件或者FMEA中识别的高等级失效影响,底事件则是最基础的部件失效模式或人为错误。

在ISO 26262安全分析工具箱里,FTA的价值在于它能把“多条失效路径的组合效应”清晰地展现出来。FMEA擅长发现单点失效,但对“两个部件同时失效才会导致危害”这种组合失效模式,FMEA的枚举方式效率很低,而FTA的布尔逻辑结构天然适合表达这种关系。

4.1 FTA的基本逻辑:与门、或门和最小割集

FTA的底层逻辑构件只有三种:事件符号、逻辑门、转移符号。最常用的逻辑门是“与门”(AND)和“或门”(OR)。与门表示所有输入事件同时发生时,输出事件才发生;或门表示任一输入事件发生时,输出事件就发生。用这两种门,就能表示绝大多数失效逻辑。

举个例子。顶层事件是“车辆行驶中失去制动助力”。第一层可以分解为“真空泵失效”和“真空管路失效”的与门组合——只有当两者同时失效时,制动助力才会完全丧失。而“真空泵失效”又可以分解为“电机烧毁”或“控制器失效”的或门——任意一个发生都会导致真空泵失效。这样一步步推下去,就形成了一棵清晰的故障树。

FTA分析的关键输出是最小割集(Minimal Cut Set)。最小割集是“足以导致顶层事件发生的最少底事件集合”。最小割集的阶数(包含的底事件个数)直接反映系统抵御该失效模式的能力:一阶割集等于单点失效,风险最高;二阶割集需要两个事件同时发生,风险低得多。在功能安全设计里,我们通常要求对ASIL C/D等级的安全目标,不能存在未受保护的一阶最小割集——这基本就是标准的底线要求。

4.2 FTA实操案例分析:一个电动助力转向系统的故障树

用电动助力转向(EPS)来举个例子。顶层事件设为“转向助力意外丧失”。往下分解,第一级可能有三个或门输入:电机失效、控制器失效、供电失效。其中电机失效又可以分解为“电机绕组断路”和“电机驱动器烧毁”的或门组合;控制器失效可以分解为“主控芯片失效”和“电源管理模块失效”的组合;供电失效则需要“主电源断开”和“备用电源也失效”同时发生,这是一个与门结构。

这个故障树里的“备用电源与主电源同时失效”分支就是典型的高阶割集,说明系统设计上已经考虑了电源冗余。但如果进一步深入,发现“主电源断开”和“备用电源失效”共享了同一个保险丝,那这两个底事件就不独立了——它们存在共因失效(Common Cause Failure)风险。此时,故障树分析本身无法揭示这个问题,需要借助DFA来补充验证。

实际项目中做FTA,我强烈建议采用“逐步剪枝”的迭代方式。第一轮只分析到系统级模块,拿到高层割集;第二轮针对高风险割集向下展开;第三轮针对设计变更带来的结构变化进行刷新。不要试图一次建一棵完整的巨型故障树,那样既费时又容易出错。

4.3 定性FTA与定量FTA的取舍:没有可靠数据,宁愿不做定量

FTA可以做定性分析,也可以做定量分析。定性分析关注的是割集的结构特征——哪些失效组合可能导致顶层事件;定量分析则进一步利用底事件的失效率数据,计算顶层事件的发生概率,并和ISO 26262里的定量安全目标(如PMHF,Probabilistic Metric for random Hardware Failures)对比。

我的经验是:定量FTA的前提是底事件失效率数据可靠。汽车电子领域的失效率数据来源不外乎SN29500、IEC 62380、IEC 61709这些标准数据集,或者供应商提供的部件级FMEDA数据。数据质量差,定量结果就是数字游戏。在项目早期数据不全时,我会优先做定性FTA,把结构逻辑确认清楚,等数据成熟后再定量化。

值得特别提醒的是,FTA的定量结果只对随机硬件失效有意义,系统化失效(比如软件bug、流程漏项)不属于FTA定量分析范畴。ISO 26262对系统化失效的安全性是通过流程管控和评审来保证的,别指望用FTA的定量结果兜底系统化失效。

5. 核心方法之三:DFA——检查“一根绳上的蚂蚱”,守住独立性这条底线

DFA(Dependent Failure Analysis,相依失效分析)是ISO 26262第二版新增的重要内容,专门应对一个FMEA和FTA都难以覆盖的问题:失效事件之间的依赖关系。传统的FMEA/FTA隐含假设了各个底事件相互独立,但现实中这种独立性经常被打破。

DFA要分析的失效依赖关系一般分三类:共因失效(Common Cause Failure,CCF)、级联失效(Cascading Failure)和共用资源失效。共因失效指多个部件因为同一个原因同时失效,比如多路供电共用同一个电源源头、多路信号共用同一个参考地、两个芯片共用同一个时钟源;级联失效指一个部件失效引发下一个部件失效,比如过热引起周边元器件加速老化;共用资源失效则指多个功能共享同一个资源实体,比如多路控制逻辑共用同一个存储区。

5.1 DFA怎么入手:从“设计独立性”到“失效独立性”的验证清单

DFA执行的核心思路是验证设计中的独立性声明。系统架构设计时,我们常说“A路和B路采用独立电源”“安全通道和功能通道采用独立MCU”——这种声明必须有DFA来证实。DFA要回答的问题是:这所谓的“独立”,在各种失效条件下是真的独立吗?

实际操作中,DFA通常会沿着隔离策略的验证清单进行:物理隔离是否足够?共同的环境应力(温度、振动、湿度)是否会同时影响冗余路径?共用的通信链路是否存在单点故障?共用的时钟、复位、电源路径是否被两个功能模块共享?共用的软件模块是否会引入系统性共因失效?

一个典型的DFA案例:双路冗余制动控制器采用了两块MCU,但两路MCU的供电都是从同一颗电源管理芯片输出的。虽然两个MCU各自有去耦电路,但电源芯片本身是共享的。如果电源芯片的某个输出电压失效,两路MCU会同时失去供电,整个冗余架构就形同虚设。FMEA单独分析每路MCU时看不出问题,只有DFA从电源路径沿共用资源逐一排查,才能捕获这个致命的共享点。

我的实践做法是:先做FMEA和FTA,把结构性的失效模式梳理清楚;然后专门开一轮DFA会议,带着架构图和BOM清单,逐个检查冗余通道之间的物理隔离度、电气隔离度、通信隔离度和软件隔离度。DFA评审最好邀请硬件、软件、系统三方工程师同时在场,很多共用资源问题只有具体负责的人才清楚。

5.2 DFA在安全分析报告里的呈现方式:独立性论证表格

DFA的输出通常是一份独立性论证表格,每条记录包含:分析对象A、分析对象B、两者之间宣称的独立性类型、潜在依赖因素、是否存在风险、缓解措施、责任人和闭环状态。ISO 26262-11里对DFA的预期输出有较为详细的示例结构,实际项目里也可以根据自身流程做裁剪,但核心逻辑不能丢:每个独立性声明,都必须有对应分析证据。

我在实际项目里最反感的一种DFA写法,是在表格里填充一堆“无共因失效”的结论性描述,但没有任何支撑论据。这种文档在评审时基本活不过一轮。正确的做法是,对每个潜在依赖因素,明确说明你的分析依据——是设计上物理隔离的,就画清楚隔离间距;是电源分区独立的,就列出每一路电源的源头;是软件架构上通过Hypervisor隔离的,就引用对应的安全机制配置。只有把证据链串联起来,评审专家才能信服。

6. 常见问题与排查技巧实录:安全分析实战踩坑手册

做安全分析的过程,其实也是和“过度自信”“想当然”“急于求成”这些心理习惯作斗争的过程。整理了这些年遇到的高频问题和排查思路,希望能帮你少走几条弯路。

6.1 安全分析中常见的五类错误及其纠正方法

第一类:HARA场景清单不完整。很多人只考虑了IEEE/IEC/ISO标准里提到的标准场景,或者只考虑到产品定义里的正常工况,忽略了可预见的误用和系统退化状态。纠正方法:建立场景库,把法规场景、NCAP测试场景、市场投诉场景、售后数据场景全部纳入,逐项过一遍再确认。

第二类:FMEA失效模式颗粒度不一致。同一个表格里,有的行写到芯片引脚级,有的行只写到功能模块级,导致分析深度参差不齐。纠正方法:首轮分析前先画结构树,并约定每个层级的失效模式描述模板,颗粒度统一后才开始填表。

第三类:FTA和FMEA结论互相矛盾。FMEA里说某个失效模式有安全机制保护,但FTA的故障树里却没有把这个安全机制纳入中间事件;或者FTA里建了共因分支,DFA里却没有对应分析。纠正方法:建立分析工具之间的交叉追溯矩阵,FMEA中每个高等级失效模式必须能在FTA里找到对应逻辑路径,DFA中的每个依赖项必须能在FMEA/FTA里找到对应的失效通道。

第四类:安全分析报告只写了“发生了什么”,没写“为什么不会发生”。这一点最致命。ISO 26262要求安全分析能提供“安全理由”(safety rationale),而不仅仅是失效列表。纠正方法:分析报告中每一条失效模式,都要有对应的设计应对措施和验证活动支撑,没有应对措施的行要单独高亮标示,作为待办事项跟踪。

第五类:安全分析完成时间点太晚。很多团队在软件开发已经进入编码阶段后才启动FMEA和FTA,导致分析结论无法影响设计决策,安全分析变成了“事后写回忆录”。纠正方法:项目计划里把安全分析里程碑前移,HARA在概念冻结前完成,系统FMEA架构方案冻结前做第一轮,硬件FMEA原理图评审前做第一轮,软件FMEA软件架构评审前做第一轮。后续刷新,而不是第一次启动。

6.2 工具选型与效率工具建议:从Excel到专业功能安全软件

安全分析工具的选择,首当其冲的问题是“要不要上专业软件”。市面上几款主流功能安全分析工具,比如medini analyze、ANSYS medini、SOTIF工具链,以及一些本土工具,各有所长。专业工具在FMEA/FTA自动化生成、与需求管理工具(DOORS、Jama、Polarion)的集成、以及安全案例的自动构建方面有巨大优势,但学习成本和license费用也不低。

我的建议分三种情况。如果项目规模小、团队对功能安全工具链不熟,前期完全可以用Excel搭建FMEA模板和FTA手工绘制。Excel本身也能做数据校验和追溯矩阵,只要你的模板结构设计得够严谨。如果项目规模中等,建议上专业工具完成FMEA/FTA分析,同时保留Excel做追溯矩阵和评审记录。如果项目体量大、安全等级D级场景多、产品线长期复用,那专业工具链几乎必不可少。

不管用什么工具,有一点必须记住:分析质量和工具关系不大,和人的逻辑严谨程度密切相关。工具只是把分析过程结构化、把知识库沉淀下来,真正找出安全设计弱点的人还是你。工具可以帮助你减少重复劳动,但替代不了你的判断力。

6.3 安全分析经验沉淀:从“做完项目就散”到“组织级知识库”

安全分析是一项极依赖经验的工程活动。我见过不少公司,项目做完了,FMEA模板、故障树模型、失效模式库都散落在个人电脑里,下一个项目从头再来。这不仅是资源浪费,更会导致同样的错误在不同项目里反复出现。

我的建议是项目复盘时,把安全分析过程里识别到的典型失效模式、有效的安全机制、评审中被挑战的问题,统一沉淀到组织级失效模式库。后续新项目的FMEA/FTA可以直接调用这个库的条目作为起点,再结合新项目的具体设计做裁剪和深化。长此以往,团队的安全分析能力会形成复利效应,每个项目都比上一个项目做得快、做得准。

另一个经验是:安全分析的过程,本质上也是跨部门沟通的过程。功能安全工程师不能闷头自己分析,要有节奏地和系统工程师、硬件工程师、软件工程师、测试工程师做分析评审。安全分析的结论能不能有效落到产品里,很大程度上取决于这些跨职能沟通的质量,而不是文档本身。

我个人在实际操作中的一个体会是:好的安全分析报告,不应该让人看得昏昏欲睡。它应该像一个逻辑严密的推理故事,从整车危害出发,一步步拆解到具体失效模式,再一步步确认应对措施,最终形成一条完整的证据链。如果你写完一份安全分析报告,能够给别人讲清楚“这个系统为什么安全”,那这份分析报告的质量就达标了。

最后再分享一个小技巧:每次安全分析评审会,都用“追溯矩阵”开头,而不是用分析报告本身。先让大家看HARA危害事件和安全目标的对应关系,再看安全目标和技术安全需求的对应关系,然后逐条确认每条需求的验证活动。这个流程走顺了,评审专家对你的信心会大幅增加。

返回列表