  In open systems, i.e. systems operating in an environment that they cannot
control and with components that may join or leave, behaviors can arise as side
effects of intensive components interaction. Finding ways to understand and
design these systems and, most of all, to model the interactions of their
components, is a difficult but important endeavor. To tackle these issues, we
present AbC, a calculus for attribute-based communication. An AbC system
consists of a set of parallel agents each of which is equipped with a set of
attributes. Communication takes place in an implicit multicast fashion, and
interactions among agents are dynamically established by taking into account
"connections" as determined by predicates over the attributes of agents. First,
the syntax and the semantics of the calculus are presented, then expressiveness
and effectiveness of AbC are demonstrated both in terms of modeling scenarios
featuring collaboration, reconfiguration, and adaptation and of the possibility
of encoding channel-based interactions and other interaction patterns.
Behavioral equivalences for AbC are introduced for establishing formal
relationships between different descriptions of the same system.
