The success of UML and more generally, of the model driven approach, has led to a proliferation of models, representing various systems, but the description of large applications may actually be composed of several system models. Therefore, the challenge is to determine how to compose independent system models, in order to build large applications. We present in this paper the software federation approach developed by our team. A federation relies on the concept of a domain, which describes a specific application domain, represented with a specific metamodel. Building a software federation means composing independently developed domains, by composing their meta-models. The UML standard, which is well supported by tools, has been found convenient for describing our metamodels, but it turns out that it does not contain sufficient modelling capabilities for the composition of these models. This paper analyses the need for model composition, the available UML concepts related to model com...