
Developing and managing distributed systems is a complex task requiring expertise across multiple domains. This complexity considerably increases in swarm systems, which are highly dynamic and heterogeneous and require decentralised solutions that adapt to highly dynamic system conditions. The project TaRDIS focuses on supporting the correct and efficient development of applications for swarms and decentralised distributed systems, by combining a novel programming paradigm with a toolbox for supporting the development and executing of applications. TaRDIS proposes a language-independent event-driven programming paradigm that exposes, through an event-based interface, distribution abstractions and powerful decentralised machine learning primitives. The programming environment will assist in building correct systems by taking advantage of behavioural types to automatically analyse the component's interactions to ensure correctness-by-design of their applications, taking into account application invariants and the properties of the target execution environment. TaRDIS underlying distributed middleware will provide essential services, including data management and decentralised machine learning components. The middleware will hide the heterogeneity and address the dynamicity of the distributed execution environment by orchestrating and adapting the execution of different application components across devices in an autonomic and intelligent way. TaRDIS results will be integrated in a development environment, and also as standalone tools, both of which can be used for developing applications for swarm systems. The project results will be validated in the context of four different use cases provided by high impact industrial partners that range from swarms of satellites, decentralised dynamic marketplaces, decentralised machine learning solutions for personal-assistant applications, and the distributed control process of a smart factory.
APIs are typically flat structures, i.e. sets of service/method signatures specifying the expected service parameters and the kind of results one should expect in return. However, correct API usage also requires the individual services to be invoked in a specific order. Despite its importance, the latter information is either often omitted, or stated informally via textual descriptions. Behavioural Types are a suite of technologies that formalise of this information, elevating flat API descriptions to a graph structure of services. This permits automated analyses for correct API compositions so as to provide guarantees such as service compliance, deadlock freedom, dynamic adaptation in the presence of failure, load balancing etc. The proposed project aims to bring the existing prototype tools based on these technologies to mainstream programming languages and development frameworks used in industry.