Declarative Macro-Programming of Collective Systems with Aggregate Computing: An Experience Report

Abstract

Massive deployments of devices across all kinds of environments pose the need for engineering their collaborative, macro-level behaviour. To address this challenge, so-called macro-programming approaches have emerged. A prominent nature-inspired example of macro-programming is aggregate computing. In aggregate computing, macroscopic and self-organising behaviour is declared as a functional manipulation of computational fields. Fields are macro-level abstractions mapping devices to values over time, whose computation details, typically based on an execution model of asynchronous sense–compute–interact rounds, are abstracted. In more than ten years of research, multiple software engineering concerns in aggregate computing systems have been investigated, addressing aspects at the level of the language, execution dynamics, middleware, and deployment. Arguably, the enabling factor for many of such investigations and results is precisely the declarative nature of the aggregate computing paradigm. In this experience report, we analyse aggregate computing through the lenses of declarative programming, and draw significant insights and perspectives related to the engineering of complex adaptive systems.

Publication
Proceedings of the 26th International Symposium on Principles and Practice of Declarative Programming
Roberto Casadei
Roberto Casadei
Assistant Professor in Computer Science and Engineering @ University of Bologna

My research is at the intersection of artificial collective intelligence and software engineering.