In recent years, the world has witnessed the rapid emergence of several novel technologies and com- puting environments, including cloud computing, ubiquitous computing and sensor networks. These en- vironments have been rapidly capitalised upon for building new types of applications, and bringing added- value to users. At the same time, the resulting applications have been raising a number of new significant challenges, mainly related to system design, deployment and life-cycle management during runtime. Such challenges stem from the very nature of these novel environments, characterized by large scales, high dis- tribution, resource heterogeneity and increased dynamism. The main objective of this thesis is to provide a generic, reusable and extensible self-management solu- tion for these types of applications, in order to help alleviate this stringent problem. We are particularly interested in providing support for the runtime management of system architecture and life-cycle, focus- ing on applications that are component-based and that run in highly dynamic, distributed and large-scale environments. In order to achieve this goal, we propose a synergistic solution - the Cube framework - that combines techniques from several adjacent research domains, including self-organization, constraint satisfaction, self-adaptation and self-reflection based on architectural models. In this solution, a set of decentralised Autonomic Managers self-organize dynamically, in order to build and administer a target application, by following a shared description of administrative goals. This formal description, called Archetype, contains a graph-oriented specification of the application elements to manage and of various constraints associated with these elements. A prototype of the Cube frame- work has been implemented for the particular application domain of data-mediation. Experiments have been carried-out in the context of two national research projects: Self-XL and Medical. Obtained results indicate the viability of the proposed solution for creating, repairing and adapting component-based ap- plications running in distributed volatile and evolving environments.