Affiliation:
1. University of California at Berkeley, USA
2. Microsoft Research, USA
Abstract
A real-world distributed system is rarely implemented as a standalone monolithic system. Instead, it is composed of multiple independent interacting components that together ensure the desired system-level specification. One can scale systematic testing to large, industrial-scale implementations by decomposing the system-level testing problem into a collection of simpler component-level testing problems.
This paper proposes techniques for compositional programming and testing of distributed systems with two central contributions: (1) We propose a module system based on the theory of compositional trace refinement for dynamic systems consisting of asynchronously-communicating state machines, where state machines can be dynamically created, and communication topology of the existing state machines can change at runtime; (2) We present ModP, a programming system that implements our module system to enable compositional reasoning (assume-guarantee) of distributed systems.
We demonstrate the efficacy of our framework by building two practical fault-tolerant distributed systems, a transaction-commit service and a replicated hash-table. ModP helps implement these systems modularly and validate them via compositional testing. We empirically demonstrate that the abstraction-based compositional reasoning approach helps amplify the coverage during testing and scale it to real-world distributed systems. The distributed services built using ModP achieve performance comparable to open-source equivalents.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference79 articles.
1. Martín Abadi and Leslie Lamport. 1995. Conjoining Specifications. ACM Trans. Program. Lang. Syst. (1995). 10.1145/203095.201069 Martín Abadi and Leslie Lamport. 1995. Conjoining Specifications. ACM Trans. Program. Lang. Syst. (1995). 10.1145/203095.201069
2. Akka. 2017. Akka Programming Language. http://akka.io/ . (2017). Akka. 2017. Akka Programming Language. http://akka.io/ . (2017).
Cited by
14 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Greybox Fuzzing of Distributed Systems;Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security;2023-11-15
2. Ulgen: A Runtime Assurance Framework for Programming Safe Cyber–Physical Systems;IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems;2023-11
3. Message Chains for Distributed System Verification;Proceedings of the ACM on Programming Languages;2023-10-16
4. Counterexample Driven Quantifier Instantiations with Applications to Distributed Protocols;Proceedings of the ACM on Programming Languages;2023-10-16
5. Psym: Efficient Symbolic Exploration of Distributed Systems;Proceedings of the ACM on Programming Languages;2023-06-06