Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Alloy meets the Algebra of Programming: a case study
Oliveira J., Ferreira M. IEEE Transactions on Software Engineering39 (3):305-326,2013.Type:Article
Date Reviewed: Sep 6 2013

Using a journaled file system operation refinement, the authors of this paper assert that future software development should be centered around readable documentation containing rigorous high-level mathematical specifications and calculations, and supported by validation and verification tools interoperating directly with this mathematical content. This future has not yet arrived, but as a plausible approximation, they present, in the style of the Algebra of Programming (AoP), a set of concise relation-algebraic formalizations and calculations that were validated using the relational model checker Alloy, which understands specifications in a closely related language.

After a quick but thorough introduction to these formalisms, they are put to work on the delete operation in a journaled (flash) file system motivated by the verified file system challenge [1].

Two nonfunctional requirements influence the development. The first is that the relevant in-memory index can be reconstructed from the journal after power loss, which turns into a concrete state invariant during the refinement. The second requires wear leveling, and is addressed in the design by replacing block overwrite operations with new block allocations and recording these in the journal.

This leads to the cost of the most complex calculations presented in the paper. Although the authors do not make this point, explicit formalization and verification of this nonfunctional requirement would be a valuable endeavor. In particular, this would plausibly involve traces of operations at different levels of abstraction, while remaining amenable to calculational reasoning in an appropriate flavor of Kleene algebra. The authors do point out that tool support for converting the more strongly typed language of AoP into the still quite different language of Alloy is urgently needed. For some already-existing tool support for calculational reasoning, the interested reader may want to look at Mu et al.’s “Algebra of Programming in Agda” [2].

This well-written paper demonstrates how relational thinking and calculational proof are essential tools for rigorous software specification and development.

Beyond its technical merits, I consider its key contributions to be the sketching of a mindset and skill set for development by refinement that software developers can aspire to (and schools can educate for), and a nice use case for the tool support of the future.

Reviewer:  W. Kahl Review #: CR141522 (1311-1013)
1) Joshi, R.; Holzmann, G. J. A mini challenge: build a verifiable filesystem. In Verified software: theories, tools, experiments (LNCS 4171). Springer, 2008, 49–56.
2) Mu, S.-C.; Ko, H.-S.; Jansson, P. Algebra of Programming in Agda: dependent types for relational program derivation. Journal of Functional Programming 19, 5 (2009), 545–579.
Bookmark and Share
 
Model Checking (D.2.4 ... )
 
 
Algorithm Design And Analysis (G.4 ... )
 
 
Software/ Program Verification (D.2.4 )
 
Would you recommend this review?
yes
no
Other reviews under "Model Checking": Date
Systems and software verification: model-checking techniques and tools
B ., Bidoit M., Finkel A., Laroussinie F., Petit A., Petrucci L., Schnoebelen P., McKenzie P., Springer-Verlag New York, Inc., New York, NY, 1999.  190, Type: Book (9783540415237)
Sep 30 2002
Module checking
Kupferman O., Vardi M., Wolper P. Information and Computation 164(2): 322-344, 2001. Type: Article
Mar 1 2002
SMC: a symmetry-based model checker for verification of safety and liveness properties
Sistla A., Gyuris V., Emerson E. ACM Transactions on Software Engineering and Methodology 9(2): 133-166, 2000. Type: Article
Sep 1 2000
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy