工程
的未来
嵌入的
软件

通过以下方式提高生产率和质量
使用可扩展DSL、灵活的符号
和集成验证工具。

形象

什么是mbeddr?


mbeddr是一套集成的、可扩展的嵌入式语言软件工程,外加一个IDE。它支持实现、测试、验证和流程方面。它与命令行构建工具和集成服务器集成,以及基于文件的版本控制系统。

mbeddr支持需求和产品线定义、软件文档、,在C和C扩展中实现,如状态机物理单元或接口,以及组件,以及测试、模拟和正式验证。

mbeddr带有最先进的IDE,包括语法着色,代码完成、转到定义、实时类型检查、快速修复、,重构、可定制的查找用法、代码相关部分之间的自动同步,版本控制集成和调试。



一系列开箱即用支持的功能



图像

已清理C99

C99的清理版本有助于避免低级错误。对于例如,不支持预处理器及其所有一流的概念支持合法使用比如一个健壮的模块系统。mbeddr还支持本地人布尔值类型,强制使用size-aware整型,还有一个清理过的函数类型、函数指针和lambdas的语法。

图像

报告和日志记录

报告和日志记录对于嵌入式应用程序很重要。mbeddr包含用于报告程序事件的丰富框架和记录数据。当他们使用标准错误默认情况下,两者都是可以重定向到任意其他系统,包括串行端口或错误存储。可以使用有选择地禁用日志语句运行时占用空间为零。

图像

测试

测试在嵌入式软件中非常重要。在mbeddr中,测试用例是一流的概念,它们支持一组不同的断言声明。可以将测试分组为套件并调用,从报告数字的主功能操作系统的故障主要的的返回值。还可以为组件语言。



图像

物理单位

许多嵌入式系统处理来自现实世界的数量,mbeddr附带了物理单位的扩展,以帮助表示这些量。类型和文字都可以用单位进行注释。七个国际单位是预定义,用户可以定义自己的派生或可转换单位。类型系统使用这些单元进行计算,并在IDE中报告错误。运行时开销为零,因为生成的代码没有单元的表示。

图像

状态机

基于状态的行为在嵌入式软件中普遍存在。mbeddr本机支持具有事件、变量、状态和带有保护的转换。国家有入境、出境和做动作,过渡也可以有动作。状态机可以是分层的并使用ε跃迁。状态机可以从C代码及其自身触发在操作中与C代码交互。状态机可以编辑为文本和表格,并且可以可视化。可通过模型检查进行验证。

图像

接口和组件

模块化对于构建灵活、可测试和可维护的软件至关重要。为此,mbeddr支持与合同(前置和后置条件、协议状态机)。与AUTOSAR类似,组件可以提供或要求接口。可以在运行时或静态地验证合同。组件支持用于测试的模拟。转换为C可以以各种方式发生,其中一些开销很小。关系可以对接口和组件之间的关系进行可视化。



图像

要求、追踪和文件

尽管目的是正式描述系统,但散文仍然发挥着重要作用。mbeddr支持捕获需求的语言它看起来像文档,但结构很好。任意DSL可以是以各种方式与需求混合。追踪任意设计、架构支持或实现元素。文档语言有助于创建代码集成文档,可导出为HTML或LaTeX。

图像

产品线可变性

几乎所有嵌入式系统都是在产品线的背景下开发的。mbeddr支持描述可变性通过功能模型。检查要素模型配置是否符合特征模型中表示的约束。工件可以适应静态变量(通过存在条件)和运行时变量(通过专用switch语句)。存在条件可以覆盖在程序上用任何语言表达。

图像

正式验证

mbeddr的高级DSL便于验证。mbeddr集成了几个验证工具,其中状态机的符号模型检查,合同分析用C代码的模型检查/数据流分析以及决策表和特征模型的SMT求解。输入到验证工具是由mbeddr语言生成的验证被提升到扩展级别。



图像

执行和调试

程序可以直接从mbeddr IDE中执行。失败的断言(在测试用例中)超链接到导致失败的代码,简化了追踪测试中的问题。调试在延伸;例如,可以单步执行组件或状态机。扩展的低级实现没有显示出来。手表window知道mbeddr特定的类型。

图像

IDE支持

mbeddr提供了最先进的IDE支持,包括语法着色、,代码完成、转到定义、实时类型系统检查、快速修复(意图)、,重构、可定制的查找用法,以及代码。这些功能适用于C、其扩展、需求和文档语言以及用户开发的所有语言或扩展。

图像

版本控制

所有代码都存储在XML文件中,因此与主流代码集成版本控制系统,其中包括SVN和git。能够看到差异和合并冲突,mbeddr/MPS支持使用投影编辑器,适用于任何语法。此外,IDE支持绝大多数版本控制系统操作,如提交、,更新或还原更改。还提供了当地历史记录。



mbeddr如何以及为什么是可扩展的?


所有现有语言都可以通过新的语言结构、键入规则、约束、,生成器或IDE功能。此外,还可以添加任意新语言和(可选)与现有语言集成。扩展包括IDE和调试器。新视图,也可以添加窗口、菜单项或按钮,实际上还可以添加任意Java库。

我们认为用户应该能够在任何他们希望的方式。它们不应该受到某些“扩展API”的限制。为此,mbeddr构建在JetBrains MPS之上,高效构建、扩展和组合语言的工具和他们的IDE。第三方可以使用相同的语言工程mbeddr团队用于构建现有语言的工具。

MPS使用投影编辑器。因此,MPS支持非文本符号,如表格、数学符号和(很快)图形。通过避免解析器歧义,MPS还支持本质上不受约束的语言构成和扩展。所有mbeddr提供的30+C语言扩展是模块化扩展,定义而不修改C本身。



mbeddr体系结构和可扩展性


mbeddr分为5层,并解决了三个不同的问题(见下文)。平台该层由JetBrains MPS语言工作台组成,它支持整体方法。核心层包括mbeddr中使用的基本语言;这三种情况各不相同担忧。默认扩展层由一组预定义的核心语言扩展组成可以使用现成的开发软件。用户扩展层为空,用于由用户填写。后端层由现有工具编译和分析工具组成哪一个mbeddr使用。有关mbeddr的详细说明,请参阅文件部分.


 
 

实施关注点


实施问题解决了基于C的应用程序开发。在核心层,mbeddr附带C99在MPS中的实现。与C99有一些小区别预处理器不向用户公开;一流的概念供合法使用预处理器(包括模块系统)。在默认扩展层上实现关注点来自决策表、接口和组件的C扩展,状态机、物理单元、测试以及日志记录和跟踪。用户扩展层是通过定义为空;用户可以轻松扩展C内核以及默认扩展名。最先进的IDE支持适用于所有语言,包括语法高亮显示、代码完成、实时类型检查和重构。实现关注点还附带了一个可扩展的能够在扩展级别进行调试的调试器,因此当需要调试时,抽象不会崩溃。后端层,实现关注点依赖于C编译器,C调试器和用于将现有C代码导入mbeddr的工具。默认情况下,mbeddr使用海湾合作委员会编译器和gdb公司调试器。

分析关注点


分析关注点为一些实现关注点提供的默认扩展。分析本身由现有外部工具执行。然而,mbeddr集成了这些工具紧密地通过(a)提供语言抽象来方便地描述行为(b)将此描述转换为分析工具,(c)运行工具,(d)将工具的输出提升回原位到原始抽象级别,以便用户更容易理解。综合分析基于符号模型检查、SMT求解和C级模型检查。具体而言,以下分析是可用:可以使用符号模型检查器检查状态机。它验证集合默认属性和可选的用户定义属性。决策表可以检查完整性和一致性。功能模型配置包括检查一致性。最后,可以静态检查接口契约:接口可以指定前置和后置条件以及协议状态指定接口操作的有效调用顺序的计算机。这些合同可以通过C级模型检查器。

过程关注点


过程关注点包括将mbeddr集成到开发过程中的设施。这些设施可以与任意mbeddr语言一起使用,例如所有默认的和用户定义的C扩展。这个要求支持提供了一种描述语言要求。痕迹可以附加到任何以语言。任意附加数据,用任何语言,可以添加到需求中。这个产品线支持定义特征模型和配置。特征模型可以通过存在条件连接到其他工件,虽然存在条件是静态的,并且适用于任何语言,还有C语言特有的支持来评估运行时的可变性。这个文档语言方面支持将散文文档作为mbeddr公司项目,可导出为HTML或LaTeX。它支持与程序元素的紧密集成。他们可以引用(如果元素本身是重命名),程序代码可以嵌入为文本或图像。嵌入式只要重新生成文档,就会更新代码。可视化提供呈现图表的工具。报告和评估是对代码的可自定义查询。