Specifying Avalon Objects in Larch

This paper gives a formal specification of three base Avalon/C++ classes: recoverable, atomic, and subatomic. Programmers derive from class recoverable to define persistent objects, and from either class atomic or class subatomic to define atomic objects. The specifications, written in Larch, provide the means for showing that classes derived from the base classes implement objects that are persistent or atomic, and thus exemplify the applicability of an existing specification method to specifying “nonfunctional” properties. Writing these formal specifications for Avalon/C++'s built-in classes has helped clarify places in the programming language where features interact, make explicit unstated assumptions, and make precise complex properties of objects.

[1]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[2]  Alfred Z. Spector,et al.  Distributed logging for transaction processing , 1987, SIGMOD '87.

[3]  Umeshwar Dayal,et al.  Proceedings of the 1987 ACM SIGMOD international conference on Management of data , 1987 .

[4]  Butler W. Lampson,et al.  Atomic Transactions , 1980, Advanced Course: Distributed Systems.

[5]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[6]  James J. Horning,et al.  Synchronization Primitives for a Multiprocessor: A Formal Speci cation , 1987 .

[7]  William E. Weihl,et al.  SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES , 1984 .

[8]  Alfred Z. Spector,et al.  The Camelot project , 1986 .

[9]  Maurice Herlihy,et al.  Inheritance of synchronization and recovery properties in Avalon/C++ , 1988, Computer.

[10]  Stephen J. Garland,et al.  Inductive methods for reasoning about abstract data types , 1988, POPL '88.

[11]  Bjarne Stroustrup,et al.  The C++ Programming Language, First Edition , 1986 .

[12]  Sape Mullender,et al.  Distributed systems , 1989 .

[13]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[14]  Maurice Herlihy,et al.  Reasoning about Atomic Objects , 1988, FTRTFT.

[15]  E. B. Moss,et al.  Nested Transactions: An Approach to Reliable Distributed Computing , 1985 .

[16]  Butler W. Lampson,et al.  Distributed Systems — Architecture and Implementation , 1982, Lecture Notes in Computer Science.