ISO 26262-6(2018)软件层细化:HSI / 架构 / 单元 / 集成 / 测试

功能安全L4别名 ISO 26262 Part 6 · 26262-6 · software safety lifecycle · software architectural design · HSI specification · freedom from interference · MISRA C · software unit testing · 模型驱动开发 MBD · software qualification

本质与导读

本质 Part 6 真正的要求不是怎么写代码,而是把软件做成可逐段独立证明"符合 ASIL × 工程方法"的可追溯产物——从 TSC 一路推到单元测试与集成;MISRA C / 静态分析只是手段。其杀手锏是 Table 1-15:对每个 ASIL 等级规定哪种方法必须用 / 推荐 / 可选,工程评审拿它当 checklist。

主线坐标:横轨 · 功能安全(跨站) · ↑ 全景主线

1. Part 6 五段开发流程

Reference Phase Model(Figure 2):

阶段Clause输入输出
1. 软件安全需求规范6TSC + HSI 初稿软件安全需求 + HSI 细化
2. 软件架构设计7软件需求架构 + 安全分析
3. 软件单元设计与实现8架构代码 + 单元规范
4. 软件单元验证(单元测试)9单元代码单元测试报告
5. 软件集成与验证10所有单元集成测试报告
6. 嵌入式软件测试11集成软件软件验证报告

每个阶段都有专属 work products(WP),WP 串成完整的可追溯链——从 SG 一路追到代码每一行单元测试。

ISO 26262-6 软件 V 模型 — SW 安全需求/架构/单元设计 ↔ 单元测试/集成测试/嵌入式测试,按 ASIL 的方法学(MISRA/MC-DC/半形式化/形式化)

2. 软件安全需求与 HSI(Clause 6)

2.1 软件安全需求的来源

软件安全需求不是从 TSC 直接复制,而是基于:

  • TSC 分配给软件的部分(从 ISO 26262-4)
  • 软件需要支持的安全行为(safety mechanism 的软件实现)
  • 安全相关属性(robustness / 独立性 / fault tolerance)

例 1:TSC 要求"扭矩偏差超 10% 时进入 safe state"——拆成两个软件需求:(a) 比较扭矩参考与实测每 10ms 一次 + (b) 偏差 > 10% 时通过 SPI 拉低 SBC 的 FCCU 输入

例 2:robustness 属性——software 要在传感器输入超出物理范围时不崩(NaN / overflow / out-of-range 都要处理)。这不直接来自 TSC,但软件规范里要列出来作为隐式安全要求

2.2 HSI(Hardware-Software Interface)5 类信息

HSI 是 Part 5 和 Part 6 之间的合同,必须包含:

  1. Operational mode and configuration:寄存器 / 配置 bit / 工作模式
  2. Hardware features used by software:用了 timer 1 / DMA channel 5 / ADC channel 0-7 等
  3. Shared resources:中断号、内存映射、总线
  4. Diagnostic interface:诊断 SM 怎么读硬件状态
  5. Configuration parameters:增益控制、带通频率、时钟分频

工程关键:HSI 必须由系统 / 硬件 / 软件三方联合签字(6.4.6),任意一方更改要全部 review。这是为什么 OEM 要求所有 HSI 改动都进版本控制 + Tier 1 / 半导体厂同步。

3. 软件架构设计(Clause 7)

3.1 8 个架构特性(7.4.1)

这一节先把“8 个架构特性(7.4.1)”的判断维度收拢到同一视图里,后面的表格用于横向比较各选项的边界。

特性含义
Comprehensibility易理解,新工程师能短时间上手
Consistency各模块设计原则一致
Simplicity简单优先,避免过度抽象
Verifiability可形式化或单测验证
Modularity高内聚低耦合
Abstraction复杂度藏到接口下
Encapsulation数据 + 行为绑死,封装边界清晰
Maintainability后续可改不破坏

ASIL D 要求8 个特性都要有明确证据;ASIL A 比较松。

3.2 表示方法(Table 2)

这一节先把“表示方法(Table 2)”的判断维度收拢到同一视图里,后面的表格用于横向比较各选项的边界。

ASILABCD
Natural language(自然语言)++++++++
Informal notations(框图 / 流程图)++++++
Semi-formal notations(UML 类图 / 状态图)+++++++
Formal notations(Z / VDM / B 方法)++++

ASIL D 强烈推荐 semi-formal——大部分工程用 SysML / UML state diagram;formal 是可选。

3.3 Freedom from Interference(免干扰,Annex D)

关键概念:当混合 ASIL 模块同存于一个 ECU 时,低 ASIL 模块不能影响高 ASIL 模块。要论证 3 类机制:

  1. 时间隔离:低 ASIL 模块不能因死循环 / 长执行时间影响高 ASIL 模块的实时性。机制:OSEK / AUTOSAR OS 的时间预算 + execution monitor + watchdog
  2. 空间隔离:低 ASIL 模块不能写到高 ASIL 模块的内存。机制:MMU / MPU + 内存分区
  3. 信息交换隔离:低 ASIL 数据流不能污染高 ASIL 数据。机制:消息端口检查 + sequence number + checksum

工程实操:没有 MMU/MPU 的小 MCU(STM32 G4 / TI C2000)做混合 ASIL 必须靠"代码合并 + 全部按高 ASIL 开发"——成本暴涨。所以选 MCU 时如果可能有混合 ASIL,优先选有 MPU 的。

4. ASIL × 工程方法表(Table 1 编程语言准则)

Part 6 的灵魂是"按 ASIL 推荐工程方法"的诸多表。以编程语言准则(Table 1)为例:

准则ABCD
Enforcement of low complexity(强制低复杂度)++++++++
Use of language subsets(语言子集,如 MISRA-C)+++++++
Enforcement of strong typing(强类型)++++++++
Use of defensive implementation(防御式编程)++++++
Use of well-trusted design principles(可信设计原则)++++++
Use of unambiguous graphical representation+++
Use of style guides(风格指南)+++++++
Use of naming conventions(命名规范)++++++++

工程实务:MISRA C 是 ISO 26262 ASIL D 的事实标配语言子集——把 C 的 unsafe 部分(union / pointer arithmetic / switch fall-through 等)禁了。模型驱动开发(MBD)用 Simulink + Embedded Coder 也要应用 MISRA AC 系列模型规范。

5. 软件实现与测试(Clause 8-9-10-11)

5.1 单元设计与实现(Clause 8)

Unit 不是"一个文件"——是最小可单测验证的代码单元(典型一个状态机 / 一个算法函数)。每个 unit 都要:

  • 单元设计文档(行为 / 接口 / 边界条件)
  • 实现(可能是 C 代码或 Simulink 模型)
  • 单元测试用例

每个安全相关 unit 的设计要符合 Table 7 设计原则(命名清晰 / 限制参数数量 / 单出口 / 限制 goto / 避免动态对象创建)。

5.2 单元测试覆盖(Clause 9 + Table 12)

测试覆盖度按 ASIL 推荐:

覆盖度ABCD
Statement coverage(语句覆盖)++++++
Branch coverage(分支覆盖)+++++++
MC/DC(条件 / 决策修正覆盖)++++

ASIL D 项目典型要求:100% statement + 100% branch + ≥ 95% MC/DC(完全 MC/DC 不切实际但要求很高)。这通常用 LDRA / VectorCAST 等工具自动算覆盖率。

5.3 集成测试(Clause 10)

集成测试不只是"功能验证"——重点验证架构层面的安全要求:

  • 单元间接口的时序 / 数据完整性
  • HSI 的实际行为符合规范
  • Freedom from interference 实测验证(故障注入)
  • Resource usage(stack / heap / CPU 使用率)

5.4 嵌入式软件测试(Clause 11 + Table 14)

最后一关是"在目标硬件上跑全功能":

  • HIL(Hardware-in-the-Loop)环境
  • Fault injection(注故障验证 SM 反应)
  • Worst-case execution time(WCET)分析
  • 长时间稳定性测试

6. Annex C 软件配置(Configurable Software)

Part 6 Annex C 处理一类特殊软件:配置数据(Calibration / Variant)是产品——同一份代码烧不同标定数据生成不同的 ECU 变种。每个标定数据要按 ASIL 走 Part 6 全流程,这是为什么:

  • 标定工程师属于安全团队
  • ASAM CDF / A2L 文件是 controlled work product
  • 标定改动也要经过 change control 流程

7. Annex E 软件层 DFA / FMEA

软件级 DFA 要识别:

  • 共因失效:多个 software 模块共用 RTOS / 共用驱动 / 共用 ISR → 一个 RTOS bug 同时打挂多模块
  • 级联失效:模块 A 输出错误 → 模块 B 接受错误输入 → 链式崩

软件级 FMEA(Annex E)用 software FMEA 表识别每个模块的失效模式 + 影响 + 检测 + 严重度。比硬件 FMEA 更难——软件 failure mode 不像电阻短路那样可枚举。

核心要点

  • Part 6 五段:软件安全需求 → 架构 → 单元设计实现 → 单元测试 → 集成与测试
  • HSI 是 Part 5/6 之间合同,5 类必含信息,系统 / 硬件 / 软件三方联合签字
  • 8 个软件架构特性要求显式证据,ASIL D 推荐 semi-formal notation(UML/SysML)
  • Freedom from interference 三机制:时间 / 空间 / 信息交换;无 MPU 的 MCU 混合 ASIL 成本暴涨
  • ASIL × 编程语言准则表是 PART 6 的灵魂,MISRA C 是 ASIL D 事实标配语言子集
  • 单元测试 ASIL D 典型要求 100% statement + 100% branch + ≥ 95% MC/DC,需 LDRA / VectorCAST 等工具自动算
  • 标定数据(calibration)按 Annex C 也走 Part 6 全流程,标定工程师属安全团队

Engineering Objects

引用此页的结构化 Engineeri…

引用此页的结构化 Engineering Object(v2.0 Copilot 自动生成,不要手动编辑此段)。

  • standard · standard_iso26262_part6 — ISO 26262 Part 6 Software

Cross-references