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