Reusable requirements in automated verification of distributed systems
Skowyra, Rick; Lapets, Andrei; Bestavros, Azer; Kfoury, Assaf
The growing popularity of infrastructure-as-a-service cloud computing, software-defined networking, and related technologies have enabled the rapid creation of complex, large-scale distributed systems. Many of these systems are used by applications with stricter requirements than those covered by SLAs, such as those used by the financial, healthcare, and industrial sectors. Mathematical methods exist which can be used to formally verify many of these safety, liveness, and security properties, but are rarely used by system designers. In this paper, we identify brittle requirements as one of the problems which impede the use of formal methods in distributed system design, and propose a solution based on the decomposition of a formal model into a user-defined component and one or more domain abstractions. This decomposition enables reusable requirements, which can be shared across models without requiring redefinition or remapping of variable bindings. We provide a network-based example of domain abstraction, and define reusable requirements over this abstraction in several well-known logics. We concretely implement model decomposition with VML, a lightweight modeling language based on labeled transition systems. VML models can be used to rapidly prototype new distributed systems by utilizing domain abstractions with reusable requirements. To demonstrate, we create two examples using imperative and symbolic VML models.
↧