The increasingly diverse and dynamic contexts in which current applications are run imposes them to adapt and to become more autonomous. The goal of this thesis is to ease the development of such self-adaptive applications, by considering adaptation as an aspect which should be defined separately from the rest of the application, so as to be integrated and modified dynamically. To this end we propose Safran, an extension of the Fractal component model enabling dynamic association of adaptation policies to the components of an application. These policies are programmed using a Domain-Specific Language in the form of reactive rules. Their execution harnesses WildCAT, a context-awareness system which can detect changes in the execution context...