This thesis presents ideas for a system composing software components in binary form. Binary components are important since most off-the-shelf components on a mature component market can be expected to be delivered in binary form only. The focus in this work is to enable efficient composition and bridging of architectural mismatch between such components.
The central result is a model for describing binary components and their interactions. This model supports invasive composition, i.e., the code of the components themselves can be transformed for more efficient adaptation. The model is also designed to be independent of the source and binary language of the individual components. It supports unforeseen composition, by finding interaction points between software objects and making them available for modification. Therefore, it can be used to insert variability in places where it was not originally intended.
In addition to the model, an architecture for a composition system is presented. In this architecture, language dependent parts of the composition process are separated into specific modules. Thus, the central parts of the architecture become language independent, allowing complex composition operators to be defined and reused for a multitude of languages.