Cloud computing provides ubiquitous networked access to a shared and virtualised pool of computing capabilities that can be provisioned with minimal management effort. Cloud applications are deployed on cloud infrastructures and delivered as services. The PaaSage project aims to facilitate the modelling and execution of cloud applications by leveraging model-driven engineering (MDE) and by exploiting multiple cloud infrastructures. The Cloud Application Modelling and Execution Language (CAMEL) is the core modelling and execution language developed in the PaaSage project and enables the specification of multiple aspects of cross-cloud applications (i.e., applications deployed across multiple private, public, or hybrid cloud infrastructures). By exploiting models at both design- and run-time, and by allowing both direct and programmatic manipulation of models, CAMEL enables the management of self-adaptive cross-cloud applications (i.e., cross-cloud applications that autonomously adapt to changes in the environment, requirements, and usage). In this paper, we describe the design and implementation of CAMEL, with emphasis on the integration of heterogeneous domain-specific languages (DSLs) that
cover different aspects of self-adaptive cross-cloud applications. Moreover, we provide a real-world running example to illustrate how to specify models in a concrete textual syntax and how to dynamically adapt these models during the application life cycle. Finally, we provide an evaluation of CAMEL’s usability and usefulness, based on the technology acceptance model (TAM)