目 录
道路车辆 功能安全审核及评估方法
第3部分:软件层面
本标准规定了针对安全相关的电气/电子(E/E)系统在软件层面的功能安全相关活动和工作成果,开展功能安全审核及评估的要求和方法,以检查和判断开发过程及工作成果对于功能安全的符合性。
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 34590-XXXX(所有部分) 道路车辆 功能安全(ISO 26262:2018,MOD)
GB/T 34590.1-XXXX界定的术语、定义和缩略语适用于本文件。
4.1 一般要求
GBT《道路车辆 功能安全审核及评估方法》的部分规定了功能安全软件层面审核的要求,应具备下列文件支持本部分的功能安全审核和评估:
项目计划(细化的),按照GB/T34590.4—2022的5.5.1
安全计划(细化的),按照GB/T34590.4—2022的5.5.2;
软件开发环境文档,按照GB/T34590.6—2022的5.5.1;
软件安全需求规范,按照GB/T34590.6—2022的6.5.1;
软硬件接口规范(细化的),按照GB/T34590.6—2022的6.5.2;
软件安全需求规范、软硬件接口规范评审记录表,按照GB/T34590.6—2022的6.5.3
软件架构设计规范,按照GB/T34590.6—2022的7.5.1;
软件安全分析报告,按照GB/T34590.6—2022的7.5.2~7.5.3;
软件架构设计规范、软件安全分析报告评审记录表,按照GB/T34590.6—2022的7.5.3
软件单元设计规范;按照GB/T34590.6—2022的8.5.1;
软件单元实现,按照GB/T34590.6—2022的8.5.2;
软件单元验证规范,按照GB/T34590.6—2022的9.5.1;
软件单元验证报告,按照GB/T34590.6—2022的9.5.2;
软件集成和验证规范,按照GB/T34590.6—2022的10.5.1;
软件单集成和验证报告,按照GB/T34590.6—2022的10.5.2;
软件安全需求验证规范,按照GB/T34590.6—2022的11.5.1;
软件安全需求验证报告,按照GB/T34590.6—2022的11.5.2;
软件配置数据规范及配置数据,按照GB/T34590.6—2022的C.5.1、C.5.3;
软件标定数据规范及标定数据,按照GB/T34590.6—2022的C.5.2、C.5.4;
软件工具准则评估报告,按照GB/T34590.8—2022的11.5.1;
软件工具鉴定报告,按照GB/T34590.8—2022的11.5.2;
软件组件文档及组件鉴定报告,按照GB/T34590.8—2022的12.5.1~12.5.2;
软件组件鉴定的验证报告,按照GB/T34590.8—2022的12.5.3;
4.2 审核和评估结果的汇总
执行软层面的功能安全审核和评估后,应将审核的评估的结果进行汇总并列举证据:
4.3 软件层面功能安全审核和评估结果
通过(无待完成的建议行动项、评估和审核的相关项符合GBT 34590.6-2022,6.4的要求) | √ |
有条件通过(已有相关项符合的相关证据,已识别相应的建议行动项) | |
不通过(相关风险消除的行动项待完成,通过前需做相应的偏差评估和审核) |
4.4 功能安全审核和评估的独立性要求
功能安全审核和评估的独立性要求参照GBT 34590. 2-2022, 6.4.7的要求。
5.1 目的
审核和评估软件开发环境文档,以提供证据证明:
- 与软件开发流程合适且一致;
- 软件开发环境满足相关项开发的要求;
5.2 审核和评估的输入
5.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软件开发环境文档
5.2.2支持信息
可考虑下列信息:
安全计划;
软件开发流程;
对于软件开发环境的审核和评估,应涵盖以下检查项:
表1:软件开发环境的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件开发环境的模板且在项目中进行了实施? |
2 | 软件开发环境模板是否与已定义的开发流程保持一致? |
3 | 定义的软件开发环境模板是否可以覆盖下面列出的评估检查点? |
4 | 在开发相关项时,使用的软件开发过程和软件开发环境是否适用并满足该相关项要求?
与系统和硬件开发阶段在所需的交互和信息交换的一致性; |
5 | 在开发相关项时,所应用的设计语言、建模语言或编程语言是否满足以下准则?
|
6 | 建模和编码指南是否满足对应的ASIL等级所要求的的通则,以涵盖适合于建模、设计或者编程语言的准则? 注:具体要求参考GB/T34590-6第5章表1 |
6.1 目的
审核和评估软件安全需求规范、细化的软硬件接口规范,以提供证据证明:
a)定义或细化了由技术安全概念和系统架构设计规范导出的软件安全要求;
b)定义了软件实现所需的安全相关功能和特性;
c)细化了在GB/T 34590.4-XXXX第6章最初定义的软硬件接口要求;及
d)验证软件安全要求和软硬件接口要求是否适用于软件开发,及验证它们与技术安全概念和系统架构设计规范的一致性。
6.2 审核和评估的输入
6.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软件安全需求规范,按照GB/T34590.6—2022的6.5.2;
软硬件接口规范(细化的),按照GB/T34590.6—2022的6.5.2;
软件验证报告,按照GB/T34590.6—2022的6.5.3;
6.2.2 支持信息:
可考虑下列信息:
技术安全要求规范,按照GB/T34590.4—2022的6.5.1;
技术安全概念,按照GB/T34590.4—2022的6.5.2;
系统架构设计规范,按照GB/T34590.4—2022的6.5.3;
软硬件接口规范,按照GB/T34590.4—2022的6.5.4;及
软件开发环境文档,按照GB/T34590.6—2022的5.5.1;
6.3 审核和评估的要求
对于软件安全需求规范的审核和评估,应涵盖以下检查项:
表2:软件安全需求规范的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件安全要求的开发流程? |
2 | 是否定义了软件安全要求的模板且在项目中进行了实施? |
3 | 软件安全要求模板是否与已定义的开发流程保持一致? |
4 | 定义的软件安全要求模板是否可以覆盖下面列出的评估检查点? |
5 | 软件安全要求的得出是否基于安全相关的软件功能和特性?如果嵌入式软件除了执行6.4.1定义的安全要求的功能外,还执行了其他功能,是否按照所应用的质量管理体系的要求提供了这些功能及其特性的规范? |
6 | 软件安全要求的得出是否继承于技术安全需求、技术安全概念和系统架构设计规范?软件安全要求的得出是否包含如下内容:
|
7 | 若对软件安全要求进行了ASIL等级分解,其分解原则是否满足GB/T 34590.9-xxxx,第5章的要求? |
8 | 软硬件接口规范在软件开发阶段是否进行了细化?细化程度是否足以支持软件正确控制使用硬件? |
9 | 软硬件接口规范是否描述了硬件和软件间每个与安全相关的依赖性? |
10 | 是否建立了软件安全要求与技术安全需求及技术安全概念之间的双向追溯性? |
11 | 是否细化后的软硬件接口都定义了对应的验证准则? |
12 | 是否为每个软件安全要求制定了验证准则? |
13 | 是否基于GB/T 34590.8-xxxx,第6章和第9章执行了软件安全要求、细化后的软硬件接口规范的验证?其验证结果是否能证明如下要求得到了满足?
|
审核和评估软件架构设计规范,以提供证据证明:
- 开发了满足软件安全要求和其他软件要求的软件架构设计;
- 验证了软件架构设计适合满足所要求ASIL等级的软件安全要求;及
- 支持软件的实现与验证。
7.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软件架构设计规范规范,按照GB/T34590.6—2022的7.5.1;
安全分析报告,按照GB/T34590.6—2022的7.5.2~7.5.3;
软件架构设计的验证报告,按照GB/T34590.6—2022的7.5.4;
7.2.2 支持信息
可考虑下列信息:
软件安全需求规范,按照GB/T34590.6—2022的6.5.1;
软硬件接口规范(细化的),按照GB/T34590.6—2022的6.5.2;
对于软件架构设计规范的审核和评估,应涵盖以下检查项:
表3:软件架构设计规范的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件架构设计规范的开发流程? |
2 | 是否定义了软件架构设计规范的模板且在项目中进行了实施? |
3 | 软件架构设计规范模板是否与已定义的开发流程保持一致? |
4 | 定义的软件架构设计规范模板是否可以覆盖下面列出的评估检查点? |
5 | 是否按照ASIL等级要求定义软件架构的设计标记方法,且满足GB/T34590.6-2022,表2的要求? |
6 | 软件架构设计的描述是否满足如下特征?
|
7 | 软件架构设计的开发是否满足如下要求:
|
8 | 是否定义软件架构设计的原则,且满足GB/T34590.6-2022,表3的要求? |
9 | 软件架构设计是否被开发到可以识别软件单元的程度且继承了相应的软件安全需求?软件单元是否按照分配给它的最高安全ASIL 等级进行的开发? |
10 | 软件架构设计规范是否包含了静态设计和动态设计? |
11 | 如果架构设计中复用了一个不满足功能安全开发的软件架构要素,是否对该软件架构要素进行了组件鉴定并满足GB/T34590.8-2022,第12章的要求? |
12 | 如果架构设计要素被分配了不同的ASIL等级,该软件架构要素是否符合GB/T34590.9-2022, 第六章定义的共存准则或按照了最高ASIL 等级要求进行了开发? |
13 | 软件架构设计如进行了软件分区,是否实现了软件组件间免于干扰且确保满足如下要求?
|
14 | 是否对软件架构进行了安全导向分析?安全导向分析的结果是否满足如下要求: a)提供软件的适用性证据证明具备了相应的ASIL等级要求所需的特定的安全相关的功能和特性; b)识别或确认软件的安全相关部分;及 C)支持安全措施的定义并验证其有效性。 |
15 | 如果软件安全要求的实现依赖于软件组件间免于干扰或足够的独立性,检查是否按照GB/T34590.9,第七章进行了相关失效及其影响分析? |
16 | 是否对安全分析的结果进行了处理?是否在架构设计中采用了错误探测和错误处理的安全机制? |
17 | 是否对嵌入式软件所需资源进行了上限预估,包括:
|
18 | 是否基于GB/T 34590.8-XXXX,第9章执行了软件架构设计的验证?软件架构设计的验证方法是否按照GB/T34590.6-2022,表4的要求进行,为下列目标提供证据?
与设计指南保持一致; |
审核和评估软件单元设计和软件实现,以提供证据证明:
- 软件单元设计和实现满足了所有的软件安全需求;
- 软件源代码实现了软件详细设计规范
- 软件设计实现了软硬件接口规范
- 软件设计有充分的资源支撑预期的功能和特征,避免非预期的功能和特征
- 软件设计实现了安全分析中得出的安全措施
8.2 审核和评估的输入
8.2.1 前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软件单元设计规范,按照GB/T34590.6—2022的8.5.1
软件单元实现,按照GB/T34590.6—2022的8.5.2
8.2.2 支持信息
可考虑下列信息:
xxxx,按照GB/T34590.x—2022的xxx
xxxx,按照GB/T34590.x—2022的xxx
对于软件单元设计及实现的审核和评估,应涵盖以下检查项:
表4:软件单元设计及实现的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件单元设计及实现的开发流程? |
2 | 是否定义了软件单元设计及实现的模板且在项目中进行了实施? |
3 | 软件单元设计及实现模板是否与已定义的开发流程保持一致? |
4 | 定义的软件单元设计及实现模板是否可以覆盖下面列出的评估检查点? |
5 | 软件单元设计是否与软件需求和软件架构设计保持了一致性和追溯性? |
6 | 软件单元设计是否符合软硬件接口规范(如果适用) |
7 | 软件单元设计的标记方法是否使用了GB/T34590.6,表5中要求的对应ASIL等级推荐的标记方法? |
8 | 软件单元的定义是否将功能表现和内部设计描述到必要的细节程度以支持其实现? |
9 | 软件单元设计和实现的设计是否满足了以下原则: a) 基于软件架构设计,软件单元内的子程序和函数执行的正确次序; b) 软件单元间接口的一致性; c) 软件单元内和软件单元间的数据流及控制流的正确性; d) 简单性; e) 可读性和可理解性; f) 鲁棒性; |
10 | 软件单元设计是否符合GB/T34590.6,表6中要求的对应ASIL等级推荐的设计原则? |
审核和评估软件单元测试规范、单元测试报告,以提供证据证明:
- 提供证据证明软件单元设计满足分配的软件要求且适合于实施;
- 验证由软件单元模块、函数层面的相关失效分析和安全分析得出的已定义的安全措施得到适当实施;
- 提供证据证明软件单元、函数符合软件单元设计与根据所需的ASIL等级分配的软件要求;
- 提供充分证据,证明单元不包含与功能安全相关的非预期功能和特性。
9.2.1 前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软硬件接口规范, 按照GB/T34590.6—2017 6.5.2;
软件验证计划, 按照GB/T34590.6—2017 6.5.3
软件验证规范, 按照GB/T34590.6—2017 9.4.2和9.4.4~9.4.6
安全计划, 按照GB/T34590.6—2017 7.5.2
嵌入式软件,按照GB/T34590.6—2022的10.4.1
软件单元设计规范, 按照GB/T34590.6—2017 8.5.1
软件单元实现,按照GB/T34590.6—2017 8.5.2
软件验证报告,按照GB/T34590.6—2017 8.5.3。
9.2.2 支持信息
可考虑下列信息:
工具应用指南,按照5.5.4及方法应用指南(来自外部)。
对于软件单元测试的审核和评估,应涵盖以下检查项:
表5:软件单元测试的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件单元测试的开发流程? |
2 | 是否定义了软件单元测试的模板且在项目中进行了实施? |
3 | 软件单元测试模板是否与已定义的开发流程保持一致? |
4 | 定义的软件单元测试模板是否可以覆盖下面列出的评估检查点? |
5 | 是否基于GB/T34590-6,第9章在同一开发流程中同时考虑了软件安全要求和所有非安全相关要求,以验证单个软件单元设计?” 是否编制了软件单元设计规范,且建立软件单元测试流程,并按照该流程执行了测试?
|
6 | 是否按照GB/T34590-8,第9章要求,对已制定的单元验证计划进行了验证?验证中发现的问题是否均已关闭? 注:验证方法包括了测试,也包括评审,分析,可参见表7 软件单元验证方法 |
7 | 是否按照GB/T34590-6,第9章要求确定了单元验证方法的合理组合?选择的单元验证方法组合是否与单元设计与实现中的ASIL定义保持一致?选择的软件单元验证方法是否与标准推荐ASIL保持一致?未使用及不适用的方法是否提供了合理理由? |
8 | 是否按照GB/T34590-6,第9章要求得到单元验证用例?选择的单元验证用例开发方法是否与软件单元设计与实现(软件详细设计)中的ASIL定义保持一致? |
9 | 是否按照GB/T34590-6第9章要求确定了软件验证的结构覆盖率?软件单元验证的结构覆盖率是否与单元设计与实现中的ASIL定义保持一致?软件单元验证结构覆盖率是否与标准推荐ASIL保持一致?测试结果是否能够提供证据说明单元验证活动满足已定义的软件单元设计及实现(软件详细设计)层级的结构覆盖度? |
10 | 是否按要求对软件单元验证过程中所有的Bug进行了管理,并跟踪至关闭? |
11 | 是否对通过软件单元验证的软件范围进行了分析,其是否包含全部定义的功能和性能,对于未定义的功能,是否评估了风险或执行了解决措施? |
12 | 是否对软件单元验证环境进行了分析?如果软件单元环境与目标环境不一致,是否给出了对应措施? |
为了开展本章规定的审核和评估,应具备如下输入:
审核和评估软件验证规范、嵌入式软件和软件验证报告,以提供证据证明:
- 定义集成步骤并集成软件要素,直至嵌入式软件完全集成;
- 验证由软件架构层面的安全分析得出的已定义的安全措施得到适当实施;
- 提供证据证明集成的软件单元和集成的软件组件符合软件架构设计的要求;
- 提供充分证据,证明集成软件不包含与功能安全相关的非预期功能和特性。
10.2 审核和评估的输入
为了开展本章规定的审核和评估,应具备如下输入:
软件验证规范,按照GB/T34590.6—2022的10.4.2~10.4.7
嵌入式软件,按照GB/T34590.6—2022的10.4.1
软件验证报告,按照GB/T34590.6—2022的10.4.2
可考虑下列信息:
软硬件接口规范(细化的),按照GB/T34590.6—2022的6.5.2;
软件架构设计规范,按照GB/T34590.6—2022的7.5.1;
安全分析报告,按照GB/T34590.6—2022的7.5.2;
相关失效分析报告,按照GB/T34590.6—2022的7.5.3;
软件单元实现,按照GB/T34590.6—2022的8.5.2;
配置数据,按照GB/T34590.6—2022的C.5.3;
标定数据,按照GB/T34590.6—2022的C.5.4;
软件开发环境文档,按照GB/T34590.6—2022的5.5.1;
软件验证规范,按照GB/T34590.6—2022的9.5.1;
经鉴定合格的软件组件,按照GB/T 34590.8-2022的第12章
对于软件集成和验证的审核和评估,应涵盖以下检查项:
表6:软件集成和验证的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了软件集成和验证的开发流程? |
2 | 是否定义了软件集成和验证的模板且在项目中进行了实施? |
3 | 软件集成和验证的模板是否与已定义的开发流程保持一致? |
4 | 定义的软件集成和验证的模板是否可以覆盖下面列出的评估检查点? |
5 | 是否基于GB/T34590-6第10章要求,定义了软件集成方法和策略? |
6 | 是否按照GB/T34590-6第10章要求,通过表10软件集成验证方法确定了软件集成及验证方法的合理组合? |
7 | 针对已选择的软件集成及验证方法,是否有相关内容说明相应的软件集成及验证活动执行符合要求? |
8 | 是否正确执行了软件集成及验证?验证中发现的问题是否均已关闭? |
9 | 是否按照GB/T34590-6第10章表11软件集成测试用例的得出方法要求开发了软件集成测试用例? |
10 | 是否按照GB/T34590-6第10章要求确定了测试用例在软件架构层级的需求覆盖率和结构覆盖率(包括函数覆盖率和调用覆盖率)? |
11 | 是否对通过软件集成及验证的软件范围进行了验证,其是否包含全部定义的功能和性能,对于未定义的功能,是否评估了风险或执行了解决措施? |
12 | 是否对软件集成测试及验证环境进行了分析?如果软件集成测试及验证环境与目标环境不一致,是否进行分析并给出了对应措施? |
审核和评估软件验证规范和软件验证报告,以提供证据证明嵌入式软件:
- 在目标环境执行时满足安全相关要求;
- 不包含与功能安全相关的非预期功能和特性。
11.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
软件验证规范,按照GB/T34590.6—2022的11.4.1~11.4.3
软件验证报告,按照GB/T34590.6—2022的11.4.1~11.4.4
11.2.2 支持信息
可考虑下列信息:
软件架构设计规范,按照GB/T34590.6—2022的7.5.1;
软件安全需求规范,按照GB/T34590.6—2022的6.5.1;
嵌入式软件,按照GB/T34590.6—2022的10.5.2;
标定数据,按照GB/T34590.6—2022的C.5.4;
软件开发环境文档,按照GB/T34590.6—2022的5.5.1;
软件验证规范(细化的),按照GB/T34590.6—2022的10.5.1
技术安全概念,按照GB/T 34590.4-2022的6.5.2;
系统架构设计规范,按照GB/T 34590.4-2022的6.5.3;
集成和测试策略,按照GB/T 34590.4-2022的7.5.1;
集成和测试报告,按照GB/T 34590.4-2022的7.5.2
对于嵌入式软件测试的审核和评估,应涵盖以下检查项:
表7:嵌入式软件测试的审核和评估检查清单
序号 | 审核和评估要求 |
1 | 是否定义了嵌入式软件测试的开发流程? |
2 | 是否定义了嵌入式软件测试的模板且在项目中进行了实施? |
3 | 嵌入式软件测试的模板是否与已定义的开发流程保持一致? |
4 | 定义的嵌入式软件测试的模板是否可以覆盖下面列出的评估检查点? |
5 | 是否基于GB/T34590-6第11章要求,制定了嵌入式软件测试策略? |
6 | 是否按照GB/T34590-6第11章表13用于执行软件测试的测试环境要求,确定了嵌入式软件测试的测试环境? |
7 | 是否按照GB/T34590-6第11章表14嵌入式软件的测试方法要求,确定了嵌入式软件测试方法的合理组合? |
8 | 针对已选择的嵌入式软件测试方法,是否有相关内容说明相应的嵌入式软件测试活动执行符合要求? |
9 | 是否按照GB/T34590-6第11章表15嵌入式软件测试用例的得出方法要求,开发了嵌入式软件测试用例? |
10 | 是否正确执行了嵌入式软件测试?测试中发现的问题是否均已关闭? |
11 | 是否对嵌入式软件测试的测试结果及覆盖率进行了评估? |
12.1目的
审核和评估软件配置,包括配置数据规范、标定数据规范、配置数据、标定数据、验证规范、验证报告、软件架构设计规范和软件开发环境文档,以提供证据证明软件配置:
- 满足不同应用的软件行为变化的可控性;
- 证明配置数据和标定数据满足所需的ASIL等级要求;
- 证明专用嵌入式软件及其标定数据适合生产发布。
12.2审核和评估的输入
为了开展本章规定的审核和评估,应具备如下输入:
前提条件按照应用软件配置的相关阶段。
可考虑下列信息:
应用软件配置的相关阶段中的适用的支持信息。
12.3审核和评估要求
对于软件标定和配置管理的审核和评估,应涵盖以下检查项:
表8:软件标定和配置管理的审核和评估检查清单
序号 | 审核评估要求 |
1 | 是否定义了软件配置的验证流程? |
2 | 是否定义了软件配置的模板且在项目中进行了实施? |
3 | 软件配置模板是否与已定义的开发流程保持一致? |
4 | 定义的软件配置模板是否可以覆盖下面列出的评估检查点? |
5 | 是否对配置数据进行了定义?
|
6 | 配置数据及其规范是否能够提供证据证明以下内容?
d) 配置数据与其他配置数据的兼容性; |
7 | 是否规定了配置数据的ASIL等级应等于应用于该数据的可配置软件的最高ASIL等级? |
8 | 是否按照GB/T 34590-8 2022,第9章定义了对相关项开发中要使用的配置数据集对可配置软件的验证? |
9 | 是否执行了可配置软件的验证?是否关闭问题?
|
10 | 是否定义了与软件组件关联的标定数据以确保配置后软件的正确运行和预期性能?
配置数据和标定数据之间的已知的相互依赖; |
11 | 是否规定了标定数据的ASIL等级应等于其可能违反的软件安全要求的最高ASIL等级? |
12 | 是否按照GB/T 34590-8 2022,第9章定义了如何验证标定数据?
|
13 | 是否按照GB/T 34590-8 2022,第9章定义了用于生产发布的标定数据的验证?是否关闭问题?
|
14 | 是否定义了数据非预期变化的探测机制? 注:具体要求参考GB/T34590-6附录C表C.1 |
15 | 是否定义了标定数据应遵循的流程、生成标定数据的工具和验证标定数据的流程? |
16 | 软件开发环境文档中是否针对软件配置的更新细化内容? |
13.1目的
审核和评估软件工具准则评估报告、软件工具鉴定报告,以提供证据,证明在系统或其软件要素、硬件要素开发中使用的软件工具,适合用于支持GB/T 34590-XXXX要求的活动或任务(即,对那些GB/T 34590-XXXX要求的活动或任务,使用者可依靠软件工具的正确功能)。
13.2审核和评估的输入
13.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
安全计划,按照GB/T34590.2—2022的6.5.3
软件工具准则评估报告,按照GB/T34590.8—2022的11.5.1
软件工具鉴定报告,按照GB/T34590.8—2022的11.5.2
13.2.2 支持信息
可考虑下列信息:
组织专门的功能安全规章和流程,按照GB/T 34590.2-2022的5.5.1;
安全生命周期相关阶段(该阶段使用了软件工具)中适用的前提条件,按照GB/T 34590.8-2022的11.3.2;
预先确定的最大ASIL等级,按照GB/T 34590.8-2022的11.3.2;
软件工具的用户手册(来自外部),按照GB/T 34590.8-2022的11.3.2;
软件工具的环境和约束(来自外部),按照GB/T 34590.8-2022的11.3.2
13.3审核和评估要求
对软件工具鉴定的审核和评估,应涵盖以下检查项:
表9:软件工具鉴定的审核和评估检查清单
序号 | 审核评估要求 |
1 | 是否定义了软件工具鉴定的开发流程? |
2 | 是否定义了软件工具鉴定的模板且在项目中进行了实施? |
3 | 软件工具鉴定模板是否与已定义的开发流程保持一致? |
4 | 定义的软件工具鉴定模板是否可以覆盖下面列出的评估检查点? |
5 | 安全计划中是否基于考虑所使用软件工具的置信度的依据而按照6.4.5.1对某一安全活动进行剪裁?若有,剪裁是否满足GB/T 34590.8-XXXX,第11 章的要求? |
6 | 是否有预先确定的工具在执行其置信度水平评估或鉴定时,独立于特定安全相关项或要素的开发?若有,是否对预先确定的工具置信度水平的有效性或鉴定的有效性进行验证? |
7 | 使用软件工具时,工具的使用、工具定义的环境和功能约束及其一般运行条件是否和工具评估准则或鉴定相符合? |
8 | 是否有对软件工具使用的计划? |
9 | 对软件工具使用的计划中是否包含
f) 如需要,基于确定的置信度水平和ASIL等级的软件工具的鉴定方法。 |
10 | 为了进行软件工具评估,是否收集了软件工具相关信息
f) 在制定软件工具要求的置信度水平过程中,识别出的对软件工具功能异常和相应错误输出的预防或探测措施。 |
11 | 软件工具准则评估报告对软件工具使用的描述是否包含下述信息:
c) 如果适用,使用过程、环境的和功能的约束。 |
12 | 软件工具准则评估报告中是否分析和评估了软件工具的预期使用,以确定:
——当有论据表明没有这样的可能性时,应选择TI1; ——在所有其他情况下应选择TI2。
——当对预防或探测出功能异常及其相应错误输出具有高置信度时,应选择TD1; ——当对预防或探测出功能异常及其相应错误输出具有中等置信度时,应选择TD2; ——在所有其他情况下应选择TD3。 |
13 | 软件工具准则评估报告中是否存在对TI或TD选择的正确性是不清楚的或可疑的?若有是否对TI和TD进行了保守评估? |
14 | 软件工具准则评估报告中基于为TI和TD等级确定的值,是否按照GB/T 34590.8—2022 11.4.5.4表3来确定所要求的软件工具的置信度水平? |
15 | 软件工具鉴定报告中,对鉴定等级为TCL3的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表4列出的方法? |
16 | 软件工具鉴定报告中,对鉴定等级为TCL2的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表5列出的方法? |
17 | 软件工具鉴定报告中,是否包含以下文档化信息?
|
18 | 软件工具鉴定报告中,是否将“使用中积累置信度”的方法用于软件工具的鉴定? |
19 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求:
|
20 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求:
|
21 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求: 使用中积累置信度的论证应仅对所评估的软件工具版本有效。 |
22 | 软件工具鉴定报告中,是否将“工具开发流程评估”的方法用于软件工具的鉴定?若有,是否满足以下要求:
2.应基于恰当的国内或国际标准对软件工具开发流程进行评估,同时提供恰当的软件开发流程被应用的证据。 |
23 | 软件工具鉴定报告中,是否将“软件工具确认”的方法用于软件工具的鉴定?若有,是否满足以下要求: 软件工具的确认应满足以下准则:
|
14.1目的
审核和评估软件组件鉴定定义、软件组件鉴定报告、软件组件鉴定的验证报告,以提供证据,证明在符合GB/T 34590开发的相关项中对软件组件的重复使用是合适的。
14.2审核和评估的输入
14.2.1前提条件
为了开展本章规定的审核和评估,应具备如下输入:
安全计划,按照GB/T34590.2—2022的6.5.3
软件组件鉴定计划,按照GB/T34590.8—2022的12.4.1
软件组件的文档,按照GB/T34590.8—2022的12.5.1
软件组件鉴定报告,按照GB/T34590.8—2022的12.5.2
软件组件鉴定的验证报告,按照GB/T34590.8—2022的12.5.3
可考虑下列信息:
组织专门的功能安全规章和流程,按照GB/T 34590.2-XXXX的5.5.1;
对软件组件的要求(来自外部),按照GB/T34590.8—2022的12.3.1;
软件组件的设计规范(来自外部),按照GB/T34590.8—2022的12.3.2;
先前对软件组件采用的验证措施的结果(来自外部),按照GB/T34590.8—2022的12.3.2;
14.3审核和评估要求
对于软件组件鉴定的审核和评估,应涵盖以下检查项:
表10:软件组件鉴定的审核和评估检查清单
序号 | 审核评估要求 |
1 | 是否定义了软件组件鉴定的开发流程? |
2 | 是否定义了软件组件鉴定的模板且在项目中进行了实施? |
3 | 软件组件鉴定模板是否与已定义的开发流程保持一致? |
4 | 定义的软件组件鉴定模板是否可以覆盖下面列出的评估检查点? |
5 | 安全计划中是否由于软件组件鉴定而按照6.4.5.1 对某一安全活动进行了剪裁?,若有,剪裁是否满足GB/T 34590.8-XXXX,第12 章的要求? |
6 | 安全计划中是否包含对软件组件鉴定计划? |
7 | 软件组件的软件开发过程是否基于适当的国际标准? |
8 | 软件组件的文档是否包括了软件组件的唯一识别? |
9 | 软件组件的文档是否包含当软件组件错误执行时,可能违背的所有安全要求的最高ASIL等级? |
10 | 软件组件的文档是否包括了为鉴定软件组件所应执行的活动? |
11 | 软件组件的文档是否包含以下要求? ・软件组件的要求 ・软件组件预期用途的要求 ・配置描述 ・所需接口、供给接口、共享资源描述(如果适用) ・软件组件集成的描述 ・异常运行条件下的功能反应 ・对已知异常及相应应急措施的描述 |
12 | 是否提供了软件组件的鉴定报告,以证明组件的开发过程符合标准的证据,并记录了论证结果? |
13 | 软件组件鉴定报告是否提供了软件组件的验证结果,以证明符合以下要求,并记录了论证结果? ・分配给软件组件的要求的测试覆盖率应满足GB/T34590.6-XXXX,第9章; ・满足测试用例完整性要求(ASILD适用),结构覆盖率应按照GB/T34590.6-XXXX,第9章来测量; ・既覆盖正常运行条件,也覆盖失效情况下的表现 ・没有导致违背安全要求的已知错误 |
14 | 软件组件鉴定报告是否对软件组件的鉴定进行了记录? |
15 | 对软件组件的鉴定记录中是否包含下述信息:
f) 分配给软件组件的安全要求的最高ASIL等级。 |
16 | 是否按照GB/T34590.8-XXXX,第9章的要求验证了软件组件的鉴定结果,以证明是否对软件组件资质评估结果进行验证? |
(资料性)
软件开发环境的审核和评估示例
软件开发环境的审核和评估的说明及示例,见表A.1。
表A.1 软件开发环境的审核和评估的说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件开发环境的模板且在项目中进行了实施? | 检查软件开发环境文档的模板 |
2 | 软件开发环境模板是否与已定义的开发流程保持一致? | 检查软件开发环境文档和流程之间的一致性 |
3 | 定义的软件开发环境模板是否可以覆盖下面列出的评估检查点? | 检查软件开发环境文档的正确性,应至少涵盖检查点4~7的要求 |
4 | 在开发相关项时,使用的软件开发过程和软件开发环境是否适用并满足该相关项要求?
|
|
5 | 在开发相关项时,所应用的设计语言、建模语言或编程语言是否满足以下准则?
|
|
6 | 建模和编码指南是否满足对应的ASIL等级所要求的的通则,以涵盖适合于建模、设计或者编程语言的准则? 注:具体要求参考GB/T34590-6第5章表1 | 检查建模、设计或者编程语言的指南,按照不同ASIL等级应考虑如下准则:
|
(资料性)
软件安全需求规范审核和评估示例
软件安全需求规范审核和评估的说明及示例,见表B.1。
表B.1 软件安全需求规范审核和评估的说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件安全要求的开发流程? | 检查软件安全需求开发流程 |
2 | 是否定义了软件安全要求的模板且在项目中进行了实施? | 检查软件安全需求的模板 |
3 | 软件安全要求模板是否与已定义的开发流程保持一致? | 检查软件安全需求模板和流程之间的一致性 |
4 | 定义的软件安全要求模板是否可以覆盖下面列出的评估检查点? | 检查软件安全需求模板的正确性,应至少涵盖检查点5~13的要求 |
5 | 软件安全要求的得出是否基于安全相关的软件功能和特性?如果嵌入式软件除了执行6.4.1定义的安全要求的功能外,还执行了其他功能,是否按照所应用的质量管理体系的要求提供了这些功能及其特性的规范? | 应对软件功能和特殊特性进行失效分析,软件安全需求应该基于软件安全功能进行定义 示例1:软件安全功能可以是与安全相关硬件要素故障探测、指示和减轻相关的功能(检测EPS电机驱动电路故障并进行安全响应) 示例2:安全的特殊特性包括对错误输入的鲁棒性、不同功能之间的独立性或免于干扰、或软件的容错能力。 |
6 | 软件安全要求的得出是否继承于技术安全需求、技术安全概念和系统架构设计规范?软件安全要求的得出是否包含如下内容:
| 1. 检查软件安全需求和技术安全需求、技术安全概念和系统架构设计规范之间的追溯性和一致性; 2. 检查软件安全需求的属性应包括: 每条需求都有唯一标识、ASIL等级及需求状态 3. 检查不同ASIL等级的软件安全需求的描述方法是否符合GB/T34590.8-2022,第6章,表1的要求(ASIL C/D应选择半形式记法) 示例:
|
7 | 若对软件安全要求进行了ASIL等级分解,其分解原则是否满足GB/T 34590.9-xxxx,第5章的要求? | 检查ASIL等级分解的正确性应符合GB/T 34590.9-xxxx,第5章的要求 示例:GB/T 34590.9附录B |
8 | 软硬件接口规范是否进行了细化,细化程度是否足以支持软件正确控制使用硬件? | 检查软硬件接口规范的细化程度,应描述支持软件正确控制使用硬件; |
9 | 软硬件接口规范是否描述了硬件和软件间每个与安全相关的依赖性? | 检查细化后的软硬件接口规范中对硬件和软件间每个与安全相关的依赖性的描述 |
10 | 是否建立了软件安全要求与技术安全需求及技术安全概念之间的双向追溯性? | 检查软件安全需求和技术安全需求之间的双向追溯性; |
11 | 是否细化后的软硬件接口都定义了对应的验证准则? | 检查是细化后的每条软件接口规范的验证准则,若软硬件接口不可验证,应提供论据说明其合理性 |
12 | 是否为每个软件安全要求制定了验证准则? | 检查是每条软件安全需求的验证准则,若需求不可验证,应提供论据说明需求的合理性 |
13 | 是否基于GB/T 34590.8-xxxx,第6章和第9章执行了软件安全要求、细化后的软硬件接口规范的验证?其验证结果是否能证明如下要求得到了满足?
| 检查软件安全需求的验证方法,不同安全等级等级的需求验证方法应按照GB/T34590.8-2022,第6章,表2进行选择,并给理由 示例1:半形式化验证可以通过FMEA/FTA/SEECA/SW DFA的形式分析安全机制的完整性; 示例2:检查可通过会议、需求检查单等检查软件安全需求; |
附录C
(资料性)
软件架构设计规范审核和评估示例
软件架构设计规范审核和评估说明及示例,见表C.1。
表C.1 软件架构设计规范审核和评估说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件架构设计规范的开发流程? | 检查软件架构设计规范开发流程 |
2 | 是否定义了软件架构设计规范的模板且在项目中进行了实施? | 检查软件架构设计规范的模板 |
3 | 软件架构设计规范模板是否与已定义的开发流程保持一致? | 检查软件架构设计规范的模板和流程之间的一致性 |
4 | 定义的软件架构设计规范模板是否可以覆盖下面列出的评估检查点? | 检查软件安全需求模板的正确性,应至少涵盖检查点5~16的要求 |
5 | 是否按照ASIL等级要求定义软件架构的设计标记方法,且满足GB/T34590.6-2022,表2的要求? | 软件架构设计的标记法根据不同的ASIL等级进行选择,需满足表2的要求,对于A/B的应使用非形式记法和自然语言结合的描述方式,对于C/D的,应使用半形式记法和自然语言结合的描述方法: 示例:半形式记法可以使用UML、SysML、simulink或stateflow的建模; 非形式记法:图片、图表 |
6 | 所选择软件架构设计标记方法是否支持软件架构设计的描述满足如下特征;
| 检查软件架构设计规范的描述应可理解、简单可维护、可验证、模块化设计、一致性、抽象性及封装性。 示例:软件架构设计可参考使用AUTOSAR架构设计 |
7 | 软件架构设计的开发是否满足如下要求:
| 检查软件架构设计应和软件安全需求之间建立双向追溯性,且软件架构设计是可实现及可测试的 |
8 | 是否定义软件架构设计的原则,且满足GB/T34590.6-2022,表3的要求? | 1.检查定义的软件架构设计原则,满足表3针对不同安全等级的要求; 2.应给出理由证明不选用时表中给予++号推荐的原则的合理性; 示例1:限制组件的规模和复杂度:可以限制函数的规模; 示例2:限制接口规模:可以限制函数参数变量的个数、可以限制返回出口的数量; 示例3:软件组件的适当空间隔离: MPU分区 |
9 | 软件架构设计是否被开发到可以识别软件单元的程度且继承了相应的软件安全需求?软件单元是否按照分配给它的最高安全ASIL 等级进行的开发? | 检查软件安全需求和软件单元之间的双向追溯性; 检查软件单元的安全等级应继承所分配给其安全需求中的最高安全等级 |
10 | 软件架构设计规范是否包含了静态设计和动态设计? | 检查软件架构的静态设计和动态设计内容 示例1:静态设计可包括:
示例2:动态设计可包括:
|
11 | 如果架构设计中复用了一个不满足功能安全开发的软件架构要素,是否对该软件架构要素进行了组件鉴定并满足GB/T34590.8-2022,第12张章的要求? | 复用不满足安全等级要求开发的软件架构要素时应进行软件组件鉴定且满足GB/T34590.8-2022,第12张章的要求 |
12 | 如果嵌入式软件不得不实现不同ASIL等级的软件组件,或实现安全相关或非安全相关的软件组件,软件组件是否符合GB/T34590.9-2022, 第六章定义的共存准则或按照了最高ASIL 等级要求进行了开发? | 检查不同安全等级的软件组件之间的共存原则。 示例1:不同安全等级的软件组件共存条件可以是:
|
13 | 软件架构设计如进行了软件分区,是否实现了软件组件间免于干扰且确保满足如下要求?
| 检查软件分区设计的原则,应保证软件组件之间免于干扰。 示例1:一个软件分区不能改变其他软件分区的代码或数据; 示例2:存储器保护单元等硬件特性; 示例3:软件分区应按照分区内组件的最高ASIL等级进行开发; 示例4:软件集成测试应提供软件分区有效性的证据 示例:GB/T34590.6-2022,附录D |
14 | 是否对软件架构进行了安全导向分析?安全导向分析的结果是否满足如下要求:
| 检查安全架构的软件安全分析,并检查安全分析结果满足该检查点所列的要求 示例:GB/T34590.6-2022,附录E |
15 | 如果软件安全要求的实现依赖于软件组件间免于干扰或足够的独立性,检查是否按照GB/T34590.9,第七章进行了相关失效及其影响分析? | 如果软件安全要求的实现依赖于软件组件间免于干扰或足够的独立性,,应检查DFA分析,且分析结果应满足该检查点所列的要求; 示例:GB/T34590.6-2022,附录E |
16 | 是否对安全分析的结果进行了处理?是否在架构设计中采用了错误探测和错误处理的安全机制? | 检查安全分析的结果应在软件架构设计中进行体现,软件架构设计中应包含错误探测和错误处理的安全机制; 示例1:用于错误探测的安全机制可包括:
示例2: 用于错误处理的安全机制可能包括:
|
17 | 是否对嵌入式软件所需资源进行了上限预估,包括:
| 检查软件的所需资源上限预估策略 示例1:评估存储堆和栈的RAM及存储程序和非易失性数据的ROM资源占用上限; 示例2:评估程序运行的最长时间; 示例3:评估通讯的负载率 |
18 | 是否基于GB/T 34590.8-XXXX,第9章执行了软件架构设计的验证?软件架构设计的验证方法是否按照GB/T34590.6-2022,表4的要求进行,为下列目标提供证据:
|
|
(资料性)
软件单元设计及实现的审核和评估示例
软件单元设计及实现的审核和评估示例,见表D.1。
表D.1 软件单元设计及实现的审核和评估示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件单元设计及实现的开发流程? | 检查软件单元设计及实现开发流程 |
2 | 是否定义了软件单元设计及实现的模板且在项目中进行了实施? | 检查软件单元设计及实现的模板和规范 |
3 | 软件单元设计及实现的活动是否与已定义的开发流程保持一致? | 检查软件单元设计及实现的模板和流程之间的一致性 |
4 | 定义的软件单元设计及实现是否可以覆盖下面列出的评估检查点? | 检查软件单元设计及实现的正确性,应至少涵盖检查点5~9的要求 |
5 | 软件单元设计是否与软件需求和软件架构设计保持了一致性和追溯性? | 软件需求的ID被相关的软件单元承接,软件单元设计是具体的软件架构模块的分解和细化。相关追溯关系通过需求管理ALM工具、架构设计工具和Git进行了链接。 |
6 | 软件单元设计是否符合软硬件接口规范(如果适用) | |
7 | 软件单元设计的标记方法是否使用了GB/T34590.6,表5中要求的对应ASIL等级推荐的标记方法? | 软件单元设计使用了“ASCET/Simulink”等工具开展,并且有规范的设计原则和命名规则等确保了软件单元设计满足半形式的标记方法。 |
8 | 软件单元的定义是否将功能表现和内部设计描述到必要的细节程度以支持其实现? | 软件单元设计使用了“ASCET/Simulink”等工具开展,以支持后续C-code的实现。 |
9 | 软件单元设计和实现的设计是否满足了以下原则: a) 基于软件架构设计,软件单元内的子程序和函数执行的正确次序; b) 软件单元间接口的一致性; c) 软件单元内和软件单元间的数据流及控制流的正确性; d) 简单性; e) 可读性和可理解性; f) 鲁棒性; | GB/T34590.6-2022, 8.4.5的相关单元设计的原则定义在 “xxx- Guideline _ Software _ Development _ Strategy.docx”文件中,xx项目对应的软件单元存在Git,在ASCET/Matlab或者Word中实行,满足了“xxx- Guideline _ Software _ Development _ Strategy.docx”中定义的单元设计的原则。 |
10 | 软件单元设计是否符合GB/T34590.6,表6中要求的对应ASIL等级推荐的设计原则? | GB/T34590.6-2022, 8.4.5的相关单元设计的要求和方法定义在 “xxx- Guideline _ Software _ Development _ Strategy.docx”文件中,xx项目对应的软件单元存在Git,在ASCET/Matlab或者Word中实行,满足了“xxx- Guideline _ Software _ Development _ Strategy.docx”中定义的单元设计的要求和方法,以满足后续C-code的实现。 |
附录E
(资料性)
软件单元测试审核和评估示例
软件单元测试审核和评估说明及示例,见表E.1。
表E.1 软件单元测试审核和评估说明及示例
审核和评估要求 | 评估示例及说明 | |
1 | 是否定义了软件单元测试的开发流程? | 检查软件单元测试的开发流程 |
2 | 是否定义了软件单元测试的模板且在项目中进行了实施? | 检查软件单元测试的模板和规范 |
3 | 软件单元测试模板是否与已定义的开发流程保持一致? | 检查软件单元测试的模板和流程之间的一致性 |
4 | 定义的软件单元测试模板是否可以覆盖下面列出的评估检查点? | 检查软件单元测试正确性、合理性等,应至少涵盖检查点5~12的要求 |
5 | 是否基于GB/T34590-6,第9章在同一开发流程中同时考虑了软件安全要求和所有非安全相关要求,以验证单个软件单元设计?” 是否编制了软件单元设计规范,且建立软件单元测试流程,并按照该流程执行了测试?
| 检查软件测试对象,软件单元划分,确认软件单元设计满足分配的软件要求,软件单元测试验证了软件详细设计。 检查软件测试计划评审记录,是否使用审查的评审方法,评审问题是否形成闭环? 检查软件单元测试层级的追溯的实现工具、追溯矩阵、覆盖率等相关资料。 检查软件测试用例是否基于知识与经验的故障猜测建立,是否使用了功能安全要求的开发方法?是否通过评审,评审问题形成闭环? 检查软件代码是否符合MISRA 及企业自己的编码规范检? 静态分析方法、工具、步骤,圈复杂度要求是否满足? 动态测试方法、工具、步骤是否满足要求? 检查软件单元验证Bug管理流程 检查软件单元验证结束后退出准则要求 |
6 | 是否按照GB/T34590-8,第9章要求,对已制定的单元验证计划进行了验证?验证中发现的问题是否均已关闭? 注:验证方法包括了测试,也包括评审,分析,可参见表7 软件单元验证方法 | 检查测试计划、测试报告,测试不符合整改办法,整改后是否执行了回归测试等? |
7 | 是否按照GB/T34590-6,第9章要求确定了单元验证方法的合理组合?选择的单元验证方法组合是否与单元设计与实现中的ASIL定义保持一致?选择的软件单元验证方法是否与标准推荐ASIL保持一致?未使用及不适用的方法是否提供了合理理由? | 检查单元测试的确认评审检查单及记录 软件单元验证方法是否是基于GB/T34590.6-2022, 9.4.2 表7要求的基于ASIL等级的验证方法的组合。未选用的验证方法是否有合适的理由。 |
8 | 是否按照GB/T34590-6第9章要求得到单元验证用例?选择的单元验证用例开发方法是否与软件单元设计与实现(软件详细设计)中的ASIL定义保持一致? | 软件单元测试的测试用例是否依照GB/T34590.6-2022, 9.4.3 表8的要求基于ASIL等级得出并检查单元测试用例评审检查单及记录 |
9 | 是否按照GB/T34590-6第9章要求确定了软件验证的结构覆盖率?软件单元验证的结构覆盖率是否与单元设计与实现中的ASIL定义保持一致?软件单元验证结构覆盖率是否与标准推荐ASIL保持一致?测试结果是否能够提供证据说明单元验证活动满足已定义的软件单元设计及实现(软件详细设计)层级的结构覆盖度? | 需要确定软件单元验证的覆盖率,需求覆盖率尽量做到全覆盖,如果的确有无法覆盖的需求,需要说明理由 应按照GB/T34590.6-2022, 9.4.4 表9中列出的度量对结构覆盖率进行测定,如果认为已实现的结构覆盖率不充分,应定义额外的测试用例或提供基于其他方法的理由。对于设计及实现覆盖度指标,建议采用工具分析获得。对于无法达成的指标要求,需要说明理由。 |
10 | 是否按要求对软件单元验证过程中所有的Bug进行了管理,并跟踪至关闭? | 检查软件缺陷Bug管理记录 需要针对软件单元测试工作进行总结,明确软件验证是否完成 测试中所有的问题需要被记录、跟踪,直至关闭。对于遗留的问题,需要进行评估,确保不影响后续的验证活动,且符合已定义的单元测试结束准则 |
11 | 是否对通过软件单元验证的软件范围进行了分析,其是否包含全部定义的功能和性能,对于未定义的功能,是否评估了风险或执行了解决措施? | 检查软件单元测试策略 需要建立软件单元设计及实现和软件单元测试的追溯关系,确保软件单元测试覆盖了单元设计及实现的所有内容,没有与软件单元设计及实现无关的测试内容 需要建立软件单元设计及实现和软件单元测试的追溯关系,确保软件单元测试覆盖了单元设计及实现的所有内容,没有与软件单元设计及实现无关的测试内容 |
12 | 是否对软件单元验证环境进行了分析?如果软件单元环境与目标环境不一致,是否给出了对应措施? | 软件单元测试可在不同环境中进行,例如:MIL、SIL、PIL、HIL? 需要明确软件单元测试的测试环境和工具,记录相关的配置信息 如果软件单元测试与目标环境不一致,需要分析差异,定义在目标环境下的附加测试。 |
(资料性)
软件集成和验证的审核和评估示例
软件集成和验证的审核和评估说明及示例,见表F.1。
表F.1 软件集成和验证的审核和评估说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件集成和验证的开发流程? | 检查软件集成和验证流程 |
2 | 是否定义了软件集成和验证的模板且在项目中进行了实施? | 检查软件集成和验证的模板 |
3 | 软件集成和验证的模板是否与已定义的开发流程保持一致? | 检查软件集成和验证的模板和流程之间的一致性 |
4 | 定义的软件集成和验证的模板是否可以覆盖下面列出的评估检查点? | 检查软件集成和验证模板的正确性,应至少涵盖检查点5~14的要求 |
5 | 是否基于GB/T34590-6第10章要求,定义了软件集成方法和策略? | 定义软件集成方法和步骤可考虑以下内容:
定义软件集成测试策略可考虑以下内容:
|
6 | 是否按照GB/T34590-6第10章要求,通过表10软件集成验证方法确定了软件集成及验证方法的合理组合? |
|
7 | 针对已选择的软件集成及验证方法,是否有相关内容说明相应的软件集成及验证活动执行符合要求? |
|
8 | 是否正确执行了软件集成及验证?验证中发现的问题是否均已关闭? |
|
9 | 是否按照GB/T34590-6第10章表11软件集成测试用例的得出方法要求开发了软件集成测试用例? |
注:具体要求参考GB/T34590-6第10章表11 |
10 | 是否按照GB/T34590-6第10章要求确定了测试用例在软件架构层级的需求覆盖率和结构覆盖率(包括函数覆盖率和调用覆盖率)? |
注:具体要求参考GB/T34590-6第10章表12 |
11 | 是否对通过软件集成及验证的软件范围进行了验证,其是否包含全部定义的功能和性能,对于未定义的功能,是否评估了风险或执行了解决措施? |
|
12 | 是否对软件集成测试及验证环境进行了分析?如果软件集成测试及验证环境与目标环境不一致,是否进行分析并给出了对应措施? |
|
(资料性)
嵌入式软件测试的审核和评估的示例
嵌入式软件测试的审核和评估的示例,见表G.1。
表G.1 嵌入式软件测试的审核和评估说明及示例
序号 | 要求对应的checklist | 评估示例及说明 |
1 | 是否定义了嵌入式软件测试的开发流程? | 检查嵌入试软件测试流程 |
2 | 是否定义了嵌入式软件测试的模板且在项目中进行了实施? | 检查嵌入式软件测试的模板 |
3 | 嵌入式软件测试的模板是否与已定义的开发流程保持一致? | 检查嵌入式软件测试的模板和流程之间的一致性 |
4 | 定义的嵌入式软件测试的模板是否可以覆盖下面列出的评估检查点? | 检查嵌入式软件测试模板的正确性,应至少涵盖检查点5~11的要求 |
5 | 是否基于GB/T34590-6第11章要求,制定了嵌入式软件测试策略? | 定义嵌入式软件测试策略可考虑以下内容:
|
6 | 是否按照GB/T34590-6第11章表13用于执行软件测试的测试环境要求,确定了嵌入式软件测试的测试环境? |
注:具体要求参考GB/T34590-6第11章表13 |
7 | 是否按照GB/T34590-6第11章表14嵌入式软件的测试方法要求,确定了嵌入式软件测试方法的合理组合? |
注:具体要求参考GB/T34590-6第11章表14 |
8 | 针对已选择的嵌入式软件测试方法,是否有相关内容说明相应的嵌入式软件测试活动执行符合要求? |
|
9 | 是否按照GB/T34590-6第11章要求,开发了嵌入式软件测试用例? |
注:具体要求参考GB/T34590-6第11章表15 |
10 | 是否正确执行了嵌入式软件测试?测试中发现的问题是否均已关闭? |
|
11 | 是否对嵌入式软件测试的测试结果及覆盖率进行了评估? |
|
附录H
(资料性)
软件标定和配置管理的审核和评估示例
软件标定和配置管理的审核和评估示例,见表H.1。
表H.1 软件标定和配置管理的审核和评估说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件配置的验证流程? | 检查软件配置开发流程 |
2 | 是否定义了软件配置的模板且在项目中进行了实施? | 检查软件配置的模板 |
3 | 软件配置模板是否与已定义的开发流程保持一致? | 检查软件配置的模板和流程之间的一致性 |
4 | 定义的软件配置模板是否可以覆盖下面列出的评估检查点? | 检查软件配置模板的正确性,应至少涵盖检查点5~16的要求 |
5 | 是否对配置数据进行了定义?
|
STD_OFF:关 STD_ON:开 |
6 | 配置数据及其规范是否能够提供证据证明以下内容?
|
|
7 | 是否规定了配置数据的ASIL等级应等于应用于该数据的可配置软件的最高ASIL等级? |
|
8 | 是否按照GB/T 34590-8 2022,第9章定义了对相关项开发中要使用的配置数据集对可配置软件的验证? | 1.其行为依赖于配置数据的那部分嵌入式软件要针对配置数据集进行验证; |
9 | 是否执行了可配置软件的验证?是否关闭问题?
| 在进行可配置软件的验证时,可通过如下任意一种方式实现:
|
10 | 是否定义了与软件组件关联的标定数据以确保配置后软件的正确运行和预期性能?
|
|
11 | 是否规定了标定数据的ASIL等级应等于其可能违反的软件安全要求的最高ASIL等级? |
|
12 | 是否按照GB/T 34590-8 2022,第9章定义了如何验证标定数据?
|
|
13 | 是否按照GB/T 34590-8 2022,第9章定义了用于生产发布的标定数据的验证?是否关闭问题?
|
|
14 | 是否定义了数据非预期变化的探测机制? 注:具体要求参考GB/T34590-6附录C表C.1 | 对于不同ASIL等级的软件组件/软件单元的标定数据,应按照其等级,检查是否使用如下方法探测安全相关的标定数据的非预期变化,
|
15 | 是否定义了标定数据应遵循的流程、生成标定数据的工具和验证标定数据的流程? |
|
16 | 软件开发环境文档中是否针对软件配置的更新细化内容? | 1.在软件配置时需要按照上述5-15要求进行明确细化软件开发环境文档,将最初始不明确的地方进行完善。 |
(资料性)
软件工具鉴定审核和评估示例
软件工具鉴定审核和评估示例,见表I.1。
表I.1 软件工具鉴定审核和评估示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件工具鉴定的开发流程? | 检查软件工具的鉴定开发流程 |
2 | 是否定义了软件工具鉴定的模板且在项目中进行了实施? | 检查软件工具鉴定的模板 |
3 | 软件工具鉴定模板是否与已定义的开发流程保持一致? | 检查软件工具鉴定的模板和流程之间的一致性 |
4 | 定义的软件工具鉴定模板是否可以覆盖下面列出的评估检查点? | 检查软件工具鉴定模板的正确性 |
5 | 安全计划中是否基于考虑所使用软件工具的置信度的依据而按照6.4.5.1对某一安全活动进行剪裁?若有,剪裁是否满足GB/T 34590.8-XXXX,第11 章的要求? | 检查安全计划中是否由于软件工具鉴定而对某一安全活动进行了剪裁 |
6 | 是否有预先确定的工具在执行其置信度水平评估或鉴定时,独立于特定安全相关项或要素的开发?若有,是否对预先确定的工具置信度水平的有效性或鉴定的有效性进行验证? | 检查安全计划中是否包含对软件组件鉴定计划 |
7 | 使用软件工具时,工具的使用、工具定义的环境和功能约束及其一般运行条件是否和工具评估准则或鉴定相符合? | 检查使用软件工具时,工具的使用、工具定义的环境和功能约束及其一般运行条件是否和工具评估准则或鉴定相符合? |
8 | 是否有对软件工具使用的计划? | 检查是否有对软件工具使用的计划 |
9 | 对软件工具使用的计划中是否包含
f) 如需要,基于确定的置信度水平和ASIL等级的软件工具的鉴定方法。 | 检查对软件工具使用的计划中是否包含GB/T 34590.8—2022 11.4.4.1要求的内容
示例1:通过设定编译器开关和C源文件中“#pragma”声明,定义编译器的配置。
注1:在开展安全生命周期活动时,使用案例可以描述用户与软件工具的配合和软件工具功能的应用子集。 注2:使用案例可包含对软件工具配置及软件工具执行环境的要求。
示例2:执行软件工具所需的资源、基础设施或运行时环境,应用软件工具所需的流程活动或与软件工具输出结果验证相关的后续流程活动。
注3:可根据特定开发确定最高ASIL等级,或可根据软件工具通用的用法确定最高ASIL等级。在预先假定ASIL等级的情况下,对该假设进行验证。 |
10 | 为了进行软件工具评估,是否收集了软件工具相关信息
f) 在制定软件工具要求的置信度水平过程中,识别出的对软件工具功能异常和相应错误输出的预防或探测措施。 | 检查为了进行软件工具评估,是否收集了软件工具相关信息
示例1:异常运行条件可以是禁止的编译开关组合、不符合用户手册的环境或不正确的安装。 示例2:异常运行条件下期望的表现可以是对输出生成的阻止、用户提示或用户报告。
示例3:针对已知的功能异常、编译器编码优化局限或建模中使用受限制的一组构件的使用指南或应急措施。 示例4:安全保护包括通过使用约束防止全部已知的功能异常和问题、探测和报告全部已知的功能异常和问题,也包括提供安全替代技术以开展相应的活动。
注1:相应错误输出的预防或探测措施可针对软件工具输出中的已知和潜在错误。 示例5:冗余软件工具输出的对比、执行的测试、静态分析或评审、软件工具日志文件的分析、具有已知问题的功能的避免。 |
11 | 软件工具准则评估报告对软件工具使用的描述是否包含下述信息:
c) 如果适用,使用过程、环境的和功能的约束。 | 检查软件工具准则评估报告对软件工具使用的描述是否包含下述信息
示例1:功能的模拟、源代码的生成、嵌入式软件的测试、安全生命周期的裁剪、GB/T 34590要求的活动和任务的简单化或自动化。
示例2:后续开发活动输入所需的数据、源代码、模拟结果、测试结果、或GB/T 34590的其他工作成果。
示例3:软件工具嵌入到开发过程、不同软件工具使用共享数据及其他使用条件、预防或探测软件工具的功能异常的流程措施。 |
12 | 软件工具准则评估报告中是否分析和评估了软件工具的预期使用,以确定:
——当有论据表明没有这样的可能性时,应选择TI1; ——在所有其他情况下应选择TI2。
——当对预防或探测出功能异常及其相应错误输出具有高置信度时,应选择TD1; ——当对预防或探测出功能异常及其相应错误输出具有中等置信度时,应选择TD2; ——在所有其他情况下应选择TD3。 | 软件工具准则评估报告中是否分析和评估了软件工具的预期使用。 注1:预防或探测可通过流程步骤、任务或软件工具的冗余、或软件工具自身的合理性检查完成。 注2:如果具备的开发流程中没有系统性措施,则典型适用TD3,为此,仅能随机探测出软件工具的功能异常及其相应错误输出。 注3:如果用一个软件工具验证另一软件工具的输出,当评估这一软件工具时,考虑软件工具间的相互依赖性,为该软件工具选择一个充分的TD。例如,工具之间可能因使用了公共组件或者共享资源而存在相互依赖性。 注4:此使用分析的详细程度仅需要允许恰当的确定TI和TD的等级。 示例1:在按照GB/T 34590对产生的源代码进行验证的情况下,为代码生成器选择TD1。当不对产生的源代码进行验证时,为代码生成器选择TD3。 示例2:使用指南防止功能异常,例如编译器对代码构成的错误或不清晰的理解。 示例3:针对用于静态验证源代码中不存在潜在的除零情况的工具,如果为此目的也同时进行了测试,则可为该工具选择TD2。如果仅通过工具验证不存在除零的情况,可为该工具选择TD3。 |
13 | 软件工具准则评估报告中是否存在对TI或TD选择的正确性是不清楚的或可疑的?若有是否对TI和TD进行了保守评估? | 示例:对TI选择的正确性存疑,那么TI=2 |
14 | 软件工具准则评估报告中基于为TI和TD等级确定的值,是否按照GB/T 34590.8—2022 11.4.5.4表3来确定所要求的软件工具的置信度水平? | 检查TI和TD等级确定的值得出的TCL值是否能与GB/T 34590.8—2022 11.4.5.4表3中的对应 |
15 | 软件工具鉴定报告中,对鉴定等级为TCL3的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表4列出的方法? | 检查对鉴定等级为TCL3的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表4列出的方法 1d 全标准开发a a 没有安全标准完全适用于软件工具的开发。相反,可选择安全标准中相关的一组安全要求。 示例:按照GB/T 34590-XXXX、GB/T 20438、EN50128或RTCA DO-178开发软件工具。 |
16 | 软件工具鉴定报告中,对鉴定等级为TCL2的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表5列出的方法? | 检查对鉴定等级为TCL2的软件工具,是否按照GB/T 34590.8—2022 11.4.6.1表5列出的方法 1d 全标准开发a a 没有安全标准完全适用于软件工具的开发。相反,可选择安全标准中相关的一组安全要求。 示例:按照GB/T 34590-XXXX、GB/T 20438、EN50128或RTCA DO-178开发软件工具。 |
17 | 软件工具鉴定报告中,是否包含以下文档化信息?
| 检查软件工具鉴定报告中,是否包含GB/T 34590.8—2022 11.4.6.2规定的信息 |
18 | 软件工具鉴定报告中,是否将“使用中积累置信度”的方法用于软件工具的鉴定? | 检查软件工具鉴定报告中,是否将“使用中积累置信度”的方法用于软件工具的鉴定? |
19 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求:
|
注:可从累计使用量中获得数据(例如:时间长度或频率)。 |
20 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求:
示例1:软件工具相关使用案例中,使用的软件工具特征及使用频率。
|
示例1:软件工具相关使用案例中,使用的软件工具特征及使用频率。
示例2:使用报告的来源可以是日志、供应商提供的软件工具版本历史、已发布的勘误表。 |
21 | 软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求: 使用中积累置信度的论证应仅对所评估的软件工具版本有效。 | 检查软件工具鉴定报告中,用于软件工具鉴定的“使用中积累置信度”的方法是否满足以下要求:
|
22 | 软件工具鉴定报告中,是否将“工具开发流程评估”的方法用于软件工具的鉴定?若有,是否满足以下要求:
|
注:对于开源开发,那些团体使用的某些标准也可能是适当的。
注:该评估涵盖了对软件工具的一个恰当且相关的特征子集的开发。 示例:使用基于Automotive SPICE、ISO/IEC 33000或CMMI 的评估方法。 |
23 | 软件工具鉴定报告中,是否将“软件工具确认”的方法用于软件工具的鉴定?若有,是否满足以下要求: 软件工具的确认应满足以下准则:
|
注1:确认提供了评估的工具错误不会发生或将被检测到的证据; 注2:确认可通过使用用户开发的或工具供应商(如果供应商的测试套件包括用户的工具使用案例)开发的自定义测试套件来实施。 示例1:编程语言标准有助于定义相关编译器的确认要求。
示例2:可预见的误用、不完整的输入数据、不完整的软件工具升级、使用被禁止的配置设置组合。 |
附录J
(资料性)
软件组件鉴定审核和评估示例
软件组件鉴定审核和评估示例,见表J.1。
表J.1 软件组件鉴定审核和评估说明及示例
序号 | 审核和评估要求 | 评估示例及说明 |
1 | 是否定义了软件组件鉴定的开发流程? | 检查软件组件的鉴定开发流程 |
2 | 是否定义了软件组件鉴定的模板且在项目中进行了实施? | 检查软件组件鉴定的模板 |
3 | 软件组件鉴定模板是否与已定义的开发流程保持一致? | 检查软件组件鉴定的模板和流程之间的一致性 |
4 | 定义的软件组件鉴定模板是否可以覆盖下面列出的评估检查点? | 检查软件组件鉴定模板的正确性 |
5 | 安全计划中是否由于软件组件鉴定而按照6.4.5.1 对某一安全活动进行了剪裁?,若有,剪裁是否满足GB/T 34590.8-XXXX,第12 章的要求? | 检查安全计划中是否由于软件组件鉴定而对某一安全活动进行了剪裁 |
6 | 安全计划中是否包含对软件组件鉴定计划? | 检查安全计划中是否包含对软件组件鉴定计划 |
7 | 软件组件的软件开发过程是否基于适当的国际标准? | 检查软件组件的软件开发过程是否基于适当的国际标准? |
8 | 软件组件的文档是否包括了软件组件的唯一识别? | 检查软件组件的文档是否包括了软件组件的唯一识别 示例1:标识软件组件的ID |
9 | 软件组件的文档是否包含当软件组件错误执行时,可能违背的所有安全要求的最高ASIL等级? | 检查软件组件的文档中是否包含最高ASIL等级 |
10 | 软件组件的文档是否包括了为鉴定软件组件所应执行的活动? | 检查软件组件的文档是否包括了为鉴定软件组件所应执行的活动 |
11 | 软件组件的文档是否包含以下要求? ・软件组件的要求 ・软件组件预期用途的要求 ・配置描述 ・所需接口、供给接口、共享资源描述(如果适用) ・软件组件集成的描述 ・异常运行条件下的功能反应 ・对已知异常及相应应急措施的描述 | 检查软件组件的说明资料是否满足以下要求。 |
12 | 是否提供了软件组件的鉴定报告,以证明组件的开发过程符合标准的证据,并记录了论证结果? | 检查软件组件的鉴定报告是否有提供,是否有证明组件的开发过程符合标准的证据及论证结果记录 |
13 | 软件组件鉴定报告是否提供了软件组件的验证结果,以证明符合以下要求,并记录了论证结果? ・分配给软件组件的要求的测试覆盖率应满足GB/T34590.6-XXXX,第9章; ・满足测试用例完整性要求(ASILD适用),结构覆盖率应按照GB/T34590.6-XXXX,第9章来测量; ・既覆盖正常运行条件,也覆盖失效情况下的表现 ・没有导致违背安全要求的已知错误 | 检查软件组件鉴定报告是否提供了软件组件的验证结果,以证明符合要求,并记录了论证结果。 ・展示对要求的覆盖率,按照GB/T 34590.6-XXXX 第9 章; 注:该验证是主要基于要求的测试,可使用软件组件开发过程中或在之前的集成测试中执行的基于要求的测 试结果。 示例:专用鉴定测试套件的应用,对软件组件实施和全部集成期间的所有已执行测试的分析。 |
14 | 软件组件鉴定报告是否对软件组件的鉴定进行了记录? | 检查软件组件鉴定报告是否对软件组件的鉴定进行了记录 |
15 | 对软件组件的鉴定记录中是否包含下述信息:
f) 分配给软件组件的安全要求的最高ASIL等级。 | 检查对软件组件的鉴定记录中是否包含GB/T 34590.8—2022 12.4.2 要求的信息; |
16 | 是否按照GB/T34590.8-XXXX,第9章的要求验证了软件组件的鉴定结果,以证明是否对软件组件资质评估结果进行验证? | 检查是否按照GB/T34590.8-XXXX,第9章的要求验证了软件组件的鉴定结果,以证明是否对软件组件资质评估结果进行验证? |