SCADE 开发环境介绍

SCADE Suite 中的"SCADE"为"安全关键应用开发环境"的缩写。需说明的是,在时效性方面,下面的描述反映的是发展至2010年左右的情况。更详细的内容,可参考《Formal Methods - Industrial Use from Model to the Code》(ISBN 978-1-84821-362-3)。

SCADE 开发环境提供了基于 SCADE 建模语言的工具集,覆盖了软件应用研发活动中的设计、编码与验证阶段工作。SCADE 开发环境能够研发软件应用的两部分内容,一部分为功能性部分、一部分为图形化交互或展示部分。对功能性部分,由 SCADE Suite 部分的工具提供支持;对图形化交互或展示部分,由 SCADE Display 部分的工具提供支持。这里将集中描述 SCADE Suite 部分的内容。

SCADE 开发环境的核心是 SCADE 编辑器,通过 SCADE 编辑器能够编辑结构化的模型。模型仿真、模型测试覆盖率、形式化方法引擎提供了在研发活动推进到代码编程前的模型验证方法。KCG作为有资质的代码生成器能够生成与模型含义一致的代码,这不仅节省了代码编程工作,也节省了与代码编程配套的模块化测试工作。

下面将从模型验证、性能预测、KCG 代码生成三部分介绍 SCADE Suite 开发环境。

模型验证

SCADE 模型验证的目标为确保 SCADE 开发的应用与高层次需求保持一致,不会引入预期之外的功能。

模型与需求的关联检查

模型验证方法的组成之一为模型与需求的关联检查。通过这项检查,可以验证 SCADE 模型是否与上游的相应需求对应。用于这项工作的 SCADE 工具是 “SCADE Suite 需求管理网关”(RM Gateway)。该工具可以将 SCADE 模型与高层次需求进行关联,计算 SCADE 模型覆盖需求的百分比;以及计算当需求更改后,对 SCADE 模型的影响分析。

模型仿真器

在其余的验证阶段中,SCADE 模型最重要的属性是模型的可执行性。对模型的功能验证,可通过 “SCADE Suite 仿真器”对模型进行执行与调试。仿真的优点在于,模型在仿真中运行的结果,与由模型生成的代码在目标环境中运行的结果是相同的。

模型覆盖

SCADE 模型的结构化覆盖率可通过 “SCADE Suite 模型测试覆盖”(MTC, Model Test Coverage)工具进行计算。通过该工具,可以在研发过程的较早阶段,发现测试过程中不可达的模型。

模型形式化验证

除了基于对SCADE 模型测试的验证手段外,SCADE 还提供集成 源自 Prover Technology 的 Prover 插件的 SCADE Suite 设计验证器(DV)。该工具能对 SCADE 模型实施模型检测形式化技术,从而验证 SCADE 模型是否符合高层次需求。

形式化验证技术提供了一种数学框架去推导系统行为。在 SCADE 模型的基础上,DV 用户可以通过 SCADE 模型的形式,去描述安全性质,再使用 DV 进行形式化验证。之后 DV 会对可能的系统行为进行穷尽式地数学分析。对每一条安全性质,通过 DV 验证,会有两种可能性结果。一种为应用模型符合给定性质;另一种为对某些输入,应用模型不符合给定性质。对后一种情况,DV 会提供导致模型执行错误的输入场景。

性能预测

SCADE 产品集成了 SCADE Suite 时序与栈分析器(Timing and Stack Verifier, TSV)。对 SCADE 模型生成的C程序,该工具可以对给定硬件目标上执行C程序的最长时间进行估计,并对最大栈空间使用进行估计。该工具集成了 AbsInt 开发的 aiT 工具对静态分析技术提供支持。

KCG,有资质的代码生成器

在传统的软件研发过程中,会经过需求、设计、编码与验证阶段。对编码内容,需要编写相应的测试,对测试结果通过结构化覆盖方法进行测试置信度分析。工具 SCADE Suite KCG 能够使从编码开始的后续阶段自动化地完成。

SCADE Suite KCG 生成平台无关的 ISO C 标准代码。所生成C代码的确定性能得到保证。在生成的代码中,不会出现动态内存分配、指针算数运算、越界访问等操作。由于 KCG 生成的代码能确保代码正确性,因此,对 C 代码的测试与验证工作能够被节省。

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

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

相关文章

对话NVIDIA英伟达:AI已照进现实 | 最新快讯

文 | MetaPost NVIDIA 创始人兼首席执行官黄仁勋在 GTC 2024 主题演讲上表示:下一波 AI 浪潮将是 AI 对物理世界的学习。 当下,全球范围内价值超过50万亿美金的行业正在竞相实现数字化,数字孪生技术正在赋能千行百业。NVIDIA Omniverse 中国…

TriDet: Temporal Action Detection with Relative Boundary Modeling

标题:TriDet:采用相对边界建模的时间动作检测 原文链接:TriDet: Temporal Action Detection With Relative Boundary Modeling (thecvf.com)https://openaccess.thecvf.com/content/CVPR2023/papers/Shi_TriDet_Temporal_Action_Detection_W…

性能分析:如何用互斥锁打造高效Java应用

1. 多线程环境下的原子性挑战 1.1 理解原子性和数据竞争 在多线程应用程序中,原子性是指一系列操作要么全部执行,要么全部不执行,没有中间状态。若多个线程同时读写共享变量,则可能出现争用条件(race condition&…

笔试强训未触及题目(个人向)

1.DP22 最长回文子序列 1.题目 2.解析 这是一个区间dp问题,我们让dp[i][j]表示在区间[i,j]内的最长子序列长度,如图: 3.代码 public class LongestArr {//DP22 最长回文子序列public static void main(String[] args) {Scanner…

Android APP 剪切板应用

1 Android剪切板简介 Android 剪贴板是一个系统级服务,它允许应用程序之间共享文本、图像、二进制数据等多种形式的信息。用户可以通过常见的复制和粘贴操作,在不同的应用之间传递数据。该设计考虑到了易用性和灵活性,使得开发者可以轻松地为…

Spring Batch 是什么?主要用于什么场景?

Spring Batch是一个开源的、基于Spring框架的批量处理框架,它提供了一系列用于批量数据处理的工具和API。Spring Batch的主要目标是简化和标准化批量数据的处理过程,使得开发者可以更加专注于业务逻辑的实现,而不是批量处理的复杂性。 Sprin…

MSP430环境搭建

1.下载ccs编译器 注意:安装路径和工作路径不能出现中文! 没有说明的步骤就点next即可! 1.1下载适合自己电脑的压缩包。 下载好压缩包后解压,点击有图标进行安装。 1.2创建一个文件夹用于安装编译器位置 选择安装地址&#xff0…

新书速览|Rust编程与项目实战

掌握Rust编程基础和开发方法,实战网络编程、图像和游戏开发、数据分析项目 本书内容 Rust是一门系统编程语言,专注于安全,尤其是并发安全,它也是支持函数式、命令式以及泛型等编程范式的多范式语言。标准Rust在语法和性能上和标准…

PostgreSQL【提升性能篇】 coalesce()函数的奇思妙用

文章目录 前言一、在 WHERE 条件中使用 coalesce()二、在 SELECT 子句中使用 coalesce()总结前言 在数据库查询中,我们经常需要处理 NULL 值和空字符串的情况。PostgreSQL 提供了一个非常有用的函数 coalesce(),可以简化这种处理过程。 在博主的工作经验中,coalesce() 常用…

贝壳面试:MySQL联合索引,最左匹配原则是什么?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 1.谈谈你对MySQL联合索引的认识? 2.在MySQ…

信创 | 高效信创项目管理:关键步骤与实用技巧!

高效信创项目管理的关键步骤与实用技巧可以从多个维度进行分析和总结。首先,建立有效的工程管理体系是确保信创项目顺利实施的基础,这包括项目管理、质量管理、成本控制等方面的工作。其次,实现项目全流程精细化管理,如信息的及时…

spring boot 核心配置文件是什么?

Spring Boot 的核心配置文件主要是 application.properties 或 application.yml(也称为 YAML 格式)。这两个文件通常位于项目的 src/main/resources 目录下,用于配置 Spring Boot 应用程序的各种属性和设置。 application.properties&#xf…

ts可以和python混合编程吗

在某种程度上,可以将 TypeScript(TS)和 Python 结合起来进行混合编程,但具体的实现方式取决于你的需求和技术栈。 一种常见的方法是通过 REST API 或 WebSocket 等通信方式,将 TypeScript 和 Python 编写的不同部分连…

使用./build.sh编译ORB_SLAM源码时出现报错:/usr/bin/ld:找不到 -lboost_serialization的解决办法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、/usr/bin/ld:找不到 -lboost_serialization1.问题描述2.解决(1). 下载源码(2) . 编译安装 一、/usr/bin/ld:找不到 -lboost_serialization 1.问题描述 在安装…

机器视觉任务中语义分割方法的进化历史

机器视觉任务中语义分割方法的进化历史 一、基于传统方法的图像分割二、基于卷积神经网络的图像分割三、基于Attention机制的图像分割四、语义分割模型的挑战与改进 在图像处理领域,传统图像分割技术扮演着重要角色。 一、基于传统方法的图像分割 这些方法包括大津…

2 GPIO控制

ESP32的GPIO的模式,一共有输入和输出模式两类。其中输入模式:上拉输入、下拉输入、浮空输入、模拟输入;输出模式:输出模式、开漏输出(跟stm32八种输入输出模式有所不同)。库函数中控制引脚的函数如下&#…

Spring AMQP的作用和用法

Spring AMQP是一个用于构建基于AMQP(Advanced Message Queuing Protocol)的消息驱动的中间件框架。AMQP是一种提供高度可靠的异步消息传输协议,广泛用于企业级消息传递和应用程序集成。 Spring AMQP 的作用: 消息队列&#xff1a…

基础算法,贪心算法,贪心策略,OJ练习

文章目录 一、概念二、OJ练习2.1 区间选点2.2 区间合并2.3 区间2.4 合并果子2.5 排队接水2.6 货仓选址2.7 防晒2.8 畜栏预定2.9 雷达设备2.10 国王游戏2.11 耍杂技的牛2.12 给树染色2.13 任务2.14 能量石 三、总结 一、概念 贪心是一种在每次决策时采取当前意义下最优策略的算…

Selenium获取网页参数信息(标题、网址、网页资源)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Python正则表达式入门指南

Python中的正则表达式是处理文本数据的强大工具,它可以用来搜索、匹配和替换文本中的特定模式。本指南将带你入门Python正则表达式的基础知识,并介绍一些常用的用法。 什么是正则表达式? 正则表达式(Regular Expression&#xf…