基于MBD 的软件品质保证技术

news2024/9/20 22:29:35

基于MBD的软件是什么?
基于MBD的软件是基于模型开发的软件,主要应用于汽车、电子电气、机器人、航空、航天等行业。
​​​
与使用现有代码开发程序的方法不同,MBD 方法包括首先开发模型,将模型转换为代码,然后基于转换后的代码开发软件。
​​​
基于MBD的软件开发过程首先收集需求、执行、执行规范,对其建模,通过建模生成自动代码,并根据生成的自动代码创建目标代码。
<图1> MBD开发流程

<图1> MBD开发流程
这种基于 MBD 的 SW 开发具有以下与现有 SW 开发方法不同的优点。
​​​

  1. 通过在系统开发的各个阶段不断地进行测试和验证,可以降低冗余实施的成本。
    2)可以在建模和仿真阶段测试系统算法
  2. 可以利用已经设计好的模型
  3. 可以减少实施阶段所需的(人力、时间)

基于MBD的软件质量保证方案
<图2>基于模型的软件开发认证流程
<图2>基于模型的软件开发认证流程
<图2>摘自MathWorks提供的文档,该工具开发了MATLAB工具,主要用于模型开发,与模型质量验证有关,可以查看是否有。
​​​
<图2>中M2对应的部分可以进行模型级别的模块测试验证,M1对应的部分可以进行模型级别的模型审查和静态验证。
​​​
转码后有C1和C2。 在C1中,通过模型和代码之间的背靠背测试进行验证,在C2中,当需要的功能从模型转换为代码时,测试该功能在该功能中是否正常执行.可以保证质量。

模型静态与动态验证
模型验证方法可以分为静态验证和动态验证。
​​​
模型静态验证,是一种通过 MAAB 和 dSPACE 等建模公司提供的建模规则指南来验证模型规则是否符合的方法。此外,还有一种模型质量指标检查方法,可以分析模型中实际使用了哪些组件以及使用了多少。
​​​
综上所述,在模型静态验证部分,可以看出有两种方法:建模引导规则检查和模型质量指标检查。
​​​
与模型静态验证不同,模型动态验证可以通过比较在执行实际模型时的输出值来进行验证。
​​​
通过根据用户输入预期结果值是否与实际模型结果值匹配来动态验证模型。此外,通过检查模型的覆盖率,可以调查未完成的部分并通过模型习惯或方法来确保质量,以确保该部分的覆盖率。

[ ISO 26262 ]
在这里插入图片描述在这里插入图片描述

<图3> ISO 26262汽车功能安全国际标准

ISO 26262汽车功能安全国际标准文件中也规定了模型质量的保证。
​​​
表 1 的第 1a 项共有 12 个部分,规定了通过模型度量检查进行质量保证的需要,表 12 的第 1e 项和 1f 项分别规定了模型动态验证和模型静态验证的需要。
<图4> Overview of the intensity of tests on function model level
<图4> Overview of the intensity of tests on function model level

您可以看到许多实际开发模型的开发人员都在进行大量称为 MIL 测试的动态验证和称为 Guideline Checker 的模型静态验证。
模型品质保证方法(静态测试)
模型静态验证是衡量建模规则的合规性和质量指标。
​​​
在各个学科中,汽车行业的行业标准建模规则如下:

  • MISRA AC SLSF
  • MISRA AC TL
  • MathWorks Automotive Advisory Board (MAAB, Mathworks, ~ 2019b)
  • MathWorks Advisory Board (MAB, Mathworks, 2020a ~)
  • Modeling Guidelines for High-Intergrity System (Mathworks)
  • Modeling Guidelines for Code Generation (Mathworks)
  • dSPACE Modeling Guideline

[01.标准模型的规则]
<图五> MISRA AC SLSF, 标准模型的规则
<图五> MISRA AC SLSF, 标准模型的规则

▶ MISRA AC SLSF 012 规则提供了在模型中使用Switch块时如何设置Switch块的选项和初始值的指南。
​​​
▶ MISRA AC SLSF 053 规则提供了关于如何设置状态和流中转换位置以及转换中代码位置的指南。
​​​
▶ 建模规则提供了在使用模块时如何使用模块选项以及在开发模型时如何使用模块以提高可读性和便利性的指南。

[02.模型质量指标]

在模型质量指标的情况下,有几个测量项目,它们可以大致分为四类。
​​​
● 关于模型尺寸
模块数量、子系统数量、库数量、参数数量、状态流程图数量、输入数量、
输出的数量,模型中运行的功能代码行数等等……
​​​
● 模型结构相关
复杂度、相似库的数量、相似子系统的数量、模型组成比(外部库、通用块)、内聚度、
粘合等…
​​​
● 关于模型的可读性
没有描述或名称的块数,数据和模型结构层次结构的数量等…
​​​
● 指导方针
模型警告数量、违反标准指南规则的数量等。

[03.复杂度(Cyclomatic Complexity]

在代码的情况下,复杂性是通过计算生成代码中的二进制节点数加 1 来衡量的。 而在模型的情况下,复杂性是通过一个计算公式来衡量的,该公式将决策块加 1。 这里,决策块是决策分支点出现在块内的块。
<图6> Model Cyclomatic Complexity计算示例
<图6> Model Cyclomatic Complexity计算示例
在<图6>的例子中,由于If模块和Mulitport Switch模块中存在Decision分支,因此4的值加上对应模块的数字被测量为模型中的复杂度并向用户提供信息.
​​​
在代码复杂度的情况下,程序的风险是通过分为四类来确定的,模型复杂度也是一样的。 如果模型复杂度高,后期通过Auto Code Generation生成的代码可能会增加代码复杂度,降低模型复杂度可以保证生成代码SW的质量。

模型品质确保方法(动态测试)
模型动态验证是指将模型模拟的输出和期望值与用户提供的输入进行比较。
​​​
在模型动态验证过程中,设计测试用例,并根据数值,提前准备好称为测试工具的测试值。
​​​
然后通过仿真验证结果。
[01.测试种类]

动态验证测试类型包括 MIL 测试、SIL 测试、PIL 测试和背靠背测试。
​​​
● MIL(模型在环)测试
它是在设计模型上进行的测试,用于在模型单元中进行模拟测试,需要预测试环境。
​​​
● SIL(软件在环)测试
与 PIL 测试相比,目前使用的 Host PC 被用作处理器而不是实际的目标硬件,将开发的软件模型转换为适合目标硬件的代码。
​​​
● PIL(处理器在环)测试
与 SIL 测试相比,实际目标硬件(评估板)用于提升应用程序。在此过程中,可以识别编译器和处理器的问题。
​​​
● 背靠背测试
这是验证开发的模型和生成的代码之间的对应关系的测试,它是使用相同的输入数据对正在开发的模型和自动生成的代码检查输出值是否一致的测试。 Back-To-Back 测试之所以比其他测试重要一点,是因为 ISO 26262 文档中有一个项目强调 Back-To-Back 测试。
<图8>ISO 26262--Back To Back测试项目
<图8>ISO 26262–Back To Back测试项目

[02.模型覆盖率]

模型覆盖率是一种度量,它允许您针对特定测试用例测量模型的执行路径,并确定它是完全通过了该块还是通过了所有用例。
​​​
模型覆盖有多种类型,如Decision、Condition和MC/DC,其中Decision和Condition的覆盖被广泛使用。
​​​
决策覆盖率可以针对其输出分支由 True/False 拆分或其分支由数据控制的块来衡量。在IF块的情况下,通过实际的IF和else进行分支,将分支分为if true和else false,这样就可以衡量通过相应分支语句的决策覆盖率。
​​​
在 Abs 块的情况下,由于分支是根据输入值的正值或负值在内部控制的,因此该块也可以作为决策覆盖的目标进行测量。
<图9>if Block/Abs Block
<图9>if Block/Abs Block
在条件覆盖的情况下,测量输入值为 True 或 False 的每个输入端口是否满足所有条件。
​​​
根据逻辑运算符 AND 的输入值 True/False 的输入方式,可以通过测量输出的条件值来测量可以达到多少模型覆盖率。
<图10> Logical Operator AND
<图10> Logical Operator AND
结语
MBD,Model Based Design SW作为解决嵌入式行业快速发展的专家供给不足和国内解决方案缺乏的新软件而备受关注。
​​​
随着基于 MBD 的 SW 在 IT 行业中的比例逐渐增加,通过模型验证来确保 SW 的质量正在成为重要的一环。
​​​
目前,SureSoft已经建立了模型的静态/动态验证流程,并积极与OEM公司开展验证活动,降低模型验证成本,并通过自主开发工具提供高效的缺陷检测服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ansys Speos | 2023R1 动态仿真助力车灯早期优化

前言 光学仿真是产品设计师应用的关键工具之一&#xff0c;能让用户在制作物理原型之前就通过数字环境体验产品。这对汽车领域来说显得尤为重要&#xff0c;随着汽车照明功能&#xff08;如转向指示灯&#xff09;越来越生动&#xff0c;TIER-1 需要能够在样件前&#xff0c;通…

Mac安装android studio

1. 下载as 下载地址 2. 安装 3. 启动软件 4.创建新项目 选择空白活动 名字为FirstApp&#xff0c;语言选择java 等待项目加载完毕 项目加载完毕 5.创建设备 6. 启动项目

【28】C语言 | 关于指针练习(1)

目录 1、下列输出什么 2、计算求和 3、使用指针打印数组内容 4、打印水仙花数 5、写一个函数&#xff0c;可以逆序一个字符串的内容 6、题目名称:打印菱形 6、喝汽水 7、猜名次 8、下列关于整形数组输出什么并解释 9、下列关于字符数组输出什么并解释 9.1 下列关于字…

【C++详解】——初识STL(string类的使用)

&#x1f4d6; 前言&#xff1a;STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且一个包罗数据结构与算法的软件框架。 目录&#x1f552; 1. string 概述&#x1f552; 2. 标准库中的stri…

【小程序 | 黑马优选】tabBar、首页制作

文章目录tabBar制作首页制作配置网络请求制作轮播图效果渲染轮播图的UI解构配置小程序分包点击轮播图跳转到商品详情页面封装 uni.$showMsg() 方法分类导航区制作楼层区域制作tabBar制作 在 pages 目录中&#xff0c;创建首页(home)、分类(cate)、购物车(cart)、我的(my) 这 4…

windows下zookeeper搭建

程序包下载 官网下载地址 下载解压后如下&#xff01; 注意&#xff0c;zookeeper需要java环境&#xff0c;如果配置了JAVA_HOME那最好&#xff0c;如果没配置就会出现点击bin下的zkServer.cmd后CMD窗口一闪而过 修改配置 如果本地端口没有特别要求可以直接复制conf下的zo…

多臂PEG衍生物8-Arm PEG-SAA,8-Arm PEG-Succinamide Acid,八臂PEG丁二酸酰胺

一&#xff1a;产品描述 1、名称 英文&#xff1a;8-Arm PEG-SAA&#xff0c;8-Arm PEG-Succinamide Acid 中文&#xff1a;八臂-聚乙二醇-丁二酸酰胺 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Carboxylic acid PEG Multi-arm PEGs 4、分子量&#xff1a;可定制…

IDEA新建js项目(hello)和执行js脚本

一)、安装Node.js具体操作参考:https://blog.csdn.net/xijinno1/article/details/128774375二)、IDEA中新建js项目(hello world)1.按照下图&#xff0c;新建js项目2.选中示例代码文件后点击鼠标右键&#xff0c;选中菜单栏中的 运行* 栏目运行代码(第一次运行代码的方式)3.若是…

【版本控制】Git快速上手

Do you know what Git is&#xff1f; 一.引入 (1) 作用 Git 是一个分布式版本控制系统&#xff0c;主要是用于管理开发过程中的源代码文件&#xff08;Java类&#xff0c;xml文件&#xff0c;html页面等&#xff09;。可用于代码回溯&#xff0c;版本切换&#xff0c;多人协作…

AcWing 292. 炮兵阵地(状态压缩DP)

AcWing 292. 炮兵阵地&#xff08;状态压缩DP&#xff09;一、题目二、思路1、分析2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、题目 二、思路 1、分析 这道题的话和我们之前讲解的AcWing 327. 玉米田&#xff08;状态压缩DP&#xff09;和AcWing 1064. 小国王…

Jenkins环境搭建与实战

Jenkins环境搭建与实战1、Jenkins2、GItLab的安装2.1、安装依赖2.1.1、CentOS8安装报错2.1.2、找不到对应包安装报错2.2、配置镜像2.3、安装gitlab3、安装Jenkins4、Maven安装4.1、出现报错 The JAVA_HOME environment variable is not defined correctly的错误5、Jenkins 通过…

SWIFT Framework .NET 2023

SWIFT Framework .NET 2023 Latest 2023 specification messages.Improves parsing..NET Framework 4.8 release.Performance updates.Improves handling of special characters. SWIFT Framework.NET是一个用于在组织信息系统基础架构中捕获、验证和处理SWIFT消息的系统。SWI…

3.5主存储器与CPU的连接

文章目录一、引子二、单块存储芯片与CPU的连接三、多块存储芯片与CPU的连接1.现代计算机2.命名3.增加主存的存储字长--位扩展&#xff08;1&#xff09;单块&#xff08;2&#xff09;多块4.增加主存的存储字数--字扩展&#xff08;1&#xff09;单块&#xff08;2&#xff09;…

19行列式公式和代数余子式

行列式公式 学习了关于行列式的这么多性质&#xff0c;现在我们有能力推导二阶行列式公式了&#xff1a; 观察上面的推导过程&#xff0c;不难发现&#xff0c;行列式的值等于使用性质3.b 分解后所得的那些非零行列式的和&#xff0c;所谓的非零行列式也即该行列式各行各列都…

【算法基础】大整数加减乘除法(高精度)

大整数的思想:用数组存储大整数(超长整数),比如存储1000位的整数只需要开辟一个长度为1000的数组(C++通常使用vector),今天将通过OJ例题来介绍高精度问题。(完全0基础的先建议自主学习一下,本博客默认已了解大致思想) 一、 大整数加法(大整数 + 大整数) (一)Qu…

6 逻辑斯蒂回归

文章目录回归问题和分类问题问题提出逻辑回归二分类问题逻辑函数与线性回归方程的不同模型变化loss函数不同BCEloss函数的介绍课程代码课程来源&#xff1a; 链接课程文本来源借鉴&#xff1a; 链接以及&#xff08;强烈推荐&#xff09; Birandaの回归问题和分类问题 有监督学…

Docker安装Tomcat服务器

Docker安装Tomcat服务器查看tomcat镜像下载 tomcat镜像启动tomcat容器浏览器访问容器中的tomcat1 查看ip2 查看容器是否启动3 进入容器重启容器浏览器访问查看tomcat镜像 docker search tomcat下载 tomcat镜像 咱直接下载最近版本的tomcat镜像 docker pull tomcat查看一下本…

芯片验证系列——激励(stimulus)

对于芯片验证&#xff0c;主要的挑战在于&#xff1a;1.如何打出所有可能的激励灌给DUT&#xff1b;2.如何在各种可能得激励情况下&#xff0c;判断出不符合硬件描述的行为。本文单单聚焦于一些关于构造stimulus方面的想法吧&#xff0c;结合了红皮书, writing testbench和项目…

储殷黄日涵教授《丁香花》唐磊推荐杨语莲,意味拜师赵本山有望吗

熟悉娱乐圈的人都知道&#xff0c;这个圈子包含有很多潜规则&#xff0c;尤其是一些女艺人&#xff0c;想要有所成就&#xff0c;不是有才华就可以的。就拿音乐人杨语莲来说&#xff0c;她是一个非常有才华的歌手&#xff0c;然而就因为不接受潜规则&#xff0c;至今仍是歌红人…

设计模式:单例模式

1、单例模式 单例模式是指在整个系统生命周期内&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 为什么需要单例模式 单例模式是为了保证程序的线程安全。 线程安全&#xff1a; 在拥有共享数据的多条线程并行执行的程序中&#xff0c;线程安全的代…