Skip to main content

On object-oriented design and verification

  • Methods for Correctness
  • Chapter
  • First Online:
KORSO: Methods, Languages, and Tools for the Construction of Correct Software

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1009))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. Grady Booch. Object-oriented Design. Benjamin Cummings, 1991.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. R. J. R Back and J. von Wright. Duality in specification languages: A lattice-theoretical approach. Acta Informatica, 27, 1990.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. M. Gogolla, S. Conrad, G. Denker, R. Herzig, N. Vlachantonis, and H.-D. Ehrich. TROLL light — the language and its development environment. This volume.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. Samuel P. Harbison. Modula-3. Prentice Hall, 1992.

    Google Scholar 

  12. C. A. R. Hoare, He Jifeng, and J. W. Sanders. Prespecification in data refinement. Information Processing Letters, 25 (2), 1987.

    Google Scholar 

  13. Ivar Jacobson. Object-oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992.

    Google Scholar 

  14. Kevin Lano. Using formal and structured techniques in object-oriented development. Technical Report BUT-TN-LR 1029, Lloyds Register, 1992.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. J. M. Morris. A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9(3), dec 1987.

    Google Scholar 

  18. C. C. Morgan. Programming from Specifications. Prentice Hall, 1990.

    Google Scholar 

  19. Hanspeter Mössenböck. Object-Oriented Programming in Oberon-2. Springer-Verlag, 1993.

    Google Scholar 

  20. T. Nipkow. Nondeterministic data types: Models and implementations. Acta Informatica, 11, 1986.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen. Object-oriented Modeling and Design. Prentice Hall, 1991.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. 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.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. Emil Sekerinski. Verfeinerung in der objektorientierten Programmkonstruktion. PhD thesis, Universität Karlsruhe, 1994.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. M. Utting. An Object-Oriented Refinement Calculus with Modular Reasoning. PhD thesis, University of New South Wales, Kensington, 1992.

    Google Scholar 

  30. R. Wirfs-Brock, B. Wilkerson, and R. Wiener. Designing Object-oriented Software. Prentice Hall, 1990.

    Google Scholar 

  31. 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.

    Google Scholar 

  32. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Manfred Broy Stefan Jähnichen

Rights and permissions

Reprints 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

Publish with us

Policies and ethics