
谈谈ISO26262中的软件组件鉴定
ISO26262项目中,经常有客户询问:
- 项目中,要购买一个商业现成软件组件,从功能安全角度,该如何做?
- 项目要复用其它项目的一个软件组件,从功能安全角度,要做什么?
- 开源软件组件,到底能不能用到功能安全的产品中,从功能安全角度,要做什么?
本文谈一谈ISO26262:2018 Part 8-12,对于软件组件鉴定的要求和实施建议。
1. 软件组件鉴定ISO26262 8-12标准解读
1.1 为什么要进行软件组件鉴定
软件组件鉴定的目的是提供证据,证明被复用的软件组件能满足所分配的功能安全需求,适合应用在功能安全产品中。
1.2 软件组件鉴定的适用范围
适用于:
- 外购的COTS(Commercial off-the-shelf)商业现成软件组件
- 复用基于SEooC(Safety Element out of Context)开发的软件组件
- 复用其它功能安全项目的软件组件(按照ISO26262开发)
- 复用其它非功能安全项目的软件组件(未按ISO26262开发)
- 开源代码
可以是源代码、模型、预编译代码,或已编译及链接的软件。
1.3 项目哪个阶段进行软件组件鉴定
软件架构设计时,对软件架构中的软件组件进行分类后(如下示例),针对复用的软件组件、SEooC软件组件、COTS软件组件,开始软件组件鉴定工作。
1.4 软件组件鉴定要求解读
ISO26262 Part 8 12.4.1条款中定义了对软件组件鉴定的总体要求。为了进行软件组件鉴定,应该包括以下工作内容:
- 按照ISO26262-8 12.4.2.1进行软件组件定义,包括:软件组件ID、软件组件名、软件组件的最高ASIL等级、本项目对被鉴定软件组件的要求(功能要求、功能安全要求、算法精度、数值精度、失效情况下的表现、响应时间、资源使用、运行环境的要求等)、软件组件配置描述、接口描述、使用手册、集成和使用软件组件所需的工具、对已知异常及应对措施。
- 按照ISO26262-8 12.4.2.2, 12.4.2.3和12.4.2.4的要求举证软件组件满足其要求的证据。可通过基于需求测试的方法,表明被复用的软件组件满足所分配的功能安全需求。对于ASIL D的软件组件,还需要满足ISO26262-6中对于ASIL D的结构覆盖度的要求(强烈建议MC/DC覆盖度)。
- 被复用软件组件的开发过程,应提供其基于行业的国内或国际标准的符合性证据(e.g. ISO/IEC/IEEE 12207 systems and software engineering – software life cycle processes)。例如:提供软件组件开发过程符合ASPICE的评估报告。
备注:如果开发过程不符合,则需要进行re-engineering,以满足软件开发过程的要求。
2. 软件组件鉴定项目实践建议
首先判断软件组件是否和功能安全相关,如果安全无关,可不考虑ISO26262中对于软件组件鉴定的要求。
功能安全相关的软件组件鉴定,如下分类说明如何进行鉴定:
2.1 COTS软件组件
对于此类软件组件,强烈推荐软件组件的供应商提供符合ISO26262的功能安全评估报告(有第三方产品认证证书更好)。
同时提供软件组件的使用说明、接口定义和集成指南、测试报告等,以支持软件集成工作。
2.2 SEooC软件组件
此类软件组件,是基于假设按照SEooC的模式进行的软件开发。
应检查SEooC所做的全部假设在项目特定环境下的有效性,包括假设的软件安全要求(包括ASIL等级),和所有关于软件组件的目的,边界,目标环境、功能及特性的假设。还应按照safety manual推荐的措施使用该组件。
2.3 复用的软件组件
复用其它项目的软件组件,如果被复用软件组件是按照ISO26262标准开发。可按照SEooC软件组件的策略,确认被复用组件实现的软件安全要求(包括ASIL等级),和所有关于软件组件的目的,边界,目标环境、功能及特性的一致性。
如果被复用的软件组件,没有按照ISO26262标准开发。需要确认:
- 被复用组件满足所分配的软件安全需求,可通过需求确认和测试报告检查;
- 建议按照ISO26262的要求,进行re-engineering。比如被复用软件组件缺少单元测试,则需要进行软件单元测试;
- 对于ASIL-D的组件,软件单元测试覆盖度还需要满足MC/DC结构覆盖度的要求。
2.4 开源软件组件
强烈推荐通过优化软件架构设计,不分配功能安全需求给开源软件组件,而是通过其它软件组件的安全机制来对应。例如:开源Linux OS,通过Certified OS来监控系统的运行,违背安全需求的场合,进入安全状态。
也有些客户尝试对开源代码进行re-engineering(按照2.3方式,按照ASPICE要求进行re-engineering),如果代码量不大的情况下,是个不错的选择。如果代码量太大,所需的工作量和时间会十分巨大。
说明:
针对一些相对简单的软件组件,参考ISO26262 8-12的方法进行软件组件鉴定是可行的。但是针对比较复杂的软件模块,例如Linux OS,如果想要通过”ISO26262 8-12软件组件鉴定“的方式来论证其安全性,是不太可行的,因为工作量巨大。
目前准备制定的8926标准,就是为了解决这个问题:This document provides a detailed and exhaustive qualification concept applicable for generic complex pre-existing SW product。
ISO/AWI PAS 8926
Road vehicles — Functional safety — Qualification of pre-existing software products for safety-related applications
https://www.iso.org/standard/83346.html
您如果有更好的建议,欢迎和我们交流,联系方式:sale@iqichina.com
文章转载自公众号:仨人谈起
