The complexity of building and validating software is a growing challenge for developers of distributed real-time and embedded (DRE) applications. While DRE applications are increasingly based on commercial off-the-shelf (COTS) hardware and software elements, substantial time and effort are spent integrating these elements into applications. Integration challenges stem largely from a lack of higher level abstractions for composing complex applications. As a result, considerable application-specific "glue code" must be rewritten for each successive DRE application.
This paper makes three contributions to the study of composing reusable middleware from standard components in DRE applications: it (1) describes the limitations of current approaches in middleware composition, (2) discusses the minimum set of requirements required of reusable middleware components, and (3) presents recurring patterns for software composition as applied to CIAO, our open-source component model implementation.