Here we provide some detailed information about the project FoMaSE (Foundations of Macroprogramming-based Software Engineering).
The Foundations for Macro-programming-based Software Engineering (FoMaSE) basic research project aims to address the long-standing micro-macro link problem by the computer science and software engineering (SE) viewpoints: how to effectively engineer the software driving the micro-level computational parts of a system so that these collectively produce the designer’s intended macro-level behaviour (and how that intention could be specified)? On this, previous research on multi-agent (MAS) and collective adaptive systems (CAS) showed that domain-specific paradigms and “macro-level” abstractions (e.g., organisational, choreographical, and aggregate programming) can support analysis and development of software driving, e.g., robot swarms and Internet of Things systems. What is missing is a general theoretical and methodological framework for “macro-programming”, able to connect source code and computations to fundamental scientific principles on emergence, coarse-graining, and multi-scale dynamics, and to support systematic design of the micro-macro link. Concurrently, artificial intelligence (AI)-based methods like multi-agent reinforcement and evolutionary learning, often used for automatic design of swarm controllers, tend to suffer from issues like those on scalability, interpretability, and reward/fitness design. FoMaSE aims to fill these crucial gaps, by linking recent insights from physics on the discovery of emergent phenomena to the realm of programming languages and SE, and exploiting coarse-grained “macro-programs” to mitigate issues in AI-based design. Specifically, FoMaSE aims to provide: (i) novel formalisations of collective computation and macro-programming; (ii) innovative scalable methods for testing and analysis of software systems exhibiting emergent multi-scale dynamics; (iii) integrative macro-programming languages and hybrid AI-based methods supporting understanding, development, interpretability, and validation of the target micro-macro link. Conceptual and methodological tools emerging from FoMaSE are expected to open new research directions on “software engineering for multi-scale dynamics and artificial collective intelligence”, fostering a virtuous cross-disciplinary synergy among SE, computer, and complex systems science.
Term macro-programming was introduced in early 2000s in the context of programming paradigms for wireless sensor networks (WSN).
The notion was never addressed directly and in explicitly terms, until two surveys that emerged in 2021/2022, one of which from the FoMaSE principal investigator:
Conceptually, macro-programming is related to (at least) three broad areas:
However, the idea of macro-programming is more specific than what you normally find in those areas. In some way, the idea is of programming the overall collective behaviour of a computational system (possibly distributed) using denotations of macroscopic entities or outcomes. So, conceptually, the entire distributed computational ensemble is the “single machine” that you program against.
What are the benefits of macro-programming? Intuitively, you get a simplified, coarse-grained description of a collective behaviour. Of course, when talking about Turing-equivalent programming paradigms, it is a matter of practical expressiveness and the benefits related to program understanding, maintainability, and so on.
For project FoMaSE papers, see the corresponding Publications page.