Reo: a channel-based coordination model for component composition

FARHAD ARBAB
2004 Mathematical Structures in Computer Science  
In this paper, we present Reo, which forms a paradigm for composition of software components based on the notion of mobile channels. Reo is a channel-based exogenous coordination model in which complex coordinators, called connectors, are compositionally built out of simpler ones. The simplest connectors in Reo are a set of channels with well-defined behaviour supplied by users. Reo can be used as a language for coordination of concurrent processes, or as a 'glue language' for compositional
more » ... truction of connectors that orchestrate component instances in a component-based system. The emphasis in Reo is just on connectors and their composition, and not on the entities that connect to, communicate and cooperate through these connectors. Each connector in Reo imposes a specific coordination pattern on the entities (for example, components) that perform I/O operations through that connector, without the knowledge of those entities. Channel composition in Reo is a very powerful mechanism for construction of connectors. We demonstrate the expressive power of connector composition in Reo through a number of examples. We show that exogenous coordination patterns that can be expressed as (meta-level) regular expressions over I/O operations can be composed in Reo out of a small set of only five primitive channel types. https://www.cambridge.org/core/terms. https://doi. F. Arbab 330 The (scripting) programs that constitute the glue code are inherently no different from other software. In complex systems, the bulk of the specialised glue code by itself can grow in its size and rigidity, rendering the system hard to evolve and maintain, in spite of the fact that this inflexible code wraps and connects reusable, maintainable and replaceable components. An alternative to writing scripts or specialised glue code is to construct the glue code compositionally, out of primitive connectors. A promising approach in this direction is to use channels as the primitives out of which such connectors are constructed. Reo defines the primitive operations that allow composition of channels into complex connectors. A channel is a point-to-point medium of communication with its own unique identity and two distinct ends. Channels can be used as the only primitive constructs in communication models for concurrent systems. Like the primitive constructs in other communication models, channels provide the basic temporal and spatial decouplings of the parties in a communication, which are essential for explicit coordination. Channel-based communication models are 'complete' in the sense that they can easily model the primitives of other communication models (for example, message passing, shared spaces or remote procedure calls). Furthermore, channel-based models have some inherent advantages over other communication models, especially for concurrent systems that are distributed, mobile, and/or whose architectures and communication topologies dynamically change while they run: -Efficiency: Like remote procedure calls and message passing, channel-based models support point-to-point communication. As such, in contrast to shared data space models, the intended target of communication is always unique and internally known to the system. In truly distributed systems, this allows more efficient implementations of point-to-point models.
doi:10.1017/s0960129504004153 fatcat:5rvhqzi5eva3jnkcfksj3v5tom