The future of the computing technology relies on fast access, transformation, and exchange of data across large-scale networks such as the Internet. The design of software systems that support high-frequency parallel accesses to high-quantity data is a fundamental challenge. As more scalable alternatives to traditional relational databases, distributed data structures (DDSs) are at the basis of a wide range of automated services, for now, and for the foreseeable future.
This project aims to improve our understanding of the theoretical foundations of DDSs. The design and the usage of DDSs are based on new principles, which require rigorous engineering methodologies. Specifically, we require design procedures based on precise specifications, and automated reasoning techniques for enhancing the reliability of the engineering process.
The targeted breakthrough of this project is developing automated formal methods for rigorous engineering of DDSs. A first objective is to define coherent formal specifications that provide precise requirements at design time and explicit guarantees during their usage. Then, we will investigate practical programming principles, compatible with these specifications, for building applications that use DDSs. Finally, we will develop efficient automated reasoning techniques for debugging or validating DDS implementations against their specifications. The principles underlying automated reasoning are also important for identifying best practices in the design of these complex systems to increase confidence in their correctness. The developed methodologies based on formal specifications will thus benefit both the conception and automated validation of DDS implementations and the applications that use them.
The project succeeded in addressing all of the issues mentioned above. It introduced various frameworks to specify DDSs, investigated the theoretical limits of checking conformance to these specifications automatically along with pragmatic approaches based on suitable heuristics. For applications built on top of DDSs, it proposed a concept of robustness against weakening the guarantees of the underlying DDS and methodologies for establishing it. This concept makes it possible to retain the reliability of an application while using DDSs with bigger throughput that increase its performance. These results form the basis of new engineering methodologies that have a wide spectrum of applications and can help improving the reliability of software systems relying on DDSs.