当前位置: 首页 > news >正文

[ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响

在《从ERTS学习SCADE发展》中提到,在 ERTS 会议中,Scade团队会在该会议中介绍与Scade相关的工作。在 ERTS 2012 中,Scade 团队介绍了使用Scade作为主要工具,应用在航天器星载软件开发中的相关话题。原材料可参考 《Formal Model Driven Engineering for Space Onboard Software》csdn.net

在 ERTS 2012 上,Scade 团队介绍了 Scade 在星载软件中的应用。内容主题与使用 Scade 建模生成 SPARK 星载软件程序有关。在本篇中,注意力将集中在该工作对 Scade 语言本身的影响方面。

在星载软件项目的推进过程中,Scade 团队使 Scade 6 编译器支持了 SPARK 代码的生成。SPARK 是具备语义形式化定义的Ada子集。在这项工作中,对 Scade 6 本身的语言特性进行了拓展。

新增数值类型

层次化的数值类型

对 Scade 6 拓展了数值类型

int, int8, int16, int32, int64, uint8, uint16, uint32, uint64, integer, 
numeric, real, float32, numeric, floating, float64 

不同的数字类型不兼容,例如,不能将 int8 类型的流和 int32 类型的流相加。对于每个内置类型,都存在一个与类型同名的强制转换运算符:int8、int16、int32 等。

多态运算符的数值约束

与 numeric 一样,integer 和 floating 关键字不能直接参与类型表达式,但它们可用于指定数值约束,以限制用户定义运算符的多态性。

比如例子1

function imported N1 (x:'t) returns (y:'t) where 't numeric;

中,类型变量可以是任何数值类型。

例子2

function imported N2 (x:'t) returns (y:'t) where 't integer ;

可以由 Integer 的任何子类型实例化(在数字类型的层次结构中)。

例子3

function imported N3 (x:'t) returns (y:'t) where 't floating ;

可以由 floating 的任何子类型实例化。

数值类型的类型转换

对 Scade 6 引入了一个通用的强制转换运算符 (<expr>:<type_expr>),用于数字类型(包括内置、导入和多态类型)之间的转换,例如:

type imported Timp is numeric; function F (x1: int8 ; x2:'t) 
returns (y1: float32 ; y2:'t; y3: Timp) where 't floating 
let y1 = (x1: float32); -- equivalent to float32 (x1); y2 = (x1:'t); y3 = (x2: Timp); 
tel

所有浮点到整数的强制转换现在都使用 “截断” 语义。在 C 语言中,这已经是默认行为。在生成的 SPARK 代码中,我们在转换浮点值之前使用 'Truncation 属性。

总结

对比 Scade 6 与其他同步数据流语言,Scade 的比较显著的不同之处的一个方面为对数值类型的层次化细分。而从 ERTS 2012 可注意到,该特色的由来源自 Scade 编译器对Ada代码的生成研发所伴生的产物。

相关文章:

  • 使用 Java 反射动态加载和操作类
  • 【前端】【HTML】【总复习】一万六千字详解HTML 知识体系
  • 事务(理解)与数据库连接池
  • 【AI论文】作为评判者的感知代理:评估大型语言模型中的高阶社会认知
  • 【Java学习笔记】instanceof操作符
  • Quantum convolutional nerual network
  • Web开发—Vue工程化
  • stm32实战项目:无刷驱动
  • 期刊 | 《电讯技术》
  • 信息安全管理与评估索引
  • C++中什么是函数指针?
  • 嵌入式STM32学习——振动传感器
  • fast-livo2原理
  • 匈牙利算法
  • all-in-one方式安装kubersphere时报端口连接失败
  • 软件设计师-错题笔记-软件工程基础知识
  • Bash 字符串语法糖详解
  • 产业带数据采集方案:1688 API 接口开发与实时数据解析实践
  • 运算放大器稳定性分析
  • PHP API安全设计四要素:构建坚不可摧的接口防护体系
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 外交部:中方愿根据当事方意愿,为化解乌克兰危机发挥建设性作用
  • 电影路演,虚幻狂欢?
  • 韩国执政党总统候选人更换方案被否决,金文洙候选人资格即刻恢复