The success of MDA depends on the definition of model transformations and component libraries which make a significant impact on tools that provide support for MDA. MDA is a young approach and several technical issues are not adequately addressed. For instance, existing MDA-based CASE tools do not provide adequate support to deal with component-based reuse (CASE, 2009). In light of this, we propose a metamodeling technique to reach a high level of reusability and adaptability of components. Reusability is the ability to use software elements for constructing many different applications. An ideal software reusability tehnology should facilitate a consistent system implementation, starting from the adaptation and integration of “implementation pieces” that exist in reusable components library. Software reusability has two main purposes: to increase the reliability of software and to reduce the cost of software development. Most current approaches to object oriented reusability are based on empirical methods. However the most effective forms of reuse are generally found at more abstract levels of design (Krueger, 1992). In MDA, software reusability is difficult because it requires taking many different requirements into account, some of which are abstract and conceptual, while others, such as efficiency are concrete. A good approach for MDA reusability must reconcile models at different abstraction levels. In this chapter, we analyze how to define reusable components in a way that fits with MDA and propose a megamodel for defining MDA components. Considering the relevant role that design patterns take in software evolution we exemplify MDA components for them.