Model-Driven Engineering is a discipline for the construction of systems based on the use of models. Although research is active into the use of MDE and its core technologies such as languages for storing, transforming and manipulating models, less attention has been paid to techniques for ensuring the safe reuse and composition of the elements which manipulate models. This thesis presents an approach based on ideas and formalisms from the domain of type systems for defining clear notions of models and model types, as well as a relation for model type substitutability. These model typing principles are demonstrated through their implementation in the Kermeta modelling and metamodelling language. Additionally, a presentation is made of the e...