Scientific Decisions which Characterize VDM

  • Cliff B. Jones
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1708)


The formal description and development method known as VDM has been used extensively, its specification language is now an ISO standard, and it has influenced other specification languages. The origins of VDM are normally placed in language description or semantics but it is probably best known in the wider arena of formal methods for (general) program specification and design. This paper sets out a personal view of some of the key technical decisions which characterize the Vienna Development Method.


Abnormal Return Operational Semantic Abstract Syntax Proof Obligation Denotational Semantic 
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.


  1. [1]
    J. R. Abrial. The B-Book: Assigning programs to meanings. Cambridge University Press, 1996.Google Scholar
  2. [2]
    P. Aczel. A note on program verication. manuscript, January 1982.Google Scholar
  3. [3]
    C. D. Allen, D. N. Chapman, and C. B. Jones. A formal denition of ALGOL 60. Technical Report 12.105, IBM Laboratory Hursley, August 1972.Google Scholar
  4. [4]
    D. Andrews and W. Henhapl. Pascal. In [13], pages 175–252. 1982.Google Scholar
  5. [5]
    E. Astesiano, H. J. Kreowski, and B. Krieg-Brueckner, editors. Algebraic Foundations of System Specication. Springer Verlag, 1999.Google Scholar
  6. [6]
    H. Barringer, J.H. Cheng, and C. B. Jones. A logic covering undefinedness in program proofs. Acta Informatica, 21:251–269, 1984.zbMATHCrossRefMathSciNetGoogle Scholar
  7. [7]
    H. Bekič. Programming Languages and Their Definition: Selected Papers of H. Bekič, volume 177 of Lecture Notes in Computer Science. Springer-Verlag, 1984.zbMATHGoogle Scholar
  8. [8]
    H. Bekič, D. Bjørner, W. Henhapl, C. B. Jones, and P. Lucas. A formal definition of a PL/I subset. Technical Report 25.139, IBM Laboratory Vienna, December 1974.Google Scholar
  9. [9]
    H. Bekič, H. Izbicki, C. B. Jones, and F. Weissenböck. Some experiments with using a formal language definition in compiler development. Technical Report LN 25.3.107, IBM Laboratory, Vienna, December 1975.Google Scholar
  10. [10]
    H. Bekič and K. Walk. Formalization of storage properties. In [20], pages 28–61. 1971.Google Scholar
  11. [11]
    D. Bjørner, editor. Abstract Software Specifications: 1979 Copenhagen Winter School Proceedings, volume 86 of Lecture Notes in Computer Science. Springer-Verlag, Berlin, 1980.zbMATHGoogle Scholar
  12. [12]
    D. Bjørner and C. B. Jones, editors. The Vienna Development Method: The Meta-Language, volume 61 of Lecture Notes in Computer Science. Springer-Verlag, 1978.zbMATHGoogle Scholar
  13. [13]
    D. Bjørner and C. B. Jones. Formal Specification and Software Development. Prentice Hall International, 1982.Google Scholar
  14. [14]
    D. Bjørner and O. N. Oest, editors. Towards a Formal Description of Ada, volume 98 of Lecture Notes in Computer Science. Springer-Verlag, Berlin, 1980.zbMATHGoogle Scholar
  15. [15]
    J. H. Cheng and C. B. Jones. On the usability of logics which handle partial functions. In C. Morgan and J. C. P. Woodcock, editors, 3rd Refinement Workshop, pages 51–69. Springer-Verlag, 1991.Google Scholar
  16. [16]
    Pierre Collette. Design of Compositional Proof Systems Based on Assumption-Commitment Specifications-Application to UNITY. PhD thesis, Louvain-la-Neuve, June 1994.Google Scholar
  17. [17]
    Pierre Collette and Cliff B. Jones. Enhancing the tractability of rely/guarantee specifications in the development of interfering operations. Technical Report UMCS-95-10-3, Manchester University, 1995.Google Scholar
  18. [18]
    J. W. de Bakker and D. Scott. A theory of programs. Manuscript notes for IBM Seminar, Vienna, August 1969.Google Scholar
  19. [19]
    E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976.Google Scholar
  20. [20]
    E. Engeler. Symposium on Semantics of Algorithmic Languages. Number 188 in Lecture Notes in Mathematics. Springer-Verlag, 1971.Google Scholar
  21. [21]
    R. W. Floyd. On the nonexistence of a phrase structure grammar for ALGOL 60. Communications of the ACM, 5:483–484, 1962.zbMATHCrossRefGoogle Scholar
  22. [22]
    R. W. Floyd. Assigning meanings to programs. In Proc. Symp. in Applied Mathematics, Vol.19: Mathematical Aspects of Computer Science, pages 19–32. American Mathematical Society, 1967.Google Scholar
  23. [23]
    M.J.C. Gordon. The Denotational Description of Programming Languages. Springer-Verlag, 1979.Google Scholar
  24. [24]
    The RAISE Language Group. The RAISE Specification Language. BCS Practitioner Series. Prentice Hall, 1992. ISBN 0-13-752833-7.Google Scholar
  25. [25]
    The RAISE Method Group. The RAISE Development Method. BCS Practitioner Series. Prentice Hall, 1995. ISBN 0-13-752700-4.Google Scholar
  26. [26]
    John V. Guttag and James J. Horning.Larch: Languages and Tools for Formal Specification. Texts and Monographs in Computer Science. Springer-Verlag, 1993. ISBN 0-387-94006-5/ISBN 3-540-94006-5.Google Scholar
  27. [27]
    I. J. Hayes, C. B. Jones, and J. E. Nicholls. Understanding the differences between VDM and Z. ACM Software Engineering News, 19(3):75–81, July 1994.CrossRefGoogle Scholar
  28. [28]
    W. Henhapl. A proof of correctness for the reference mechanism to automatic variables in the F-compiler. Technical Report LN 25.3.048, IBM Laboratory Vienna, Austria, November 1968.Google Scholar
  29. [29]
    W. Henhapl and C. B. Jones. The block concept and some possible implementations, with proofs of equivalence. Technical Report 25.104, IBM Laboratory Vienna, April 1970.Google Scholar
  30. [30]
    W. Henhapl and C. B. Jones. On the interpretation of GOTO statements in the ULD. Technical Report LN 25.3.065, IBM Laboratory, Vienna, March 1970.Google Scholar
  31. [31]
    W. Henhapl and C. B. Jones. Some observations on the implementation of reference mechanisms for automatic variables. Technical Report LR 25.3.070, IBM Laboratory, Vienna, May 1970.Google Scholar
  32. [32]
    W. Henhapl and C. B. Jones. A run-time mechanism for referencing variables. Information Processing Letters, 1(1):14–16, 1971.zbMATHGoogle Scholar
  33. [33]
    W. Henhapl and C. B. Jones. A formal definition of ALGOL 60 as described in the 1975 modified report. In The [12], pages 305–336. 1978.Google Scholar
  34. [34]
    C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576–580, 583, October 1969.zbMATHCrossRefGoogle Scholar
  35. [35]
    C. A. R. Hoare. Proof of a program: FIND. Communications of the ACM, 14:39–45, January 1971.zbMATHCrossRefMathSciNetGoogle Scholar
  36. [36]
    C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1:271–281, 1972.zbMATHCrossRefGoogle Scholar
  37. [37]
    Steve J. Hodges and Cliff B. Jones. Non-interference properties of a concurrent object-based language: Proofs based on an operational semantics. In Burkhard Freitag, Cliff B. Jones, Christian Lengauer, and Hans-Jörg Schek, editors, Object Orientation with Parallelism and Persistence, pages 1–22. Kluwer Academic Publishers, 1996.Google Scholar
  38. [38]
    C. B. Jones. A technique for showing that two functions preserve a relation between their domains. Technical Report LR 25.3.067, IBM Laboratory, Vienna, April 1970.Google Scholar
  39. [39]
    C. B. Jones. Formal development of correct algorithms: an example based on Earley’s recogniser. In SIGPLAN Notices, Volume 7 Number 1, pages 150–169. ACM, January 1972.CrossRefGoogle Scholar
  40. [40]
    C. B. Jones. Formal development of programs. Technical Report 12.117, IBM Laboratory Hursley, June 1973.Google Scholar
  41. [41]
    C. B. Jones. Formal definition in compiler development. Technical Report 25.145, IBM Laboratory Vienna, February 1976.Google Scholar
  42. [42]
    C. B. Jones. Implementation bias in constructive specification of abstract objects. typescript, September 1977.Google Scholar
  43. [43]
    C. B. Jones. Denotational semantics of goto: An exit formulation and its relation to continuations. In [12], pages 278–304. 1978.Google Scholar
  44. [44]
    C. B. Jones. Constructing a theory of a data structure as an aid to program development. Acta Informatica, 11:119–137, 1979.zbMATHCrossRefGoogle Scholar
  45. [45]
    C. B. Jones. The Vienna Development Method: Examples of compiler development. In M. Amirchahy and D. Neel, editors, Le Point sur la Compilation, pages 89–114. IRIA-SEFI, 1979.Google Scholar
  46. [46]
    C. B. Jones. Software Development: A Rigorous Approach. Prentice Hall International, 1980. ISBN 0-13-821884-6.Google Scholar
  47. [47]
    C. B. Jones. Development Methods for Computer Programs including a Notion of Interference. PhD thesis, Oxford University, June 1981. Printed as: Programming Research Group, Technical Monograph 25.Google Scholar
  48. [48]
    C. B. Jones. Systematic Software Development Using VDM. Prentice Hall International, 1986.Google Scholar
  49. [49]
    C. B. Jones. Program specification and verification in VDM. In M. Broy, editor, Logic of Programming and Calculi of Discrete Design, volume 36 of NATO ASI Series F: Computer and Systems Sciences, pages 149–184. Springer-Verlag, 1987.Google Scholar
  50. [50]
    C. B. Jones. Data reification. In J. A. McDermid, editor, The Theory and Practice of Refinement, pages 79–89. Butterworths, 1989.Google Scholar
  51. [51]
    C. B. Jones. Process algebra arguments about an object-based design notation. In A. W. Roscoe, editor, A Classical Mind, chapter 14, pages 231–246. Prentice-Hall, 1994.Google Scholar
  52. [52]
    C. B. Jones. TANSTAAFL with partial functions. In William Farmer, Manfred Kerber, and Michael Kohlhase, editors, Proceedings of the Workshop on the Mechanization Of Partial Functions, pages 53–64, 1996.Google Scholar
  53. [53]
    C. B. Jones and P. Lucas. Proving correctness of implementation techniques. In [20], pages 178–211. 1971.Google Scholar
  54. [54]
    P. J. Landin. A correspondence between ALGOL-60 and Church’s lambdanotation. Parts I and II. Communications of the ACM, 8:89–101, 158-165, 1965.CrossRefMathSciNetGoogle Scholar
  55. [55]
    P. J. Landin. The next 700 programming languages. Communications of the ACM, 9:157–166, 1966.zbMATHCrossRefGoogle Scholar
  56. [56]
    P. Lucas. Two constructive realizations of the block concept and their equivalence. Technical Report TR 25.085, IBM Laboratory Vienna, June 1968.Google Scholar
  57. [57]
    P. Lucas and K. Walk. On The Formal Description of PL/I, volume 6 of Annual Review in Automatic Programming Part 3. Pergamon Press, 1969.Google Scholar
  58. [58]
    Peter Lucas. On the semantics of programming languages and software devices. In Randall Rustin, editor, Formal Semantics of Programming Languages, pages 41–57, Englewood Cliffs, New Jersey, 1972. Prentice Hall. Proceedings of the Courant Computer Science Symposium 2.Google Scholar
  59. [59]
    M. Mac an Airchinnigh. Tutorial Lecture Notes on the Irish School of the VDM. In [71], pages 141–237, 1991.Google Scholar
  60. [60]
    A. W. Mazurkiewicz. Proving algorithms by tail functions. Information and Control, 18(3):220–226, April 1971.CrossRefzbMATHMathSciNetGoogle Scholar
  61. [61]
    J. McCarthy. A formal description of a subset of ALGOL. In [73], pages 1–12, 1966.Google Scholar
  62. [62]
    J. McCarthy. A basis for a mathematical theory for computation. In P. Braffort and D. Hirschberg, editors, Computer Programming and Formal Systems, pages 33–70. North-Holland Publishing Company, 1967.Google Scholar
  63. [63]
    Cornelius A. Middelburg. Logic and Specification: Extending VDM-SL for advanced formal specification. Chapman and Hall, 1993.Google Scholar
  64. [64]
    R. Milne and C. Strachey. A Theory of Programming Language Semantics. Chapman and Hall, 1976.Google Scholar
  65. [65]
    R. Milner. An algebraic definition of simulation between programs. Technical Report CS-205, Computer Science Dept, Stanford University, February 1971.Google Scholar
  66. [66]
    F. L. Morris. The next 700 formal language descriptions. Manuscript, 1970.Google Scholar
  67. [67]
    P. D. Mosses. The mathematical semantics of Algol 60. Technical Monograph PRG-12, Oxford University Computing Laboratory, Programming Research Group, January 1974.Google Scholar
  68. [68]
    Peter D. M osses. Action Semantics. Number 26 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.Google Scholar
  69. [69]
    G. D. Plotkin. A powerdomain construction. SIAM J. Comput., 5(3), 1976.Google Scholar
  70. [70]
    G. D. Plotkin. A structural approach to operational semantics. Technical report, Aarhus University, 1981.Google Scholar
  71. [71]
    S. Prehn and W. J. Toetenel, editors. VDM’91-Formal Software Development Methods. Proceedings of the 4th International Symposium of VDM Europe, No-ordwijkerhout, The Netherlands, October 1991, Vol.2: Tutorials, volume 552 of Lecture Notes in Computer Science. Springer-Verlag, 1991.Google Scholar
  72. [72]
    J.M. Spivey. The Z Notation: A Reference Manual. Prentice Hall International, second edition, 1992.Google Scholar
  73. [73]
    T. B. Steel. Formal Language Description Languages for Computer Programming. North-Holland, 1966.Google Scholar
  74. [74]
    K. Stølen. Development of Parallel Programs on Shared Data-Structures. PhD thesis, Manchester University, 1990. available as UMCS-91-1-1.Google Scholar
  75. [75]
    J.E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, 1977.Google Scholar
  76. [76]
    C. Strachey and C. P. Wadsworth. Continuations-a mathematical semantics for handling jumps. Monograph PRG-11, Oxford University Computing Laboratory, Programming Research Group, January 1974.Google Scholar
  77. [77]
    R. L. Wexelblat. History of Programming Languages. Academic Press, 1981.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Cliff B. Jones
    • 1
  1. 1.Department of Computer ScienceManchester University9PLUK

Personalised recommendations