[1] The initial focus was on telecommunications, even though ROOM can be applied to any event-driven real-time system.
The code is compiled and linked against a runtime library which provides base classes and basic services (e.g. messaging).
ROOM describes a software system along three dimensions: structure, behavior and inheritance.
State transitions are triggered by incoming messages from an internal or external end port.
For details of the semantics of hierarchical state machines we refer to the original book.
[3] An important concept in the context of state machines is the execution model of run-to-completion.
Since the run-to-completion semantics is guaranteed by the execution environment, the programmer/modeler doesn't have to deal with classical thread synchronization.
And this despite the fact that typical ROOM systems are highly concurrent because of the asynchronous communication.
Definitely this requires another mind set than the one that is needed for functional programming of synchronous systems.
But after a short while of getting accustomed it will be evident that asynchronously communicating state machines are perfectly suited for control software.
Similar to other modern programming languages ROOM allows inheritance of actor classes.
It inherits all features of the base class like ports and actor refs, but also the state machine.
This notion refers to the vertical layers of a software system consisting of services and their clients.
From the point of view of an actor implementation the SAPs and SPPs work like ports.