ERC – An object-oriented refinement calculus for Eiffel

Abstract.We present a refinement calculus for transforming object-oriented (OO) specifications (or ‘contracts’) of classes into executable Eiffel programs. The calculus includes the usual collection of algorithmic refinement rules for assignments, if-statements, and loops. However, the calculus also deals with some of the specific challenges of OO, namely rules for introducing feature calls and reference types (involving aliasing). The refinement process is compositional in the sense that a class specification is refined to code based only on the specifications (not the implementations) of the classes that the specification depends upon. We discuss how automated support for such a process can be developed based on existing tools. This work is done in the context of a larger project involving methods for the seamless design of OO software in the graphical design notation BON (akin to UML). The goal is to maintain model and source code integrity, i.e., the software developer can work on either the model or the code, where (ideally) changes in one view are reflected instantaneously and automatically in all views.

[1]  Cliff B. Jones,et al.  Systematic software development using VDM (2. ed.) , 1990, Prentice Hall International Series in Computer Science.

[2]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[3]  Richard F. Paige,et al.  Developing BON as an Industrial-Strength Formal Method , 1999, World Congress on Formal Methods.

[4]  Peter Müller,et al.  Modular Specification and Verification of Object-Oriented Programs , 2002, Lecture Notes in Computer Science.

[5]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[6]  Martin Gogolla,et al.  Validating UML Models and OCL Constraints , 2000, UML.

[7]  Jonathan Ostroff,et al.  Formalising Eiffel References and Expanded Types in PVS , 2003 .

[8]  Augusto Sampaio,et al.  An Inconsistency in Procedures, Parameters, and Substitution in the Refinement Calculus , 1999, Sci. Comput. Program..

[9]  K. Rustan M. Leino,et al.  Joining Specification Statements , 1999, Theor. Comput. Sci..

[10]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[11]  Gary T. Leavens,et al.  Mutation, Aliasing, Viewpoints, Modular Reasoning, and Weak Behavioral Subtyping , 2001 .

[12]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[13]  Jean-Marc Jézéquel,et al.  Design by Contract: The Lessons of Ariane , 1997, Computer.

[14]  J. B. Wordsworth,et al.  Software development with Z , 1992 .

[15]  Carroll Morgan,et al.  Programming from specifications (2nd ed.) , 1994 .

[16]  Mandayam K. Srivas,et al.  A Tutorial Introduction to PVS , 1998 .

[17]  Alena Griffiths,et al.  Modular reasoning in Object-Z , 1997, Proceedings of Joint 4th International Computer Science Conference and 4th Asia Pacific Software Engineering Conference.

[18]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[19]  K. Rustan M. Leino,et al.  ESC/Java User's Manual , 2000 .

[20]  Bertrand Meyer,et al.  Towards Practical Proofs of Class Correctness , 2003, ZB.

[21]  C. A. R. Hoare,et al.  Communicating Sequential Processes (Reprint) , 1983, Commun. ACM.

[22]  Stuart Kent,et al.  Quantified Assertions in Eiffel , 1995 .

[23]  Graeme Smith,et al.  The Object-Z Specification Language , 1999, Advances in Formal Methods.

[24]  Kai Engelhardt,et al.  Data Refinement: Model-Oriented Proof Methods and their Comparison , 1998 .

[25]  Fred B. Schneider,et al.  A Logical Approach to Discrete Math , 1993, Texts and Monographs in Computer Science.

[26]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[27]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.

[28]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[29]  David Lorge Parnas,et al.  Tabular Representation of Relations , 1992 .

[30]  Eric C. R. Hehner,et al.  A Practical Theory of Programming , 1993, Texts and Monographs in Computer Science.

[31]  MSc PhD Kevin Lano BSc Formal Object-Oriented Development , 1995, Formal Approaches to Computing and Information Technology FACIT.

[32]  Kim Walden,et al.  Seamless object-oriented software architecture , 1995 .

[33]  Graeme Smith Reasoning about Object-Z specifications , 1995, Proceedings 1995 Asia Pacific Software Engineering Conference.

[34]  Graeme Smith,et al.  Introducing Reference Semantics via Refinement , 2002, ICFEM.

[35]  Ana Cavalcanti,et al.  A Weakest Precondition Semantics for Refinement of Object-Oriented Programs , 2000, IEEE Trans. Software Eng..

[36]  Richard F. Paige,et al.  Metamodelling and Conformance Checking with PVS , 2001, FASE.

[37]  Bart Jacobs,et al.  The LOOP Compiler for Java and JML , 2001, TACAS.

[38]  K. R Leino,et al.  Towards Reliable Modular Programs , 1995 .