2020年,疫情影响着我们每个人的生活。

这一年,终将被历史记住。

这一年,每个人戴上防护口罩,保护自己和家国。

这一年,很多人参与线上学习,get新技能为工作加油。

这一年,蛮多人关注汽车ISO26262,坚定践行道路安全卫士。

汽车行业,越来越多企业取得了ISO26262流程认证、产品认证。随着软件功能比重加大,符合ISO26262标准的软件开发过程,借助MBD技术构建模型,软件的验证当然也要考虑模型的静态验证(基于模型的规范检查)、模型的动态验证(基于模型的动态测试)。

这一篇,我们介绍下,符合ISO26262标准软件要求,采用MBD开发方式,如何进行模型的验证,如何做好软件的“防护服”或“防护口罩”,进而提升软件安全性。与大家分享结合模型形式的ISO 26262软件验证要求、验证流程及实践。

软件验证“口罩防护”,功能安全“绿码通行”

ISO 26262 软件验证要求

软件开发启动阶段建模指南要求

——摘自ISO 26262-6:2018,Table1

•  1a执行低复杂性:通过多个度量指标,来度量模型的复杂性,比如:

♦  Number of subsystems(子系统个数)

♦  Number of blocks(模块个数)

♦  Number of linked library(链接库的个数)

♦  Number of charts(Chart个数)

♦  Number of all objects in the chart(Chart中对象个数)

♦  Number of states(状态个数)

♦  Number of transitions(转移个数)

♦  Number of MATLAB function(ML函数个数)

♦  Number of stateflow code lines(SF代码行数)

♦  Effective lines of MATLAB function code metric(ML代码有效行数)

♦  Subsystem depth(子系统深度)

♦  Data and structure layer separation(数据和结构分层)

♦  Cyclomatic Complexity (Local, Global)(圈复杂度)

其中,圈复杂度是备受企业关注的模型度量指标,它表征着模型中独立路径的个数。该指标的阈值约束,能够指导模型优化,有利于降低模型的负载率。

•  1b使用语言子集、1c使用强数据类型、并发(2018版新增)等其他要求。

ISO 26262 软件验证流程

软件验证分为静态验证、动态验证2个方面,我们重点来看看如何对模型进行静态验证、动态验证。

•  模型静态验证,概要理解为模型规范检查。

♦  模型静态验证要求:

静态验证方法

——摘自ISO 26262-6:2018,Table7

1b结对编程(2018版新增),可以通过2人组合方式火花碰撞解决潜在问题。

1d半形式验证,通过语法分析,借助自动化工具,快速进行模型规范检查,修改。

♦  模型静态验证工作流程:

Step1:定建模规范集合,借助企业经验/行业标准规范/第三方推荐,定制出符合项目/产品要求的建模规范。行业标准规范,比如MAAB/HIS/MISAR_AC_SLSF等。

Step2:搭建建模规范自动化工具,把Step1中定义的建模规范集合,通过静态的模型语法分析进行自动化分析。规范检查工具,比如用户自定义开发脚本/第三方专业工具如MI等。

Step3:发布及应用,导出模型规范检查报告。

Step4:根据报告追溯模型不符合规范之处,变更模型。

Step5:重复Step2,最终按Step3终版报告。

模型静态验证—工作流

•  动态验证方面,即我们经常会做的一项活动,动态测试。

♦  模型动态验证要求:以模型为测试对象,通过测试要求、测试方法、测试用例、覆盖率要求进行一些约束。以单元验证为例,需要满足以下要求。

动态验证方法

——摘自ISO 26262-6:2018,Table7

1n模型代码间的背靠背测试,模型作为一个“背”,模型自动生成的代码作为一个“背”,给与两个同样的激励,来对比输出结果。

其他方面,1j基于需求测试、1k接口测试、1l故障注入测试等。

动态验证生成测试用例方法

——摘自ISO 26262-6:2018,Table8

模型动态验证,需要通过一定的方法,来分析test case。比如1c边界值法,可以根据需求的边界,比如有上边界a、下边界b,一般可以取:下边界略小、下边界、下边界略大、边界间普通值、上边界略小、上边界、上边界略大值,生成test case。

其他方面,1a基于需求分析、1b等价类生成与分析等。

结构覆盖率要求

——摘自ISO 26262-6:2018,Table9

评价动态验证是否充分,要满足需求覆盖率。其次,要考虑结构覆盖率指标。如不满足,需要提供充分的证据来说明达不到覆盖率的原因。

1b分支覆盖,结合模型来理解,也叫判定覆盖(DC),使得模型中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。以下图模型为例:

分析模型结构覆盖率

可以通过以下测试用例,达到分支覆盖率要求:

测试用例

其他方面,1a 语句覆盖、1c MC/DC覆盖等。

♦  模型动态验证工作流程:

Step1:制定测试计划、策略

Step2:编写测试用例

Step3:构建测试工程

Step4:导出测试报告(问题清单)

Step5:根据报告/问题修改模型

Step5:重复Step2(补充测试用例)- Step5

Step6:导出最终测试报告

在模型动态验证过程中,可以选择不同的测试环境,来执行测试。

选择不同的模型动态验证环境

ISO 26262 软件验证实践

在此,也结合ISO 26262 的V流程,小编也给大家分享下模型静态验证+模型动态验证的项目实践总览,欢迎大家围观。

•  帮助用户构建模型静态验证规范集合及辅助环境:

模型静态验证规范集合及辅助环境

模型静态验证—工程化

•  帮助用户安全功能安全要求,构建一体化基于模型动态验证(动态测试)平台:

符合功能安全的一体化基于模型动态验证(动态测试)平台

符合ISO 26262标准的模型验证技术相关推荐

  1. 如何符合功能安全ISO 26262标准

    介绍 ISO 26262是汽车行业使用的功能安全标准,改编自IEC 61508.它包含对软件开发和设计的要求.大多数要求都包含在第 6 部分的合规性表格中. 在本白皮书中,您将学到如何使用编码标准和静 ...

  2. 学习笔记8--智能驾驶的功能安全设计之功能安全与ISO 26262标准

    本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...

  3. 如何完成符合ISO 26262要求的基于模型设计(MBD)的测试

    背景介绍 随着汽车行业的迅速发展,汽车的复杂程度不断增加,越来越多的汽车电子控制系统具有与安全相关的功能,因此对ECU的安全要求也越来越高.复杂的软件功能,将会带来大量的软件风险问题,如何保证软件的安 ...

  4. 在EPS开发中遵循ISO 26262标准

    原文链接: EPS開発におけるISO 26262対応への取組み 在EPS开发中遵循ISO 26262标准 1 引言 ISO 26262是2011年11月作为国际标准发布的汽车功能安全标准.该标准的目标 ...

  5. ISO 26262 标准小解

    ISO 26262从2011年颁布第一版起,至今已经11个年头.我国在2017年也同步颁布了GB/T 34590.虽然标准颁布及应用已经过去这么多年,但有些新接触这个标准的朋友还是不太了解,我在这里做 ...

  6. ManageEngine卓豪助您符合ISO 20000标准(二)

    什么是 ISO 20000? ISO 20000 是国际公认的服务管理标准,它描述了一组旨在帮助组织提供有效服务的管理流程. ManageEngine卓豪全面的IT管理解决方案,可以帮助您的组织有效地 ...

  7. 汽车功能安全工程师必看!ISO 26262认证基本原理解析

    来源:内容由半导体行业观察翻译自「Arteris」,谢谢. 汽车半导体设备和电子系统的开发人员要小心:可能有些供应商声称他们的产品符合ISO 26262安全标准要求,如果这些说法未能阐明用于制造汽车产 ...

  8. 汽车功能安全标准ISO 26262导入实践(下)

    在 汽车功能安全标准ISO 26262导入实践(上)中,我们详细解读了功能安全的概念.相关标准和实现.本篇我们解读一下功能安全的内容.认证和设计实例. 4. ISO 26262 的详细介绍 ISO 2 ...

  9. 芯原图像信号处理器IP获得汽车功能安全标准ISO 26262认证

    通过该认证将加速芯原在电动汽车和自动驾驶等汽车领域的战略布局 2021年11月24日,中国上海--领先的芯片设计平台即服务(Silicon Platform as a Service,SiPaaS®) ...

最新文章

  1. I.MX6 linux Qt 同时支持Touch、mouse
  2. python 合并区间
  3. 【计算机组成原理】数据表示和运算
  4. ogm neo4j_Neo4J OGM与Quarkus
  5. 从Oracle到PostgreSQL:一文掌握Checkpoint重要概念
  6. 解决迭代器调用next方法时报错:StopIteration
  7. Spring Boot-热部署和Debugger使用(三)
  8. 很牛的vim使用技巧nbsp;转载来的
  9. Android 工具:TraceView
  10. 详细的设计文档该怎么写?请注意这些地方...
  11. 主机安全扫描入门-用Java封装Nmap
  12. 利用pytho绘制九九口诀表
  13. Blender(二)bpy模块
  14. mysql 两表拼接_数据库将两张表进行横向连接(拼接成一张表的形式显示)
  15. 【已解决】模拟人生4(Sims4) 启动失败 orangeEmu.dll及应用程序错误0x0000142
  16. 仿百度贴吧回帖功能分析及代码示例
  17. 交换机的连接方式详解(图)
  18. excel简单操作学习记录1-2021/2/6
  19. days to study vue2+react
  20. 其实除了做好自己的事情,还需要有政治或权力思维,尤其你不想一辈子做一个组织的最底层

热门文章

  1. 语文七年级计算机作文,初中七年级语文优秀作文
  2. 多个微信怎么管理更高效
  3. linux中unzip命令
  4. 关于2038年1月19日03:14:07 Tuesday
  5. 大数据Hive(二):Hive的三种安装模式和MySQL搭配使用
  6. 海康威视研究院算法岗面经
  7. 博弈论数据可用性声明_阿里云云采购季活动最后一天,买云服务器送云数据库与云存储...
  8. 【附源码】Java计算机毕业设计安卓英语答题APP(程序+LW+部署)
  9. 碉堡!Mysql8.0竟然可以直接操作json文档了
  10. 起泡法排序(十个数)