Using Larch to Specify Avalon/C++ Objects

A formal specification of three base Avalon/C++ classes - recoverable, atomic, and subatomic - is given. 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 to clarify places in the programming language where features interact, to make unstated assumptions explicit, and to characterize complex properties of objects. >

[1]  Jeannette M. Wing,et al.  Reliable distributed computing with Avalon/Common Lisp , 1990, Proceedings. 1990 International Conference on Computer Languages.

[2]  Stephen J. Garland,et al.  Debugging Larch Shared Language Specifications , 1990, IEEE Trans. Software Eng..

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

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

[5]  Butler W. Lampson,et al.  Distributed Systems - Architecture and Implementation, An Advanced Course , 1981, Advanced Course: Distributed Systems.

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

[7]  G. H. Chisholm,et al.  An approach to the verification of a fault-tolerant, computer-based reactor safety system: A case study using automated reasoning: Volume 2, Appendixes: Interim report , 1987 .

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

[9]  Wolfgang Polak,et al.  Formal Verification of Ada Programs , 1990, IEEE Trans. Software Eng..

[10]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[11]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[12]  Jeannette M. Wing,et al.  Machine assisted proofs of properties of Avalon programs , 1989 .

[13]  Terry V. Benzel Analysis of a Kernel Verification , 1984, IEEE Symposium on Security and Privacy.

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

[15]  Dines Bjørner,et al.  The Vienna Development Method: The Meta-Language , 1978, Lecture Notes in Computer Science.

[16]  P. M. Melliar-Smith,et al.  Formal Specification and Mechanical Verification of SIFT: A Fault-Tolerant Flight Control System , 1982, IEEE Transactions on Computers.

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

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

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

[20]  Stephen J. Garland,et al.  An Overview of LP, The Larch Power , 1989, RTA.

[21]  Jim Gray,et al.  Notes on Data Base Operating Systems , 1978, Advanced Course: Operating Systems.

[22]  G. L. Steele Common Lisp , 1990 .

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