Abstract
We present a theory of object-orientation on the basis of the refinement calculus. This theory allows for specifying the behaviour of objects and provides a calculus for the proof of relationships between classes such as refinement. Given two similar, but not identical classes, we present an algorithm to construct a common superclass which is refined by both classes, and an algorithm to construct a common subclass which refines both classes. As an example, we present an account manager to illustrate design and verification.
The overall approach aims at giving a simple theoretical basis for incremental object-oriented software construction. We demonstrate how formal specification and verification can be integrated into the development process, and thus can be put into practical use.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Preview
Unable to display preview. Download preview PDF.
References
A. J. Alencar and A. Goguen. OOZE: An object-oriented Z environment. In P. America, editor, ECOOP 91: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science 512. Springer Verlag, 1991.
P. America. Inheritance and subtyping in a parallel object-oriented language. In J. Bezevin, J.-M. Hullot, P. Cointe, and H. Lieberman, editors, ECOOP 87: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science 276. Springer Verlag, 1987.
Grady Booch. Object-oriented Design. Benjamin Cummings, 1991.
R. J. R. Back and J. von Wright. Refinement calculus, part i. In REX Workshop for Refinement of Distributed Systems, Lecture Notes in Computer Science 430. Springer Verlag, 1989.
R. J. R Back and J. von Wright. Duality in specification languages: A lattice-theoretical approach. Acta Informatica, 27, 1990.
D. A. Carrington, D. Duke, R. Duke, P. King, G. A. Rose, and G. Smith. Object-Z: An object-oriented extension to Z. In S. Vuong, editor, FORTE 89: Formal Description Techniques. North-Holland, 1990.
Eduardo Casais, Claus Lewerentz, Thomas Lindner, and Franz Weber. Formal methods and object-orientation. Technical report, Tutorial at TOOLS Europe 93, Versailles, France, March 1993.
M. Gogolla, S. Conrad, G. Denker, R. Herzig, N. Vlachantonis, and H.-D. Ehrich. TROLL light — the language and its development environment. This volume.
M. Gogolla, S. Conrad, and R. Herzig. Sketching concepts and computational model of TROLL light. In A. Miola, editor, Proceedings of DISCO '93: Design and Implementation of Symbolic Computation Systems, LNCS. Springer-Verlag, Berlin, Germany, 1993.
Erich Gamma, Richard Helm, John Vlissides, and Ralph E. Johnson. Design patterns: Abstraction and reuse of object-oriented design. In O. Nierstrasz, editor, Proceedings ECOOP '93, LNCS 707, pages 406–431. Springer-Verlag, Kaiserslautern, Germany, July 1993.
Samuel P. Harbison. Modula-3. Prentice Hall, 1992.
C. A. R. Hoare, He Jifeng, and J. W. Sanders. Prespecification in data refinement. Information Processing Letters, 25 (2), 1987.
Ivar Jacobson. Object-oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992.
Kevin Lano. Using formal and structured techniques in object-oriented development. Technical Report BUT-TN-LR 1029, Lloyds Register, 1992.
K. Lano and H. Haughton. Reasoning and refinement in object-oriented specification languages. In O. Lehrmann Madsen, editor, ECOOP 92: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science 615. Springer Verlag, 1992.
Thomas Lindner and Andreas Rüping. How formal object-oriented design supports reuse. In Eduardo Casais, editor, Architectures and Processes for Systematic Software Construction, FZI Publication 1/95. Forschungszentrum Informatik, Haid-und-Neu-Straße 10-14, D-76131 Karlsruhe, 1995.
J. M. Morris. A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9(3), dec 1987.
C. C. Morgan. Programming from Specifications. Prentice Hall, 1990.
Hanspeter Mössenböck. Object-Oriented Programming in Oberon-2. Springer-Verlag, 1993.
T. Nipkow. Nondeterministic data types: Models and implementations. Acta Informatica, 11, 1986.
F. Polack, M. Whiston, and P. Hitchcock. Structured analysis—a draft method for writing Z specifications. In J. E. Nicholls, editor, Z User Workshop 91, Workshops in Computing, pages 106–122. Springer-Verlag, 1991.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen. Object-oriented Modeling and Design. Prentice Hall, 1991.
Andreas Rüping. Hypertext — a case study of formal object-oriented software development. In Eduardo Casais and Claus Lewerentz, editors, Building Object Oriented Software Libraries, FZI Publication 6/93. Forschungszentrum Informatik, Haid-und-Neu-Straße 10-14, D-76131 Karlsruhe, 1993.
Andreas Rüping. Modules in object-oriented systems. In Raimund Ege, Madhu Singh, and Bertrand Meyer, editors, TOOLS 14: Technology of Object-Oriented Languages and Systems. Prentice Hall, 1994.
Andreas Rüping, Franz Weber, and Walter Zimmer. Demonstrating coherent design: A data structure catalogue. In Raimund Ege, Madhu Singh, and Bertrand Meyer, editors, TOOLS 11: Technology of Object-Oriented Languages and Systems. Prentice Hall, 1993.
Emil Sekerinski. A calculus for predicative programming. In R.S. Bird, C.C. Morgan, and J.C.P. Woodcock, editors, Mathematics of Program Construction, Lecture Notes in Computer Science 669. Springer Verlag, 1993.
Emil Sekerinski. Verfeinerung in der objektorientierten Programmkonstruktion. PhD thesis, Universität Karlsruhe, 1994.
Clemens Szyperski. Import is not inheritance — why we need both: Modules and classes. In O. Lehrmann Madsen, editor, ECOOP 92: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science 615. Springer Verlag, 1992.
M. Utting. An Object-Oriented Refinement Calculus with Modular Reasoning. PhD thesis, University of New South Wales, Kensington, 1992.
R. Wirfs-Brock, B. Wilkerson, and R. Wiener. Designing Object-oriented Software. Prentice Hall, 1990.
F. Weber. Getting class correctness and system correctness equivalent — how to get covariance right. In Raimund Ege, editor, TOOLS 8: Technology of Object-Oriented Languages and Systems. Prentice Hall, 1992.
Alan Wills. Capsules and types in Fresco: Program verification in Smalltalk. In P. America, editor, ECOOP 91: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science 512. Springer Verlag, 1991.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Lewerentz, C., Lindner, T., Rüping, A., Sekerinski, E. (1995). On object-oriented design and verification. In: Broy, M., Jähnichen, S. (eds) KORSO: Methods, Languages, and Tools for the Construction of Correct Software. Lecture Notes in Computer Science, vol 1009. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0015457
Download citation
DOI: https://doi.org/10.1007/BFb0015457
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-60589-8
Online ISBN: 978-3-540-47802-7
eBook Packages: Springer Book Archive