FuSaCert · 功能安全学习
ISO 26262 Part 6:软件开发与验证学习指南
Part 6 关注产品开发的软件层面。理解它的关键,是让每项开发活动都有清楚的输入、输出和验证依据,并能把实现与上游安全需求连接起来。
本页为对 ISO 26262-6:2018 范围与活动的转述及 FuSaCert 原创学习建议;练习产物为教学示例,不是标准原文、完整交付清单或符合性判定。
Part 6 在生命周期中的位置
软件开发从上游分配的软件安全需求和相关设计约束出发,与系统层面、硬件接口和支持过程协同。不能只检查代码就推断整个项目满足 ISO 26262。
先理解软件需要实现的安全行为,再看架构如何分配责任、单元如何实现、验证如何发现偏离。软件工具、配置管理和变更管理等支持活动也需要结合相应 Part 学习。
按六个阶段建立学习主线
下表按 ISO 26262-6:2018 第 6 至 11 章的活动组织。右栏是建议练习,帮助理解活动与证据的关系,不是正式项目的全部工作产物。
| 阶段与依据 | 要理解的问题 | 建议练习产物 |
|---|---|---|
| 软件安全需求(第 6 章) | 软件必须实现什么安全行为?输入条件、响应和接口是否明确? | 一条可验证的需求及其上游依据。 |
| 软件架构设计(第 7 章) | 组件怎样分担需求?接口和数据流怎样控制故障影响? | 组件与接口图,以及需求分配关系。 |
| 单元设计与实现(第 8 章) | 单元怎样实现设计意图,并遵守适用的设计与编码规则? | 单元设计说明及与代码的对应。 |
| 软件单元验证(第 9 章) | 如何证明单元满足其设计和分配需求? | 有依据的测试条件、结果和分析。 |
| 软件集成与验证(第 10 章) | 组合后接口、交互和架构行为是否符合预期? | 集成顺序、接口测试及结果。 |
| 嵌入式软件测试(第 11 章) | 嵌入式软件是否满足软件安全需求? | 需求关联的测试用例、环境说明与结果。 |
用一条需求练习追溯
教学任务:选择“在指定输入异常条件下,软件在明确时间约束内报告异常”这样的需求草案,先列出尚未明确的输入、时间和接口。不要把缺失的约束藏进代码。
然后记录:上游要求是什么、分配到哪个组件、哪些单元参与、单元和集成阶段验证什么、最终如何验证软件需求。发生需求变更时,沿这条链检查设计和测试的影响。
不要把覆盖率当作全部验证证据
覆盖率帮助观察测试执行了哪些代码结构,但不能单独证明需求正确、所有故障影响都被控制,或软件已符合标准。适用的验证方法需要结合 ASIL、活动与具体条款判断。
学习时同时检查需求覆盖、预期结果、异常条件、接口交互和测试环境。对覆盖不足或无法测试的部分说明原因及处理依据,而不是只追求一个百分比。
建议的阅读与练习顺序
先读需求与架构
确认上游输入、需求分配与接口,再进入代码细节。
把实现和验证配对
读一个开发阶段后,马上整理对应验证要回答的问题和需要的证据。
最后回看支持过程
用一项小变更检查配置、工具、评审与追溯,理解开发活动如何持续受控。
常见问题
- Part 6 是不是只适用于 C 语言?
- 本指南不把 Part 6 绑定到单一编程语言。真实项目需要依据语言、工具链、软件架构和适用条款选择与论证方法。
- ASIL D 是否意味着只要做到某个覆盖率就够了?
- 不能这样推断。不同验证活动有不同目的,覆盖率只是部分证据;还要考虑需求、设计、方法适用性以及验证结果。
- 可以直接把这里的表格作为项目交付清单吗?
- 不能。它是帮助理解活动的学习地图,真实清单必须依据适用条款、项目范围、裁剪理由和组织过程制定。
依据与范围
- ISO 26262-6:2018 · ISO 官方目录
范围来源为 ISO 官方目录;活动定位为 2018 版第 6–11 章。解释与练习由 FuSaCert 原创编写。