  Due to the increased complexity of software development projects more and
more systems are described by models. The sheer size makes it impractical to
describe these systems by a single model. Instead many models are developed
that provide several complementary views on the system to be developed. This
however leads to a need for compositional models. This paper describes a
foundational theory of model composition in form of an algebra to explicitly
clarify different variants and uses of composition, their interplay with the
semantics of the involved models and their composition operators.
