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、活动与具体条款判断。

学习时同时检查需求覆盖、预期结果、异常条件、接口交互和测试环境。对覆盖不足或无法测试的部分说明原因及处理依据,而不是只追求一个百分比。

建议的阅读与练习顺序

  1. 先读需求与架构

    确认上游输入、需求分配与接口,再进入代码细节。

  2. 把实现和验证配对

    读一个开发阶段后,马上整理对应验证要回答的问题和需要的证据。

  3. 最后回看支持过程

    用一项小变更检查配置、工具、评审与追溯,理解开发活动如何持续受控。

常见问题

Part 6 是不是只适用于 C 语言?
本指南不把 Part 6 绑定到单一编程语言。真实项目需要依据语言、工具链、软件架构和适用条款选择与论证方法。
ASIL D 是否意味着只要做到某个覆盖率就够了?
不能这样推断。不同验证活动有不同目的,覆盖率只是部分证据;还要考虑需求、设计、方法适用性以及验证结果。
可以直接把这里的表格作为项目交付清单吗?
不能。它是帮助理解活动的学习地图,真实清单必须依据适用条款、项目范围、裁剪理由和组织过程制定。

依据与范围

继续阅读

ISO 26262 Part 6:软件开发与验证学习指南 · FuSaCert