Abstract
Collective adaptive systems exhibit a particular notion of interaction where environmental conditions largely influence interactions. Previously, we proposed a calculus, named AbC, to model and reason about CAS. The calculus proved to be effective by naturally modelling essential CAS features. However, the question on the tradeoff between its expressiveness and its efficiency, when implemented to program CAS applications, is to be answered. In this article, we propose an efficient and distributed coordination infrastructure for AbC. We prove its correctness, and we evaluate its performance. The main novelty of our approach is that AbC components are infrastructure agnostic. Thus the code of a component does not specify how messages are routed in the infrastructure but rather what properties a target component must satisfy. We also developed a Go API, named mathcal {G}{} textit{o}mathcal {A}{} textit{t}, and an Eclipse plugin to program in a high-level syntax which can be automatically used to generate matching Go code. We showcase our development through a non-trivial case study.
Highlights
Collective adaptive systems (CAS) [20] consist of a large number of components that interact anonymously, based on their properties and on contextual data, and combine their behaviours to achieve global goals
We provide an Eclipse plugin for GoAt to permit programming in a high-level syntax which can be analysed via formal methods by relying on the operational semantics of AbC
We proposed a distributed coordination infrastructure for the AbC calculus, and we proved its correctness
Summary
Collective adaptive systems (CAS) [20] consist of a large number of components that interact anonymously, based on their properties and on contextual data, and combine their behaviours to achieve global goals. AbC’s primitives are attribute-based [1,4] and abstract from the underlying coordination infrastructure (i.e. they are infrastructure agnostic) They rely on anonymous multicast communication where components interact based on mutual interests. We present a theoretical foundation of a distributed coordination infrastructure for message exchange and prove its correctness with respect to the original semantics of AbC [9]. We provide an attribute-based API for Go, named GoAt, with the goal of using the AbC primitives to program the interaction of CAS applications directly in Go. The actual implementation of GoAt fully relies on the formal semantics of AbC and is parametric with respect to the infrastructure that mediates interactions.
Published Version (Free)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have