ROOM 的完整形式是什么

2024年10月8日 | 阅读 4 分钟

ROOM:实时面向对象建模

ROOM 代表 实时面向对象建模。ROOM 是一种用于 实时面向对象建模 的领域特定语言。

ROOM 是一种 用于定义软件系统的建模语言,可以从模型生成整个系统代码。它包括文本和图形符号。通常,生成的代码会补充手动编写的代码,例如 图形用户界面 (GUI)。然后,代码被编译并与提供基本服务和基类(例如消息传递)的运行时库链接。

ROOM 最初由商业实体 Object Time Developer 支持,现在正被 官方 Eclipse 项目 eTrice(一个用于实时软件开发的 CASE 工具) 使用。

ROOM Full Form

UML2 在定义时(UML 版本 2)包含了实时扩展,并吸纳了 ROOM 的许多元素。UML 代表统一建模语言。

ROOM 的历史

ROOM 创建于 1990 年代初期,用于建模实时系统,最初专注于 电信,但适用于任何事件驱动的实时系统。当 UML2 定义时,ROOM 的许多元素被纳入新版本并具有实时扩展。

ROOM 的思想和基本原理

ROOM Full Form

ROOM 是一个包含 结构、行为和继承三个维度 的软件系统。接下来的部分将更详细地解释这三个方面。

一个参与者可以通过组合包含其他参与者。在 ROOM 中,这些被称为参与者引用或 简称为 actor refs,允许创建任意深度的结构层次结构。

参与者的端口可以是其接口(从外部可见)的一部分、其结构(自身使用)的一部分,或两者兼而有之。仅作为接口一部分的端口称为中继端口,直接连接到子参与者的端口并委托给它。仅作为结构一部分的端口称为内部端点。属于结构和接口的端口称为外部端点。

ROOM 的行为

ROOM Full Form

在 ROOM 中,每个参与者的 行为都使用分层有限状态机(也称为状态机)定义。 状态机是一个有向图,包含节点(状态)和边(转换)。状态转换来自内部或外部端点的传入消息 触发,这些消息也称为事件或信号。如果转换指定了特定的触发器,则当状态机处于转换的源状态并且指定类型的消息到达时,它将发生。转换发生后,状态更改为目标状态。

当状态改变时执行特定代码,这些代码可以由程序员或建模者附加到状态和转换。在 ROOM 中,此代码以 细节级语言 编写,通常是代码生成的目标语言。状态可以具有进入和退出代码。在状态改变期间,首先执行源状态的退出代码, 接着是触发转换的动作代码,最后是目标状态的进入代码。通过参与者的端口发送消息是此代码的典型部分。

ROOM 状态机使用类似于 UML 状态图 的图形符号。本节提供的图表中可以看到一个示例。

此外,状态机可以具有层次结构,这意味着状态可以包含子状态机。这种结构可以扩展到任意深度。

在状态机中,运行到完成执行模型非常重要。这意味着参与者在接受下一个消息之前完全处理一个消息。执行环境保证了这种语义,因此尽管典型的 ROOM 系统由于异步通信而具有高并发性,但程序员/建模者不需要处理线程同步。ROOM 系统的异步性质反映了受控机器固有的 异步性,需要与同步系统不同的思维方式。然而,一旦习惯了,就会发现异步通信状态机非常适合控制软件。

ROOM 的继承

ROOM 与其他面向对象编程语言一样,利用了类的概念。 参与者是可以在系统内多次实例化的类,每个实例都跟踪其状态并能够与相同或不同类的其他实例通信。

此外,ROOM 允许参与者类的继承,采用单一继承模型,其中一个参与者类可以派生自另一个参与者类(其基类)。这种继承包括基类的所有特性,例如端口和参与者引用,以及状态机。派生的参与者类还可以向继承类添加额外的状态和转换。

ROOM 中的分层

ROOM 引入了分层的概念,它指的是软件系统的垂直层,由服务及其客户端组成。它引入了客户端侧的 服务访问点 (SAP) 和服务器侧的 服务提供点 (SPP) 的概念。SAP 和 SPP 的工作方式类似于参与者实现的端口,但它们与协议相关联,并且不需要显式绑定。相反,参与者通过层连接绑定到具体服务,然后将此连接递归传播到此参与者的所有子参与者。此概念类似于依赖注入。

ROOM 的用途

  1. 反应式系统复杂且需要专门的建模概念。
  2. ROOM 利用了计算机技术的最新发展,例如形式化方法、对象范式和图形用户界面。
  3. 它明确旨在利用基于计算机的自动化进行开发活动,从而提高生产力和质量。

ROOM 的应用

  • 电信
  • 国防(航空航天)
  • 制造业

结论

ROOM(实时面向对象建模)以其建模行为、结构和继承的结构化方法彻底改变了实时系统设计。通过结合分层状态机和分层概念,ROOM 增强了反应式系统的开发,使其在电信、国防和制造业等行业中具有不可估量的价值。


下一主题南盟