  In this paper we present CARMA, a language recently defined to support
specification and analysis of collective adaptive systems. CARMA is a
stochastic process algebra equipped with linguistic constructs specifically
developed for modelling and programming systems that can operate in open-ended
and unpredictable environments. 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. A CARMA model, termed a collective,
consists of a set of components, each of which exhibits a set of attributes. To
model dynamic aggregations, which are sometimes referred to as ensembles, CARMA
provides communication primitives that are based on predicates over the
exhibited attributes. These predicates are used to select the participants in a
communication. Two communication mechanisms are provided in the CARMA language:
multicast-based and unicast-based. In this paper, we first introduce the basic
principles of CARMA and then we show how our language can be used to support
specification with a simple but illustrative example of a socio-technical
collective adaptive system.
