SCEL is a formal language that takes a holistic approach to programming autonomic computing systems. In SCEL, systems are structured as ensembles of autonomic components. The language provides programmers with a complete set of linguistic abstractions for programming the behaviour of components and the formation of ensembles, and for controlling the interaction among them. These abstractions permit to describe autonomic systems in terms of behaviours, knowledge and aggregations, by complying with specific policies, and to support programming context-awareness, self-awareness and adaptation.
Each SCEL component is equipped with an interface, consisting of a collection of attributes describing its features (e.g., identity, functionalities, spatial coordinates, group memberships, trust level, response time, etc.). Attributes are used by components to dynamically organise themselves into ensembles. Specifically, components can single out communication partners by using predicates over their attributes, thus permitting a sort of attribute-based communication. Therefore, SCEL ensembles are not rigid fixed networks, but rather highly flexible structures where components linkages are dynamically established.
The solid semantic ground of SCEL lays the basis for developing logics, tools and methodologies for formally reasoning on systems behaviour in order to establish qualitative and quantitative properties of both the individual components and their ensembles.