Start date: Jun 1, 2014,
End date: May 31, 2019
"Recent technological evolutions, including the cloud, the multicore, the social and the mobiles ones, are turning computing ubiquitously distributed. Yet, building high-assurance distributed programs is notoriously challenging. One of the main reasons is that these systems usually seek to achieve several goals at the same time. In short, they need to be efficient, responding effectively in various average-case conditions, as well as reliable, behaving correctly in severe, worst-case conditions. As a consequence, they typically intermingle different strategies: each to cope with some specific condition, e.g., with or without node failures, message losses, time-outs, contention, cache misses,over-sizing, malicious attacks, etc. The resulting programs end up hard to design, prove, verify, implement, test and debug. Not surprisingly, there are anecdotal evidences of the fragility of the most celebrated distributed systems.The goal of this project is to contribute to building high-assurance distributed programs by introducing a new dimension for separating and isolating their concerns, as well as a new scheme for composing and reusing them in a modular manner. In short, the project will explore the inherent power and limitations of a novel paradigm, Adversary-Oriented Computing (AOC). Sub-programs, each implementing a specific strategy to cope with a given adversary, modelling a specific working condition, are designed, proved, verified, implemented, tested and debugged independently. They are then composed, possibly dynamically, as black-boxes within the same global program. The AOC project is ambitious and it seeks to fundamentally revisit the way distributed algorithms are designed and distributed systems are implemented. The gain expected in comparison with today's approaches is substantial, and I believe it will be proportional to the degree of difficulty of the distributed problem at hand."
Get Access to the 1st Network for European Cooperation