Skip to main content

A method for the development of correct software

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

Abstract

In requirements engineering domain modeling with formal specifications is integrated with informal and pre-formal approaches for the construction of a formal requirements specification of the “functional” properties of the required system. The specifications are used in the modeling and analysis parts of the requirement process and provide means for validation, including early prototyping and theorem-proving.

An evolutionary process model is proposed for system design and program development, whereby the correctness of all development steps is checked by suitable verification tools. The model centers around a development graph which consists of units, e.g. formal specifications, proofs, and programs, and relations between these units. There are three kinds of relations: syntactic relations, semantic relations, and modifications. In each development step units are either created, transformed, or modified.

Program and system development are understood as the development of specifications from the requirement specification to a constructive specification which can then be directly transformed into a program. Main features of the approach are modularity, compositionality, and reusability of specifications, programs, and proofs.

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. Abdelwaheb Ayari, Stefan Friedrich, Ramses A. Heckler, and Jacques Loeckx. Das Fallbeispiel LEX. Working Paper WP92/39, Universität Saarbrücken, Dezember 1992.

    Google Scholar 

  2. C. Ashworth and M. Goodland. SSADM — A Practical Approach. McGraw Hill, 1990.

    Google Scholar 

  3. Ralph Betschko, Sabine Dick, Klaus Didrich, and Wolfgang Grieskamp. Formal Development of an Efficient Implementation of a Lexical Scanner within the Korso methodology framework. Technical Report 93-30, TU Berlin, October 1993.

    Google Scholar 

  4. F.L. Bauer, B. Möller, H. Partsch, and P. Pepper. Formal Program Construction By Transformations-Computer-Aided, Intuition Guided Programming. Technische Universität München, 1988.

    Google Scholar 

  5. T.D. Biggerstaff and A.J. Perlis, editors. Software Reusability, volume 1 & 2. New York: ACM Press, 1989.

    Google Scholar 

  6. F.L. Bauer and H. Wössner. Algorithmic Language and Program Development, Springer-Verlag, Berlin, 1982.

    Google Scholar 

  7. M. Broy and M. Wirsing. Correct Software: From Experiments to Applications. in this volume.

    Google Scholar 

  8. A. Camilleri, M. Gordon, and T. Melham. Hardware Verification Using Higher-Order Logic. In D. Borrione, editor, From HDL Descriptions to Guaranteed Correct Circuit Designs, North-Holland, pages 43–71, 1987.

    Google Scholar 

  9. F. Cornelius, H. Hußmann, and M. Löwe. The Korso Case Study for Software Engineering with Formal Methods: A Medical Information System. in this volume.

    Google Scholar 

  10. I. Claßen, M. Löwe, S. Waßerroth, and J. Wortmann. Static and dynamic semantics of entity-relationship models based on algebraic methods. In B. Wolfinger, editor, Innovationen bei Rechen-und Kommunikationssystemen, Informatik aktuell, pages 2–9. Springer-Verlag, 1994.

    Google Scholar 

  11. J. Darlington and R.M. Burstall. A System which automatically Improves Programs. ACTA Informatica, 6(1), 1973.

    Google Scholar 

  12. Klaus Didrich, Andreas Fett, Carola Gerke, Wolfgang Grieskamp, and Peter Pepper. OPAL: Design and Implementation of an Algebraic Programming Language. In Jürg Gutknecht, editor, Programming Languages and System Architectures, International Conference, Zurich, Switzerland, March 1994, LNCS 782, pages 228–244. Springer, 1994.

    Google Scholar 

  13. E. Dubois, J. Hagelstein, E. Lahou, F. Ponsaert, A. Rifout, E. Stephens, and F. Williams. Model Components for Requirements Engineering. Final report, ESPRIT1 METEOR project, Task1, 1986.

    Google Scholar 

  14. E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, Inc., 1976.

    Google Scholar 

  15. Axel Dold and Martin Strecker. Program development with specification operators — illustrated by a specification of the LEX scanner. Technical report, Universität Ulm, January 1993.

    Google Scholar 

  16. H. Ehrig and B. Mahr. Fundamentals of Algebraic Specifications 1: Equations and Initial Semantics, volume 6 of EATCS Monographs on Theoretical Computer Science. Springer-Verlag, Berlin, 1985.

    Google Scholar 

  17. S. J. Garland and J. V. Guttag. LP: The Larch Prover. In E. Lusk and R. Overbeek, editors, 9th International Conference on Automated Deduction (Argonne, Illinois), pages 748–750. Springer Verlag, 1988.

    Google Scholar 

  18. J. V. Guttag and J. J. Horning. The Algebraic Specification of Abstract Data Types. ACTA Informatica, 10(1):27–52, 1978.

    Article  Google Scholar 

  19. J. V. Guttag and J. J. Horning. Introduction to LCL — A Larch/C Interface Language. In S. Prehn, W. J. Toetenel, G. Goos, and J. Hartmanis, editors, VDM '91 Formal Software Development Methods 4th international Symp. (Noordwijerhout, Nov. 1991) LCNS 552, pages 28–78. Springer Verlag, 1991.

    Google Scholar 

  20. S. Gastinger, R. Hennicker, and R. Stabl. Design of modular software systems with reuse. in this volume.

    Google Scholar 

  21. M. Gordon. Why Higher-Order Logic is a good Formalism for Specifying and Verifying Hardware. In G. J. Milne and P. A. Subrahmanyam, editors, Formal Aspects of VLSI Design (Edinburgh Jan. 1985), pages 153–179. North-Holland, 1986.

    Google Scholar 

  22. D. Gries. The Science of Programming. Springer Verlag, 1981.

    Google Scholar 

  23. J. V. Guttag. The Larch Approach to Specification. In S. Prehn, W. J. Toetenel, G. Goos, and J. Hartmanis, editors, VDM '91 Formal Software Development Methods 4th Intern. Sympos. (Noordwijkerhout, Oct. 1991) LNCS 551. Springer Verlag, 1991.

    Google Scholar 

  24. F.W. von Henke, J.S. Crow, R. Lee, J.M. Rushby, and R.A. Whitehurst. The EHDM verification environment: an overview. In 11th National Computer Security Conference, Baltimore, NBS/NCSC, 1988.

    Google Scholar 

  25. R. Hettler. Zur Übersetzung von E/R-Schemata nach SPECTRUM. Technischer Bericht TUM-I9333, TU München, 1993.

    Google Scholar 

  26. R. Hettler. A Requirement Specification for a Lexical Analyzer. Technical Report TUM-I9409, TU München, 1994.

    Google Scholar 

  27. J. He, C. A. R. Hoare, and J.W.Sanders. Data Refinement refined. In G Goos and J. Hartmanis, editors, European Symposium on Programming, LNCS 213, pages 187–196. ESOP 86, 1986.

    Google Scholar 

  28. C. A. R. Hoare. Developments in Concurrency and Communication. Addison-Wesley Publishing Company, 1990.

    Google Scholar 

  29. H. Hußmann. Zur formalen Beschreibung der funktionalen Anforderungen an ein Informationssystem. Technical Report TUMI-9332, Technische Universität München, 1993.

    Google Scholar 

  30. H. Hußmann. Formal foundations for pragmatic software engineering methods. In B. Wolfinger, editor, Innovationen bei Rechen-und Kommunikationssystemen, Informatik aktuell, pages 27–34. Springer-Verlag, 1994.

    Google Scholar 

  31. C. B. Jones. Systematic Software Development Using VDM. Prentice-Hall, 1986.

    Google Scholar 

  32. K. D. Jones. Support Environments for VDM. In D. Bjorner, C. B. Jones, M. Mac An Airchinnigh, and E. J. Neuhold, editors, VDM '87 — VDM — A Formal Method at Work (Bruessel March 1987), pages 110–118. Springer Verlag, 1987.

    Google Scholar 

  33. B. Krieg-Brückner. Algebraic formalisation of program development by transformation. In H. Ganzinger, editor, European Symposium on Programming 1988, LNCS 300, pages 34–48. Springer, 1988.

    Google Scholar 

  34. L. J. Kolyang and B. Wolff. Transformational Development of the LEX Example. In B. Krieg-Brückner, editor, Programmentwicklung durch Spezifikation und Transformation — Bremer Beiträge zum Verbundprojekt Korso, volume 2 of Informatik Bericht. Universität Bremen, 1994.

    Google Scholar 

  35. C. Lewerentz and T. Lindner. Case Study Production Cell: A Comparative Study in Formal Specification and Verification. FZI Publication, FZI Karlsruhe, January 1994.

    Google Scholar 

  36. E. Mayger, B. Harris, S. Fin, M. Fourman, and M. Francis. Version 4.2 LAMBDA documentation. Technical report, Abstract Hardware Limited, 1992.

    Google Scholar 

  37. Z. Manna and R. Waldinger. The Logic of Computer Programming. IEEE Transactions on Computers, 27(3):199–229, 1979.

    Google Scholar 

  38. F. Nicki. Ablaufspezifikation durch Datenflußdiagramme und Axiome. In B. Wolfinger, editor, Innovationen bei Rechen-und Kommunikationssystemen, Informatik aktuell, pages 10–18. Springer-Verlag, 1994.

    Google Scholar 

  39. Tobias Nipkow and Lawrence C. Paulson. Isabelle-91. In Deepak Kapur, editor, Proc. 11th Int. Conf. Automated Deduction, pages 673–676. LNCS 607, 1992.

    Google Scholar 

  40. E. R. Olderog, S. Rössig, V. Sander, and M. Schenke. ProCoS at Oldenburg: The Interface between Specification Language and occam-like Programming Language. Technical Report 3/92, Universität Oldenburg, 1992.

    Google Scholar 

  41. R. Paige. Transformational programming — applications to algorithms and systems. In 10th ACM POPL Symposium, Austin, Texas, 1983.

    Google Scholar 

  42. H. Partsch. Specification and Transformation of Programs — A Formal Approach to Software Development. Springer-Verlag, Berlin, 1990.

    Google Scholar 

  43. L. C. Paulson. Logic and Computation: Interactive Proof with Cambridge LCF. Computing Reviews, 1987.

    Google Scholar 

  44. P. Pepper, R. Betschko, S. Dick, and K. Didrich. Realizing Sets by Hash Tables. in this volume.

    Google Scholar 

  45. W. Reif. The KIV-Approach to Software Verification. in this volume.

    Google Scholar 

  46. W. Reif and K. Stenzel. Reuse of Proofs in Software Verification. In Shyamasundar, editor, Conference on Foundations of Software Technology and Theoretical Computer Science, LNCS 761, Bombay, India, 1993. Springer.

    Google Scholar 

  47. Wolfgang Reif, Gerhard Schellhorn, and Kurt Stenzel. Developing a verified lexical scanner — a methodological case-study with the KIV System. Technical report, Universität Karlsruhe, 1993.

    Google Scholar 

  48. D. R. Smith. KIDS A Knowledge-Based Software Development System. In M. R. Lowry and R. D. McCartney, editors, Automating Software Design, pages 483–514, 1991.

    Google Scholar 

  49. I. Sommerville. Software Engineering. Addison-Wesley, Mass., 3rd edition, 1992.

    Google Scholar 

  50. N. Wirth. Algorithmen und Datenstrukturen. Teubner, 1983.

    Google Scholar 

  51. Martin Wirsing. Algebraic Specification. In J. van Leeuven, editor, Handbook of Theoretical Computer Science, Amsterdam, 1990. North-Holland.

    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

Pepper, P. et al. (1995). A method for the development of correct software. 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/BFb0015454

Download citation

  • DOI: https://doi.org/10.1007/BFb0015454

  • 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