Current software development practices frequently incorporate the reuse of multiple, existing, and often heterogeneous, components in a single application. This style of development is thought to increase adaptability and evolvability of the resulting integrated system. Unfortunately, it also manifests complex interoperability conflicts among participating components. Though commercial middleware is being touted as resolving these problems, often its use results in incomplete solutions, which are neither flexible nor evolvable. To overcome these problems, it is necessary to capture and codify the inherent nature of interoperability conflicts in order to determine and apply appropriate resolution techniques in a principled manner. Toward this end, this project focuses on developing a theory of integration founded on formulating software architecture descriptions of interoperability conflicts, mapping these conflicts to resolution strategies, and defining a formal composition of these strategies as they are used in middleware frameworks. The goal of this research is, therefore, to provide key resources at a foundational level to make principled and repeatable design decisions that result in more complete and adaptable integration solutions.