ROOM 的完整形式是什么2024年10月8日 | 阅读 4 分钟 ROOM:实时面向对象建模ROOM 代表 实时面向对象建模。ROOM 是一种用于 实时面向对象建模 的领域特定语言。 ROOM 是一种 用于定义软件系统的建模语言,可以从模型生成整个系统代码。它包括文本和图形符号。通常,生成的代码会补充手动编写的代码,例如 图形用户界面 (GUI)。然后,代码被编译并与提供基本服务和基类(例如消息传递)的运行时库链接。 ROOM 最初由商业实体 Object Time Developer 支持,现在正被 官方 Eclipse 项目 eTrice(一个用于实时软件开发的 CASE 工具) 使用。 ![]() UML2 在定义时(UML 版本 2)包含了实时扩展,并吸纳了 ROOM 的许多元素。UML 代表统一建模语言。 ROOM 的历史ROOM 创建于 1990 年代初期,用于建模实时系统,最初专注于 电信,但适用于任何事件驱动的实时系统。当 UML2 定义时,ROOM 的许多元素被纳入新版本并具有实时扩展。 ROOM 的思想和基本原理![]() ROOM 是一个包含 结构、行为和继承三个维度 的软件系统。接下来的部分将更详细地解释这三个方面。 一个参与者可以通过组合包含其他参与者。在 ROOM 中,这些被称为参与者引用或 简称为 actor refs,允许创建任意深度的结构层次结构。 参与者的端口可以是其接口(从外部可见)的一部分、其结构(自身使用)的一部分,或两者兼而有之。仅作为接口一部分的端口称为中继端口,直接连接到子参与者的端口并委托给它。仅作为结构一部分的端口称为内部端点。属于结构和接口的端口称为外部端点。 ROOM 的行为![]() 在 ROOM 中,每个参与者的 行为都使用分层有限状态机(也称为状态机)定义。 状态机是一个有向图,包含节点(状态)和边(转换)。状态转换 由 来自内部或外部端点的传入消息 触发,这些消息也称为事件或信号。如果转换指定了特定的触发器,则当状态机处于转换的源状态并且指定类型的消息到达时,它将发生。转换发生后,状态更改为目标状态。 当状态改变时,执行特定代码,这些代码可以由程序员或建模者附加到状态和转换。在 ROOM 中,此代码以 细节级语言 编写,通常是代码生成的目标语言。状态可以具有进入和退出代码。在状态改变期间,首先执行源状态的退出代码, 接着是触发转换的动作代码,最后是目标状态的进入代码。通过参与者的端口发送消息是此代码的典型部分。 ROOM 状态机使用类似于 UML 状态图 的图形符号。本节提供的图表中可以看到一个示例。 此外,状态机可以具有层次结构,这意味着状态可以包含子状态机。这种结构可以扩展到任意深度。 在状态机中,运行到完成执行模型非常重要。这意味着参与者在接受下一个消息之前完全处理一个消息。执行环境保证了这种语义,因此尽管典型的 ROOM 系统由于异步通信而具有高并发性,但程序员/建模者不需要处理线程同步。ROOM 系统的异步性质反映了受控机器固有的 异步性,需要与同步系统不同的思维方式。然而,一旦习惯了,就会发现异步通信状态机非常适合控制软件。 ROOM 的继承ROOM 与其他面向对象编程语言一样,利用了类的概念。 参与者是可以在系统内多次实例化的类,每个实例都跟踪其状态并能够与相同或不同类的其他实例通信。 此外,ROOM 允许参与者类的继承,采用单一继承模型,其中一个参与者类可以派生自另一个参与者类(其基类)。这种继承包括基类的所有特性,例如端口和参与者引用,以及状态机。派生的参与者类还可以向继承类添加额外的状态和转换。 ROOM 中的分层ROOM 引入了分层的概念,它指的是软件系统的垂直层,由服务及其客户端组成。它引入了客户端侧的 服务访问点 (SAP) 和服务器侧的 服务提供点 (SPP) 的概念。SAP 和 SPP 的工作方式类似于参与者实现的端口,但它们与协议相关联,并且不需要显式绑定。相反,参与者通过层连接绑定到具体服务,然后将此连接递归传播到此参与者的所有子参与者。此概念类似于依赖注入。 ROOM 的用途
ROOM 的应用
结论ROOM(实时面向对象建模)以其建模行为、结构和继承的结构化方法彻底改变了实时系统设计。通过结合分层状态机和分层概念,ROOM 增强了反应式系统的开发,使其在电信、国防和制造业等行业中具有不可估量的价值。 下一主题南盟 |
我们请求您订阅我们的新闻通讯以获取最新更新。