Advertisement

On object-oriented design and verification

  • C. Lewerentz
  • Th. Lindner
  • A. Rüping
  • E. Sekerinski
Methods for Correctness
Part of the Lecture Notes in Computer Science book series (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.

Keywords

Formal Method Design Pattern Object Type Object Identity Proof Obligation 
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.

Unable to display preview. Download preview PDF.

References

  1. [AG91]
    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. [Ame87]
    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. [Boo91]
    Grady Booch. Object-oriented Design. Benjamin Cummings, 1991.Google Scholar
  4. [BvW89]
    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. [BvW90]
    R. J. R Back and J. von Wright. Duality in specification languages: A lattice-theoretical approach. Acta Informatica, 27, 1990.Google Scholar
  6. [CDD+90]
    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. [CLLW93]
    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. [GCD+]
    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. [GCH93]
    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. [GHVJ93]
    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. [Har92]
    Samuel P. Harbison. Modula-3. Prentice Hall, 1992.Google Scholar
  12. [HJS87]
    C. A. R. Hoare, He Jifeng, and J. W. Sanders. Prespecification in data refinement. Information Processing Letters, 25 (2), 1987.Google Scholar
  13. [Jac92]
    Ivar Jacobson. Object-oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992.Google Scholar
  14. [Lan92]
    Kevin Lano. Using formal and structured techniques in object-oriented development. Technical Report BUT-TN-LR 1029, Lloyds Register, 1992.Google Scholar
  15. [LH92]
    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. [LR95]
    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. [Mor87]
    J. M. Morris. A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9(3), dec 1987.Google Scholar
  18. [Mor90]
    C. C. Morgan. Programming from Specifications. Prentice Hall, 1990.Google Scholar
  19. [Mös93]
    Hanspeter Mössenböck. Object-Oriented Programming in Oberon-2. Springer-Verlag, 1993.Google Scholar
  20. [Nip86]
    T. Nipkow. Nondeterministic data types: Models and implementations. Acta Informatica, 11, 1986.Google Scholar
  21. [PWH91]
    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. [RBP+91]
    J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen. Object-oriented Modeling and Design. Prentice Hall, 1991.Google Scholar
  23. [Rüp93]
    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. [Rüp94]
    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. [RWZ93]
    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. [Sek93]
    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. [Sek94]
    Emil Sekerinski. Verfeinerung in der objektorientierten Programmkonstruktion. PhD thesis, Universität Karlsruhe, 1994.Google Scholar
  28. [Szy92]
    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. [Utt92]
    M. Utting. An Object-Oriented Refinement Calculus with Modular Reasoning. PhD thesis, University of New South Wales, Kensington, 1992.Google Scholar
  30. [WBWW90]
    R. Wirfs-Brock, B. Wilkerson, and R. Wiener. Designing Object-oriented Software. Prentice Hall, 1990.Google Scholar
  31. [Web92]
    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. [Wil91]
    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

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • C. Lewerentz
    • 1
  • Th. Lindner
    • 1
  • A. Rüping
    • 1
  • E. Sekerinski
    • 1
  1. 1.Forschungszentrum Informatik Karlsruhe (FZI)Deutschland

Personalised recommendations