The vienna development method (VDM)

Software specification & program synthesis
  • Dines Bjørner
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 75)


A capsule view is given of the VDM Specification Language and the associated Specification Techniques for defining software, respectively the Systematic Derivation Techniques for Synthesizing & Proving correct Program Realizations from such, abstract Software Architectures.

The paper exhibits examples illustrating abstract syntax specifications of both abstract and derived concrete syntactic- and semantic domains, and denotational & derived operational elaboration function definitions mapping syntactic domain objects into their semantic domain object denotations, respectively into operations on these. In deriving the concrete programs from the abstract definitions, and in proving correctness, extensive use is made of invariant (-preserving) static- and dynamic well-formedness predicates and retrieval (or: abstraction) functions bringing concrete, realization-oriented objects ‘back’ into their defining abstract objects. Such uses are likewise illustrated. Examples of proofs based on the idea of commuting diagrams follows. These make use of a number of data structure lemmas: properties of the abstract and concrete objects chosen to represent, respectively realize, the specified software concepts. We finally exemplify the beginnings of such a catalogue of auxiliary lemmas.


Abstract Syntax Concrete Object Semantic Domain Correctness Criterion Abstract Data Type 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Bjørner 76]
    D.Bjørner: "META-IV: A Formal Meta-Language for Abstract Software Specifications", Technical Report, No. ID670, Dept. of Comp.Sci., Techn.Univ.of Denmark, November 1976, 45 pages.Google Scholar
  2. [Bjørner 77]
    —: "Programming Languages: Formal Development of Interpreters and Compilers", European ACM International Computing Symposium, ICS/77, North-Holland Publ., Proceedings, pp. 1–21, April 1977.Google Scholar
  3. [Bjørner 78a]
    — and C.B.Jones: "The Vienna Development Method: The Meta-language", Springer-Verlag, Lecture Notes in Computer Science, vol.61, May 1978.Google Scholar
  4. [Bjørner 78b]
    —: "Programming in the Meta-language, A Tutorial", in: [Bjørner 78a], pp. 24–217.Google Scholar
  5. [Bjørner 78c]
    —: "Software Abstraction Principles: Tutorial Examples of An Operating System Command Language Specification and a PL/I-like ON-Condition Language Definition", in: [Bjørner 78a], pp. 337–374.Google Scholar
  6. [Burstall 75]
    R.M.Burstall and J.Darlington: "Some Transformations for Developing Recursive Programs", Proc. 1975 Int'l. Conf. on Reliable Software, Los Angeles, pp. 465–472, to appear in JACM.Google Scholar
  7. [Darlington 76]
    J. Darlington and R.M. Burstall: "A System which Automatically Improves Programs", Acta Informatica, vol.6, pp. 41–60, 1976.Google Scholar
  8. [Greibach 75]
    S.Greibach: "Theory of Program Structures: Semantics, Schemes and Verification", Springer-Verlag, Lecture Notes in Computer Science, vol.36, 1975.Google Scholar
  9. [Hoare 72]
    C.A.R. Hoare: "Proof of Correctness of Data Representations", Acta Informatica, vol.1, pp. 271–281, 1972.Google Scholar
  10. [Jones 77]
    C.B.Jones: "Program Specification and Formal Development", European ACM International Computing Symposium, ICS/77, North-Holland Publ., Proc., pp.537–553, 1977.Google Scholar
  11. [Jones 78a]
    C.B.Jones: "The Meta-Language: A Reference Manual", in Bjørner 78a, pp. 218–277, 1978.Google Scholar
  12. [Jones 78b]
    — and W.Henhapl: "A Formal Definition of ALGOL 60 as Described in the 1975 Modified Report", in: Bjørner 78a, pp. 305–336, 1978.Google Scholar
  13. [Jones 78c]
    —: Program Development using Data Abstraction", to appear in Acta Informatica, 1978.Google Scholar
  14. [Liskov 74]
    B. Liskov and S.N. Zilles: "Programming with Abstract Data Types", Proc.ACM Conf.on ‘Very High Level Languages', SIGPLAN Notices, vol.9,no.4,pp.50–59, 1974.Google Scholar
  15. [Liskov 75]
    —: "Specification Techniques for Data Abstractions", IEEE Trans.on Software Eng., vol.SE-1,no.1, pp.7–19, 1975.Google Scholar
  16. [Lucas 69]
    P. Lucas and K. Walk: "On the Formal Definition of PL/I", Automatic Programming, Pergamon Press, vol.6,pt.3, pp.105–152, 1969.Google Scholar
  17. [McCarthy 67]
    J. McCarthy and J. Painter: "The Correctness of a Compiler for Arithmetic Expressions", Proc.Amer.Math.Soc., ‘Math.Aspects of Comp.Sci.', Proc.Symp.Appl.Math., vol.19, pp.33–41, 1967.Google Scholar
  18. [Manna 74]
    Z.Manna: "Introduction to the Mathematical Theory of Computation", McGraw-Hill, 1974.Google Scholar
  19. [Milner 70]
    R. Milner: "A Formal Notion of Simulation Between Programs", Memo 14, Computers and Logic Research Group, Univ.College, Swansea, UK., 1970.Google Scholar
  20. [Milner 71a]
    —: "Program Simulation: An Extended Formal Notion", Memo 15, ibid, 1971.Google Scholar
  21. [Milner 71b]
    —: "An Algebraic Definition of Simulation Between Programs", Stanford Comp.Sci.Dept. Rept.No. CS-205, 1971.Google Scholar
  22. [Milner 72]
    — and R.Weyhrauch: "Compiler Correctness in a Mechanized Logic", in: ‘Machine Intelligence', Ed. D.Michie, Edinburgh Univ.Press, vol.7, 1972.Google Scholar
  23. [Morris 73]
    F.L.Morris: "Advice on Structuring Compilers and Proving them Correct", Proc.ACM Symp.on ‘Principles of Programming Languages', Boston, Mass., Oct. 1973.Google Scholar
  24. [Bekić 74]
    H.Bekić, D.Bjørner, W.Henhapl, C.B.Jones and P.Lucas: "A Formal Definition of a PL/I Subset", IBM Vienna Laboratory Techn.Rept., TR25.139, Dec.1974.Google Scholar
  25. [Bjørner 77a]
    D. Bjørner: "Programming Languages: Linguistics and Semantics", European ACM International Computing Symposium, ICS/77, North-Holland Publ., Proceedings, pp. 511–526, 1977.Google Scholar
  26. [Bjørner 77b]
    —: "Experiments in Block-structured GOTO Language Modeling: EXITs versis CONTINUATIONs", Techn. Rept., Comp.Sci.Dept., ID716, Techn.Univ. of Denmark, 1977.Google Scholar
  27. [Bjørner 78d]
    —: "The Systematic Development of a Compiling Algorithm", Proceedings: 'state of the Art and Future Trends in Compilation', IRIA, Rocquencourt, France, 1978.Google Scholar
  28. [Bjørner 78e]
    —: "Data Structure Diagrams: A Semantic Analysis of Network Data Base Concepts", presented at the IFIP WG2.2 Kyoto, Aug.1978 meeting (Techn.Rept., Comp. Sci.Dept., ID782, Techn.Univ.of Denmark).Google Scholar
  29. [Jones 76]
    C.B.Jones: "Formal Definition in Compiler Development", IBM Vienna Lab. Techn.Rept. TR25.145, Feb. 1976.Google Scholar
  30. [Jones 75]
    —: "Formal Definition in Program Development", Springer-Verlag Lecture Notes in Computer Science, vol. 23, pp. 387–443, 1975.Google Scholar
  31. [Jones 78d]
    —: "Denotational Semantics of GOTO: An Exit Formulation and its Relation to Continuations", in: [Bjørner 78a], pp. 278–304. 1978.Google Scholar
  32. [Jones 78e]
    —: "The Vienna Development Method: Examples of of Compiler Development", Proceedings: 'state of the Art and Future Trends in Compilation', IRIA, Rocquencourt, France, 1978.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1979

Authors and Affiliations

  • Dines Bjørner
    • 1
  1. 1.Department of Computer Science, Bldgs. 343–344Technical University of DenmarkLyngbyDenmark

Personalised recommendations