Abstract. Collective Adaptive Systems (CAS) are heterogeneous collections of autonomous task-oriented systems that cooperate on common goals forming a collective system. This class of systems is typically composed of a huge number of interacting agents that dynamically adjust and combine their behaviour to achieve specific goals. This chapter presents CARMA, a language recently defined to support specification and analysis of collective adaptive systems, and its tools developed for supporting system design and analysis. CARMA is equipped with linguistic constructs specifically developed for modelling and programming systems that can operate in open-ended and unpredictable environments. The chapter also presents the CARMA Eclipse plug-in that allows CARMA models to be specified by means of an appropriate high-level language. Finally, we show how CARMA and its tools can be used to support specification with a simple but illustrative example of a socio-technical collective adaptive system.