引言
在功能安全的实施过程中,除了核心的开发活动,还需要一系列的支持活动来确保整个过程的规范性、可追溯性和一致性。这些支持活动就像是建筑工程中的脚手架和基础设施,虽然不是主体结构,但却是保证建筑安全和顺利施工的关键。
想象一个真实场景:某汽车厂商的制动系统在开发过程中,由于缺乏有效的配置管理,导致不同版本的硬件和软件被错误地集成在一起,最终产品在市场上出现故障,造成重大经济损失。
这个案例告诉我们:**完善的配置管理、文档管理和工具管理是确保功能安全的重要基础。**这正是 ISO 26262-8 支持过程部分的核心使命。
支持过程的目标和范围
支持过程的核心活动
ISO 26262-8 定义了六个核心支持过程:
配置管理
- 配置识别
- 配置控制
- 配置状态记录
- 配置审计
文档管理
- 文档规划
- 文档编制
- 文档控制
- 文档归档
工具置信度评估
- 工具分类
- 工具置信度评估
- 工具使用流程
接口协议
- 接口识别
- 接口定义
- 接口验证
需求管理
- 需求识别
- 需求分析
- 需求追溯
工作产品管理
- 工作产品识别
- 工作产品控制
- 工作产品验证
配置管理
配置管理的定义
配置管理(Configuration Management,CM) 是识别和控制系统工作产品及其变更的系统方法。
配置管理的核心活动
1. 配置识别
配置识别是确定需要纳入配置管理的所有工作产品。
配置项(CI)的分类:
文档类
- 需求文档
- 设计文档
- 测试文档
- 安全档案
代码类
- 源代码
- 目标代码
- 库文件
硬件类
- 硬件设计文档
- PCB 文件
- BOM 表
数据类
- 配置参数
- 标定数据
- 测试数据
配置项标识:
每个配置项必须有唯一的标识符。
标识格式:
[项目代码]-[文档类型]-[版本号]-[修订号]
示例:
EPB-SRS-1.0.0:EPB 项目的软件需求规格说明书,版本 1.0,修订 0EPB-SRC-1.2.3:EPB 项目的源代码,版本 1.2,修订 3EPB-HDL-2.0.1:EPB 项目的硬件设计文档,版本 2.0,修订 1
2. 配置控制
配置控制是管理配置项的变更。
变更管理流程:
变更请求(CR)
- 提交变更请求
- 变更影响评估
- 变更审批
变更实施
- 执行变更
- 更新相关文档
- 更新配置项版本
变更验证
- 验证变更是否正确
- 验证变更是否满足需求
- 更新测试用例
变更请求示例:
| 字段 | 内容 |
|---|---|
| 变更编号 | CR-2025-012 |
| 变更标题 | 优化制动控制算法 |
| 变更描述 | 优化制动控制算法,提高制动响应速度 |
| 变更原因 | 提高制动性能 |
| 影响分析 | 影响软件模块:BrakingControl.c |
| 风险评估 | 低风险 |
| 变更类型 | 一般变更 |
| 变更状态 | 待审批 |
| 变更提交人 | 张三 |
| 变更提交时间 | 2025-03-15 |
3. 配置状态记录
配置状态记录是记录配置项的当前状态和变更历史。
配置状态报告:
| 配置项 | 当前版本 | 变更历史 | 变更时间 | 变更人 |
|---|---|---|---|---|
| EPB-SRS-1.0.0 | 1.0.0 | 初始版本 | 2025-01-01 | 李四 |
| EPB-SRC-1.0.0 | 1.0.0 | 初始版本 | 2025-01-15 | 王五 |
| EPB-SRC-1.0.1 | 1.0.1 | 修复 Bug #123 | 2025-02-10 | 王五 |
| EPB-SRC-1.1.0 | 1.1.0 | 添加新功能 | 2025-02-20 | 王五 |
4. 配置审计
配置审计是验证配置项是否与文档一致,变更是否正确实施。
配置审计类型:
- 功能配置审计(FCA):验证功能是否实现
- 物理配置审计(PCA):验证配置项是否与文档一致
配置审计检查清单:
- 所有配置项是否已识别?
- 所有配置项是否已版本控制?
- 所有变更是否已记录?
- 配置项是否与文档一致?
- 测试是否覆盖所有变更?
案例:制动系统的配置管理
配置项列表:
| 配置项 | 类型 | 版本 | 状态 |
|---|---|---|---|
| 制动系统安全目标 | 文档 | 1.0.0 | 已发布 |
| 制动系统需求规格说明书 | 文档 | 1.0.0 | 已发布 |
| 制动系统设计文档 | 文档 | 1.0.0 | 已发布 |
| 制动控制源代码 | 代码 | 1.0.2 | 已发布 |
| 制动控制测试用例 | 代码 | 1.0.1 | 已发布 |
| 制动系统硬件设计文档 | 文档 | 2.0.1 | 已发布 |
变更记录:
| 变更编号 | 变更类型 | 变更描述 | 影响配置项 | 变更时间 | 变更人 |
|---|---|---|---|---|---|
| CR-2025-012 | 一般变更 | 优化制动控制算法 | 制动控制源代码 | 2025-03-15 | 张三 |
| CR-2025-015 | 重大变更 | 增加冗余通道 | 硬件设计文档 | 2025-03-20 | 李四 |
文档管理
文档管理的定义
文档管理(Documentation Management) 是规划、编制、控制和归档所有文档的过程。
文档管理的核心活动
1. 文档规划
文档规划是确定需要编制的文档、文档的格式、文档的评审要求。
文档清单:
| 文档类型 | 文档名称 | ASIL要求 | 评审要求 |
|---|---|---|---|
| 概念阶段 | HARA 报告 | ASIL A-D | 独立评审 |
| 概念阶段 | 功能安全概念(FSC) | ASIL A-D | 独立评审 |
| 系统开发 | 系统安全需求(SSyR) | ASIL A-D | 独立评审 |
| 系统开发 | 技术安全概念(TSC) | ASIL A-D | 独立评审 |
| 硬件开发 | 硬件安全需求(HSR) | ASIL A-D | 独立评审 |
| 硬件开发 | 硬件设计文档 | ASIL A-D | 独立评审 |
| 硬件开发 | FMEDA 报告 | ASIL A-D | 独立评审 |
| 软件开发 | 软件安全需求(SSR) | ASIL A-D | 独立评审 |
| 软件开发 | 软件架构设计文档 | ASIL A-D | 独立评审 |
| 软件开发 | 软件单元设计文档 | ASIL B-D | 评审 |
| 验证 | 测试计划 | ASIL A-D | 独立评审 |
| 验证 | 测试报告 | ASIL A-D | 独立评审 |
| 生产 | 生产一致性计划(PCP) | ASIL A-D | 独立评审 |
2. 文档编制
文档编制是按照规范和格式编写文档。
文档格式规范:
- 封面:包含文档标题、版本号、日期、作者等信息
- 修订历史:记录文档的变更历史
- 目录:文档的章节目录
- 正文:文档的主要内容
- 附录:补充材料
文档内容要求:
- 清晰准确
- 完整一致
- 可追溯
- 可维护
3. 文档控制
文档控制是管理文档的发布、分发和变更。
文档控制流程:
- 文档创建:作者创建文档草稿
- 文档评审:评审人员评审文档
- 文档批准:批准人员批准文档
- 文档发布:发布文档到受控环境
- 文档分发:分发给相关人员
- 文档归档:归档到文档管理系统
4. 文档归档
文档归档是长期保存文档,便于追溯和审计。
归档要求:
- 文档完整性:所有相关文档必须归档
- 归档时间:项目完成后立即归档
- 归档期限:至少 15 年
- 归档位置:安全、可控的环境
工具置信度评估
工具的分类
ISO 26262-8 将工具分为四个类别(TCL 1-4):
TCL 1:不推荐用于功能安全相关活动
定义:这些工具不适合用于功能安全相关活动。
示例:
- 普通文本编辑器(如 Notepad)
- 未验证的编译器
TCL 2:可用于功能安全相关活动,不需要置信度评估
定义:这些工具可以用于功能安全相关活动,但不会影响安全相关的工作产品。
示例:
- 源代码管理工具(如 Git、SVN)
- 需求管理工具(如 DOORS)
- 项目管理工具(如 Microsoft Project)
TCL 3:可用于功能安全相关活动,需要置信度评估
定义:这些工具可以用于功能安全相关活动,但可能会影响安全相关的工作产品,需要进行置信度评估。
示例:
- 编译器(如 GCC、MSVC)
- 链接器(如 GNU ld)
- 调试器(如 GDB)
TCL 4:可用于功能安全相关活动,需要置信度评估
定义:这些工具可以用于功能安全相关活动,可能会直接生成或修改安全相关的工作产品,需要进行置信度评估。
示例:
- 静态分析工具(如 Coverity、Klocwork)
- 测试工具(如 Vector Test)
- 代码生成器(如 Simulink Coder)
工具置信度评估的方法
评估维度
工具置信度评估从以下三个维度进行:
工具置信度检测能力(TCD):
- TCD 1:工具置信度低
- TCD 2:工具置信度中
- TCD 3:工具置信度高
工具置信度防止错误的能力(TPL):
- TPL 1:防止错误的能力低
- TPL 2:防止错误的能力中
- TPL 3:防止错误的能力高
工具置信度检测能力 + 防止错误的能力(TCL):
| TCD | TPL | TCL | 措施 |
|---|---|---|---|
| 1 | 1 | 1 | 不推荐使用 |
| 1 | 2 | 2 | 需要额外检测措施 |
| 1 | 3 | 3 | 可以使用 |
| 2 | 1 | 2 | 需要额外检测措施 |
| 2 | 2 | 3 | 可以使用 |
| 2 | 3 | 4 | 可以使用 |
| 3 | 1 | 3 | 可以使用 |
| 3 | 2 | 4 | 可以使用 |
| 3 | 3 | 4 | 可以使用 |
工具置信度评估流程
- 工具识别:识别需要评估的工具
- 工具分类:确定工具的类别(TCL 1-4)
- 置信度评估:评估 TCD、TPL 和 TCL
- 措施制定:根据评估结果制定相应措施
- 工具验证:验证工具是否满足要求
案例:编译器的工具置信度评估
工具:GNU Compiler Collection (GCC)
步骤 1:工具识别
- 工具名称:GCC
- 工具版本:11.2.0
- 用途:编译 C/C++ 代码
步骤 2:工具分类
- GCC 用于编译安全相关代码
- 可能影响安全相关的工作产品
- 类别:TCL 3
步骤 3:置信度评估
| 评估项 | 评估结果 | 说明 |
|---|---|---|
| TCD 1 | 否 | GCC 不是简单的错误检测工具 |
| TCD 2 | 否 | GCC 不是编译器验证工具 |
| TCD 3 | 是 | GCC 是成熟的编译器 |
| TPL 1 | 否 | GCC 不是简单的错误预防工具 |
| TPL 2 | 否 | GCC 不是编译器验证工具 |
| TPL 3 | 是 | GCC 经过广泛的验证 |
TCL 计算:
- TCD = 3
- TPL = 3
- TCL = 4
步骤 4:措施制定
| 措施类型 | 措施内容 |
|---|---|
| 验证措施 | 使用基准测试验证 GCC 的正确性 |
| 使用措施 | 使用稳定的 GCC 版本 |
| 文档措施 | 记录 GCC 版本和配置 |
步骤 5:工具验证
使用基准测试验证 GCC:
# 编译基准测试程序
gcc -O2 -Wall -Wextra benchmark.c -o benchmark
# 运行基准测试
./benchmark
# 比较输出与预期
diff output.txt expected.txt
案例:静态分析工具的工具置信度评估
工具:Coverity
步骤 1:工具识别
- 工具名称:Coverity
- 工具版本:2023.03
- 用途:静态代码分析
步骤 2:工具分类
- Coverity 用于分析安全相关代码
- 直接影响安全相关的工作产品
- 类别:TCL 4
步骤 3:置信度评估
| 评估项 | 评估结果 | 说明 |
|---|---|---|
| TCD 1 | 否 | Coverity 不是简单的错误检测工具 |
| TCD 2 | 否 | Coverity 不是验证工具 |
| TCD 3 | 是 | Coverity 是成熟的静态分析工具 |
| TPL 1 | 否 | Coverity 不是简单的错误预防工具 |
| TPL 2 | 否 | Coverity 不是验证工具 |
| TPL 3 | 是 | Coverity 经过广泛的验证 |
TCL 计算:
- TCD = 3
- TPL = 3
- TCL = 4
步骤 4:措施制定
| 措施类型 | 措施内容 |
|---|---|
| 验证措施 | 使用已知缺陷的代码验证 Coverity 的检测能力 |
| 使用措施 | 定期更新 Coverity 规则库 |
| 文档措施 | 记录 Coverity 配置和规则 |
接口协议
接口的定义
接口(Interface) 是系统之间、子系统之间、组件之间交换数据和信息的途径。
接口协议的核心活动
1. 接口识别
接口识别是识别所有的系统内和系统间接口。
接口类型:
硬件接口
- 电气接口(电压、电流、信号)
- 机械接口(尺寸、连接方式)
- 热接口(散热、温度)
软件接口
- 函数接口(函数参数、返回值)
- 数据接口(数据结构、数据格式)
- 通信接口(协议、时序)
系统接口
- 车辆接口(与整车其他系统的接口)
- 外部接口(与外部系统的接口)
2. 接口定义
接口定义是详细描述接口的规格。
接口定义内容:
- 接口标识
- 接口描述
- 接口类型
- 接口参数
- 接口行为
- 接口约束
3. 接口验证
接口验证是验证接口是否满足需求。
验证方法:
- 接口测试
- 集成测试
- 仿真测试
案例:制动系统的接口协议
接口列表:
| 接口标识 | 接口名称 | 接口类型 | 通信协议 |
|---|---|---|---|
| IF-001 | 压力传感器接口 | 硬件接口 | 模拟信号 |
| IF-002 | 阀门控制接口 | 硬件接口 | PWM 信号 |
| IF-003 | CAN 通信接口 | 通信接口 | ISO 11898 |
| IF-004 | VCU 接口 | 系统接口 | UDS 协议 |
IF-001:压力传感器接口定义:
| 参数 | 值 | 单位 | 说明 |
|---|---|---|---|
| 信号类型 | 模拟电压 | V | 0-5V 对应 0-100 bar |
| 供电电压 | 5 | V | ±0.25V |
| 输入阻抗 | > 10 | kΩ | 高阻抗 |
| 更新频率 | 100 | Hz | 10ms 采样周期 |
IF-003:CAN 通信接口定义:
| 参数 | 值 | 单位 | 说明 |
|---|---|---|---|
| 通信速率 | 500 | kbps | 符合 ISO 11898 |
| 消息格式 | CAN 2.0B | - | 29位标识符 |
| 消息周期 | 10 | ms | 周期性消息 |
| 消息 ID | 0x100 | - | 压力传感器数据 |
需求管理
需求管理的定义
需求管理(Requirements Management) 是规划、追踪、控制需求的过程。
需求管理的核心活动
1. 需求识别
需求识别是识别所有的安全相关需求。
需求层次:
安全目标(Safety Goal)
↓
功能安全需求(FSR)
↓
系统安全需求(SSyR)
↓
技术安全需求(TSR)
↓
├─ 硬件安全需求(HSR)
└─ 软件安全需求(SSR)
2. 需求分析
需求分析是分析需求的完整性、一致性、可追溯性。
分析维度:
- 完整性:需求是否完整
- 一致性:需求是否一致
- 可追溯性:需求是否可追溯
- 可验证性:需求是否可验证
- 可实现性:需求是否可实现
3. 需求追溯
需求追溯是建立需求之间的追溯关系。
追溯矩阵示例:
| 安全目标 | 功能安全需求 | 系统安全需求 | 技术安全需求 | 硬件安全需求 | 软件安全需求 |
|---|---|---|---|---|---|
| SG-1 | FSR-1.1 | SSyR-1.1 | TSR-1.1.1 | HSR-1.1.1.1 | SSR-1.1.1.1 |
| SG-1 | FSR-1.2 | SSyR-1.2 | TSR-1.2.1 | - | SSR-1.2.1.1 |
工作产品管理
工作产品的定义
工作产品(Work Product) 是在安全生命周期中创建的所有产品,包括文档、代码、测试用例等。
工作产品管理的核心活动
1. 工作产品识别
工作产品识别是识别所有需要管理的工作产品。
工作产品分类:
| 类别 | 示例 |
|---|---|
| 需求类 | 安全目标、功能安全需求、系统安全需求 |
| 设计类 | 系统设计文档、硬件设计文档、软件设计文档 |
| 实现类 | 源代码、目标代码、硬件 |
| 验证类 | 测试计划、测试用例、测试报告 |
| 管理类 | 安全计划、安全档案、审核报告 |
2. 工作产品控制
工作产品控制是管理工作产品的版本和变更。
控制方法:
- 版本控制:使用 Git 或 SVN 等版本控制系统
- 变更控制:通过变更请求管理变更
- 发布控制:控制工作产品的发布和分发
3. 工作产品验证
工作产品验证是验证工作产品是否满足要求。
验证方法:
- 评审
- 静态分析
- 测试
常见错误和最佳实践
常见错误
配置管理不到位
- 配置项不完整
- 版本控制不规范
- 变更记录缺失
文档管理混乱
- 文档不完整
- 文档版本不一致
- 文档归档不规范
工具评估不足
- 使用未经评估的工具
- 忽视工具的局限性
- 缺乏工具验证
接口管理不当
- 接口定义不清晰
- 接口验证不充分
- 接口变更控制不严
最佳实践
使用专业的配置管理工具
- Git、SVN 等版本控制系统
- 需求管理工具(如 DOORS)
- 项目管理工具(如 JIRA)
建立完善的文档管理体系
- 统一的文档模板
- 明确的文档评审流程
- 严格的文档控制流程
严格进行工具置信度评估
- 评估所有用于功能安全的工具
- 制定相应的措施
- 定期验证工具
建立清晰的接口协议
- 详细定义所有接口
- 充分验证接口
- 严格控制接口变更
总结
ISO 26262-8 支持过程部分为功能安全的实施提供了重要的基础保障。通过本文的深入解读和丰富的案例实践,我们掌握了:
配置管理:
- 配置识别
- 配置控制
- 配置状态记录
- 配置审计
文档管理:
- 文档规划
- 文档编制
- 文档控制
- 文档归档
工具置信度评估:
- 工具分类(TCL 1-4)
- 工具置信度评估方法
- 编译器和静态分析工具的评估
接口协议:
- 接口识别
- 接口定义
- 接口验证
需求管理:
- 需求识别
- 需求分析
- 需求追溯
工作产品管理:
- 工作产品识别
- 工作产品控制
- 工作产品验证
核心要点:
- 配置管理是确保产品一致性的关键
- 文档管理是确保可追溯性的关键
- 工具置信度评估是确保工具可靠性的关键
- 接口协议是确保系统集成性的关键
- 需求管理是确保需求可追溯性的关键
- 工作产品管理是确保产品可控性的关键
在下一篇文章中,我们将深入解读 ISO 26262-9 ASIL 导向的分析方法,学习如何针对不同 ASIL 等级进行分析。
