软件验证“口罩防护”,功能安全“绿码通行”
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
|