Nowadays, complex software systems, made from many preexisting components, are increasingly used for applications with high dependability requirements (telecommunication, railway, automotive...). This recent evolution demands new approaches to insure the dependability of the resulting systems, while taking explicitly into account the complex nature of these systems. In this thesis, we present how we extended reflexion, a long known architectural paradigm, to be able to encompass both the algorithmic considerations of fault tolerance (validity, observation, control), and the heterogeneous and composite nature of complex software systems (OS, libraries, middleware, application, ...). The main result of our investigation is a new conceptual fr...