Architectural Building Blocks for Plug-and-Play System Design
[chapter]
Shangzhu Wang, George S. Avrunin, Lori A. Clarke
2006
Lecture Notes in Computer Science
The Problem Developing concurrent and distributed systems is difficult and costly Unpredictable behaviors due to interleavings between parallel components Component Interactions Represent synchronizations and communications between components Large design space of alternative semantics A wide range of interaction mechanisms (e.g. RPC, MP, EBN) and their variations Choosing appropriate interaction semantics for a system can be challenging Important yet hard to get right Semantics
more »
... of interactions intertwined with components' computations Changes in the interaction semantics often require changes in the components, limiting the reusability of components State of the Practice/Art Connectors represent component interactions Finite-state verification can be used to evaluate the correctness of design Provides early feedback about the appropriateness of the choices of interaction semantics ADLs are often restricted in the kinds of interaction semantics they support Component designs tend to include some aspects of the semantics of interactions But extremely costly when frequent changes are made to the design Architectural support to Minimize the impact on the components when connectors are changed Allow easy experimentation with alternative design choices of interaction semantics Increase the reusability of both components and connectors Reduce the cost of frequently re-computing models for finite-state verification Outline of Our Approach Support plug-and-play system design Define a small set of standard interfaces for different component interactions Define a library of building blocks for the construction of connectors with different interaction semantics Facilitate design-time verification Increase reusability of component models Build connector models by composing reusable models of building blocks Standard Interfaces for Component Interactions Only a small set of interfaces are needed Define the standard protocols between components and connectors The same interface can be used with many different interaction semantics Connectors can be modified or replaced without changing the components Components are more likely to be reused when the design of interactions is changed A Library of Building Blocks Connectors are decomposed into channels and ports Composable and reusable Channels represent the communication media of connectors Ports are mediators between components and channels capture different synchronization semantics of connectors important for supporting the standard component interfaces Protocols Between Building Blocks A message passing example Asynchronous Nonblocking Send component channel send port m m BufferStatus = "inOk"/ "inFail" RecvStatus = "sendOk" "recvOk" m RecvStatus = "sendOk" component channel send port m m BufferStatus = "inOk" m
doi:10.1007/11783565_7
fatcat:623lyux4nzcg7knkxwxktcpfdq