Prototyping Formal System Models with Active Objects
This work provides a tool for researchers and engineers to prototype formal models of distributed systems with early feedback, though it is incremental as it applies existing concepts like software product lines and object orientation.
The authors tackled the challenge of prototyping formal system models for distributed systems by using active object languages, specifically ABS, to create an executable model of a weak memory model that is modular with clear interfaces.
We propose active object languages as a development tool for formal system models of distributed systems. Additionally to a formalization based on a term rewriting system, we use established Software Engineering concepts, including software product lines and object orientation that come with extensive tool support. We illustrate our modeling approach by prototyping a weak memory model. The resulting executable model is modular and has clear interfaces between communicating participants through object-oriented modeling. Relaxations of the basic memory model are expressed as self-contained variants of a software product line. As a modeling language we use the formal active object language ABS which comes with an extensive tool set. This permits rapid formalization of core ideas, early validity checks in terms of formal invariant proofs, and debugging support by executing test runs. Hence, our approach supports the prototyping of formal system models with early feedback.