谈谈ISO26262中的软件组件鉴定

发布于 2023-6-19 17:35
浏览
0收藏

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软件组件,开始软件组件鉴定工作。

谈谈ISO26262中的软件组件鉴定 -汽车开发者社区

1.4   软件组件鉴定要求解读

ISO26262 Part 8 12.4.1条款中定义了对软件组件鉴定的总体要求。为了进行软件组件鉴定,应该包括以下工作内容:

  1. 按照ISO26262-8 12.4.2.1进行软件组件定义,包括:软件组件ID、软件组件名、软件组件的最高ASIL等级、本项目对被鉴定软件组件的要求(功能要求、功能安全要求、算法精度、数值精度、失效情况下的表现、响应时间、资源使用、运行环境的要求等)、软件组件配置描述、接口描述、使用手册、集成和使用软件组件所需的工具、对已知异常及应对措施。
  2. 按照ISO26262-8 12.4.2.2, 12.4.2.3和12.4.2.4的要求举证软件组件满足其要求的证据。可通过基于需求测试的方法,表明被复用的软件组件满足所分配的功能安全需求。对于ASIL D的软件组件,还需要满足ISO26262-6中对于ASIL D的结构覆盖度的要求(强烈建议MC/DC覆盖度)。
  3. 被复用软件组件的开发过程,应提供其基于行业的国内或国际标准的符合性证据(e.g. ISO/IEC/IEEE 12207 systems and software engineering – software life cycle processes)。例如:提供软件组件开发过程符合ASPICE的评估报告。
    备注:如果开发过程不符合,则需要进行re-engineering,以满足软件开发过程的要求。

2. 软件组件鉴定项目实践建议

首先判断软件组件是否和功能安全相关,如果安全无关,可不考虑ISO26262中对于软件组件鉴定的要求。


功能安全相关的软件组件鉴定,如下分类说明如何进行鉴定:

谈谈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


文章转载自公众号:仨人谈起

分类
收藏
回复
举报
回复
相关推荐