  Today's distributed and pervasive computing addresses large-scale
cyber-physical ecosystems, characterised by dense and large networks of devices
capable of computation, communication and interaction with the environment and
people. While most research focusses on treating these systems as "composites"
(i.e., heterogeneous functional complexes), recent developments in fields such
as self-organising systems and swarm robotics have opened up a complementary
perspective: treating systems as "collectives" (i.e., uniform, collaborative,
and self-organising groups of entities). This article explores the motivations,
state of the art, and implications of this "collective computing paradigm" in
software engineering, discusses its peculiar challenges, and outlines a path
for future research, touching on aspects such as macroprogramming, collective
intelligence, self-adaptive middleware, learning, synthesis, and
experimentation of collective behaviour.
