Abstract
In this “40 years of formal methods” essay we shall first delineate, Sect. 1, what we mean by method, formal method, computer science, computing science, software engineering, and model-oriented and algebraic methods. Based on this, we shall characterize a spectrum from specification-oriented methods to analysis-oriented methods. Then, Sect. 2, we shall provide a “survey”: which are the ‘prerequisite works’ that have enabled formal methods, Sect. 2.1, and which are, to us, the, by now, classical ‘formal methods’, Sect. 2.2. We then ask ourselves the question: have formal methods for software development, in the sense of this paper been successful? Our answer is, regretfully, no! We motivate this answer, in Sect. 3.2, by discussing eight obstacles or hindrances to the proper integration of formal methods in university research and education as well as in industry practice. This “looking back” is complemented, in Sect. 3.4, by a “looking forward” at some promising developments — besides the alleviation of the (eighth or more) hindrances!
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Abrial, J.-R.: The B Book. Cambridge University Press, UK (1996)
Abrial, J.-R.: Modeling in Event-B: System and Softw. Eng. Cambridge University Press, UK (2009)
Abrial, J.-R.: From Z to B and then Event-B: Assigning Proofs to Meaningful Programs. In: Johnsen, E.B., Petre, L. (eds.) IFM 2013. LNCS, vol. 7940, pp. 1–15. Springer, Heidelberg (2013)
Araki, K., et al. (eds.): IFM 1999–2013: Integrated Formal Methods. LNCS, vol. 1945, 2335, 2999, 3771, 4591, 5423, 6496, 7321 and 7940. Springer, Heidelberg (2013)
Ball, T., Cook, B., Levin, V., Rajamani, S.K.: SLAM and Static Driver Verifier: Technology transfer of formal methods inside microsoft. In: Boiten, E.A., Derrick, J., Smith, G. (eds.) IFM 2004. LNCS, vol. 2999, pp. 1–20. Springer, Heidelberg (2004), Tool website: http://research.microsoft.com/en-us/projects/slam
Barnett, M., Fähndrich, M., Leino, K.R.M., Müller, P., Schulte, W., Venter, H.: Specification and verification: the Spec# experience. Commun. ACM 54(6), 81–91 (2011), Tool website: http://research.microsoft.com/en-us/projects/specsharp
Bekič, H., Bjørner, D., Henhapl, W., Jones, C.B., Lucas, P.: A Formal Definition of a PL/I Subset. Technical Report 25.139, Vienna, Austria (September 20, 1974)
Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. EATCS Series: Texts in Theoretical Computer Science. Springer (2004)
Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker BLAST. International Journal on Software Tools for Technology Transfer, STTT 9(5-6), 505–525 (2007), Tool website: http://www.sosy-lab.org/~dbeyer/Blast/index-epfl.php
Bjørner, D.: Programming Languages: Formal Development of Interpreters and Compilers. In: Morlet, E., Ribbens, D. (eds.) International Computing Symposium 1977, pp. 1–21. European ACM, North-Holland Publ. Co., Amsterdam (1977)
Bjørner, D. (ed.) Logics of Formal Specification Languages. Computing and Informatics 22(1-2) (2003); This double issue contains the following papers on B, CafeOBJ, CASL, RAISE, TLA+ and Z
Bjørner, D.: Software Engineering, Vol. 1: Abstraction and Modelling. Texts in Theoretical Computer Science, the EATCS Series. Springer (2006)
Bjørner, D.: Software Engineering, Vol. 2: Specification of Systems and Languages. Texts in Theoretical Computer Science, the EATCS Series. Springer (2006) (Chapters 12–14 are primarily authored by Christian Krog Madsen)
Bjørner, D.: Software Engineering, Vol. 3: Domains, Requirements and Software Design. Texts in Theoretical Computer Science, the EATCS Series. Springer (2006)
Bjørner, D.: Special Double Issue on Formal Methods of Program Development. International Journal of Software and Informatics 3 (2009)
Bjørner, D.: Believable Software Management. Encyclopedia of Software Engineering 1(1), 1–32 (2011)
Bjørner, D., et al. (eds.): VDM, FME and FM Symposia 1987–2012, LNCS, vol. 252, 328, 428, 551-552, 670, 873, 1051, 1313, 1708-1709, 2021, 2391, 2805, 3582, 4085, 5014, 6664, 7436 (1987–2012)
Bjorner, D., Jones, C.B. (eds.): The Vienna Development Method: The Meta-Language. LNCS, vol. 61. Springer, Heidelberg (1978) (This was the first monograph on Meta-IV)
Bjørner, D., Jones, C.B. (eds.): Formal Specification and Software Development. Prentice-Hall (1982)
Bjørner, D., Oest, O.N. (eds.): Towards a Formal Description of Ada. LNCS, vol. 98. Springer, Heidelberg (1980)
Bjørner, N., Browne, A., Colon, M., Finkbeiner, B., Manna, Z., Sipma, H., Uribe, T.: Verifying Temporal Properties of Reactive Systems: A STeP Tutorial. Formal Methods in System Design 16, 227–270 (2000)
Bjørner, N., McMillan, K., Rybalchenko, A.: Higher-order Program Verification as Satisfiability Modulo Theories with Algebraic Data-types. In: Higher-Order Program Analysis (June 2013), http://hopa.cs.rhul.ac.uk/files/proceedings.html
Blanchet, B., Cousot, P., Cousot, R., Jerome Feret, L.M., Miné, A., Monniaux, D., Rival, X.: A static analyzer for large safety-critical software. In: Programming Language Design and Implementation, pp. 196–207 (2003)
Bowen, J., et al.: Z, B, ZUM, ABZ Meetings, Conferences, Symposia and Workshops, Z Users Workshops: 1986–1995; Z, ZB and ABZ Users Meetings: 1996–2013. LNCS, vol. 1212, 1493, 1878, 2272, 2651, 3455, 5238, 5977 and 7316 (1986–2014)
Burstall, R.M., Landin, P.J.: Programs and their proofs: an algebraic approach. Technical report, DTIC Document (1968)
Chalin, P., Kiniry, J.R., Leavens, G.T., Poll, E.: Beyond assertions: Advanced specification and verification with JML and ESC/Java2. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 342–363. Springer, Heidelberg (2006), Tool website: http://www.eecs.ucf.edu/~leavens/JML/index.shtml
Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004), Tool website: http://www.cprover.org/cbmc
Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. The MIT Press, Cambridge (2000) ISBN 0-262-03270-8
Clavel, M., Durán, F., Eker, S., Lincoln, P., Oliet, N.M., Meseguer, J., Talcott, C.: Maude 2.6 Manual, Department of Computer Science, University of Illinois and Urbana-Champaign, Urbana-Champaign, Ill. USA (January 2011)
Clemmensen, G., Oest, O.: Formal specification and development of an Ada compiler – a VDM case study. In: Proc. 7th International Conf. on Software Engineering, Orlando, Florida, March 26-29, pp. 430–440. IEEE (March 1984)
The CML programming language, http://cml.cs.uchicago.edu
Mosses, P.D. (ed.): CASL Reference Manual. LNCS, vol. 2960. Springer, Heidelberg (2004)
Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009), Tool website: http://research.microsoft.com/en-us/projects/vcc
Cohen, E., Paul, W., Schmaltz, S.: Theory of multi core hypervisor verification. In: van Emde Boas, P., Groen, F.C.A., Italiano, G.F., Nawrocki, J., Sack, H. (eds.) SOFSEM 2013. LNCS, vol. 7741, pp. 1–27. Springer, Heidelberg (2013)
CVS: Software Version Control, http://www.nongnu.org/cvs/
Dijkstra, E.: A Discipline of Programming. Prentice-Hall (1976)
Bjørner, D., Henson, M.C. (eds.): Logics of Specification Languages. EATCS Series, Monograph in Theoretical Computer Science. Springer, Heidelberg (2008)
Dürr, E.H., van Katwijk, J.: bxcVDM + + exc, A Formal Specification Language for Object Oriented Designs. In: COMP EURO 1992, pp. 214–219. IEEE (May 1992)
Fitzgerald, J., Larsen, P.G.: Developing Software Using VDM-SL. Cambridge University Press, Cambridge (1997)
Fitzgerald, J., Larsen, P.G.: Modelling Systems – Practical Tools and Techniques in Software Development, 2nd edn. Cambridge University Press, Cambridge (2009)
Florian, M.: Analysis-Aware Design of Embedded Systems Software. PhD thesis, California Institute of Technology, Pasadena, California (October 2013)
Floyd, R.W.: Assigning Meanings to Programs. In: [103], pp. 19–32 (1967)
The Frama-C software analysis framework, http://frama-c.com
Futatsugi, K., Diaconescu, R.: CafeOBJ Report The Language, Proof Techniques, and Methodologies for Object-Oriented Algebraic Specification. AMAST Series in Computing, vol. 6. World Scientific Publishing Co. Pte. Ltd. (1998)
George, C.W., Haff, P., Havelund, K., Haxthausen, A.E., Milne, R., Nielsen, C.B., Prehn, S., Wagner, K.R.: The RAISE Specification Language. The BCS Practitioner Series. Prentice-Hall, Hemel Hampstead (1992)
George, C.W., Haxthausen, A.E., Hughes, S., Milne, R., Prehn, S., Pedersen, J.S.: The RAISE Development Method. The BCS Practitioner Series. Prentice-Hall, Hemel Hampstead (1995)
Gries, D.: The Science of Programming. Springer (1981)
Harel, D.: Statecharts: A visual formalism for complex systems. Science of Computer Programming 8(3), 231–274 (1987)
Havelund, K.: The Fork Calculus - Towards a Logic for Concurrent ML. PhD thesis, DIKU, Department of Computer Science, University of Copenhagen, Denmark (1994)
Havelund, K., Pressburger, T.: Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, STTT 2(4), 366–381 (2000)
Haxthausen, A.E., Yong, X.: Linking DC together with TRSL. In: Grieskamp, W., Santen, T., Stoddart, B. (eds.) IFM 2000. LNCS, vol. 1945, pp. 25–44. Springer, Heidelberg (2000)
Haxthausen, A.E.: Some Approaches for Integration of Specification Techniques. In: INT 2000 – Integration of Specification Techniques with Applications in Engineering, pp. 33–40. Technical University of Berlin, Germany. Dept. of Informatics (2000)
Haxthausen, A.E., Yong, X.: A RAISE Specification Framework and Justification assistant for the Duration Calculus, Saarbrücken, Dept of Linguistics, Gothenburg University, Sweden (1998)
He, J.: From CSP to Hybrid Systems. In: A Classical Mind. Prentice Hall (1994)
Hehner, E.: The Logic of Programming. Prentice-Hall (1984)
Hoare, C.: The Axiomatic Basis of Computer Programming. Communications of the ACM 12(10), 567–583 (1969)
Hoare, C.: Proof of Correctness of Data Representations. Acta Informatica 1, 271–281 (1972)
Hoare, C.: Communicating Sequential Processes. C.A.R. Hoare Series in Computer Science. Prentice-Hall International (1985, 2004), Published electronically: http://www.usingcsp.com/cspbook.pdf
Holzmann, G.J.: Logic verification of ANSI-C code with SPIN. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 131–147. Springer, Heidelberg (2000), Tool website: http://spinroot.com/modex
Holzmann, G.J.: The SPIN Model Checker, Primer and Reference Manual. Addison-Wesley, Reading (2003)
International Conferences on Formal Engineering Methods, ICFEM (ed.) : LNCS, vol. 2405, 2885, 3308, 3785, 4260, 4789, 5256, 5885, 6447 and 8144, IEEE Computer Society Press and Springer Years 2002–2013: IEEE, Years 2002–2013
ITU-T. CCITT Recommendation Z.120: Message Sequence Chart (MSC) (1992, 1996, 1999)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis. The MIT Press, Cambridge (2006) ISBN 0-262-10114-9
Jacobs, B., Smans, J., Philippaerts, P., Vogels, F., Penninckx, W., Piessens, F.: VeriFast: A powerful, sound, predictable, fast verifier for C and Java. In: Bobaru, M., Havelund, K., Holzmann, G.J., Joshi, R. (eds.) NFM 2011. LNCS, vol. 6617, pp. 41–55. Springer, Heidelberg (2011), Tool website: http://people.cs.kuleuven.be/~bart.jacobs/verifast
Jacobson, I., Booch, G., Rumbaugh, J.: The Unified Software Development Process. Object Technology Series. Addison–Wesley, Addison Wesley Longman, Inc., One Jacob Way, Reading (1999)
Jones, C.B.: Software Development: A Rigorous Approach. Prentice-Hall (1980)
Jones, C.B.: Systematic Software Development — Using VDM, 2nd edn. Prentice-Hall (1989)
Jones, N.D., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. C.A.R.Hoare Series in Computer Science. Prentice Hall International (1993)
Kahrs, S., Sannella, D., Tarlecki, A.: The definition of Extended ML: A gentle introduction. Theoretical Computer Science 173, 445–484 (1997), Tool website: http://homepages.inf.ed.ac.uk/dts/eml
Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: ACL2 Case Studies. Kluwer Academic Publishers (June 2000)
Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers (June 2000)
Knuth, D.: The Art of Computer Programming, Fundamental Algorithms, vol. 1. Addison-Wesley, Reading (1968)
Knuth, D.: The Art of Computer Programming, Seminumerical Algorithms, vol. 2. Addison-Wesley, Reading (1969)
Knuth, D.: The Art of Computer Programming, Searching & Sorting, vol. 3. Addison-Wesley, Reading (1973)
Lakos, C., et al. (eds.): SEFM: International IEEE Conferences on Software Engineering and Formal Methods, SEFM 2002–2013. IEEE Computer Society Press (2003-2013)
Lamport, L.: Specifying Systems. Addison–Wesley, Boston (2002)
Landin, P.J.: The mechanical evaluation of expressions. The Computer Journal 6(4), 308–320 (1964)
Landin, P.J.: Correspondence between ALGOL 60 and Church’s Lambda-notation: part i. Communications of the ACM 8(2), 89–101 (1965)
Leino, K.R.M.: Dafny: An automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR-16. LNCS, vol. 6355, pp. 348–370. Springer, Heidelberg (2010), Tool website: http://research.microsoft.com/en-us/projects/dafny
Manna, Z., Pnueli, A.: The Temporal Logic of Reactive Systems: Specifications. Addison Wesley (1991)
Manna, Z., Pnueli, A.: The Temporal Logic of Reactive Systems: Safety. Addison Wesley (1995)
McCarthy, J.: Recursive Functions of Symbolic Expressions and Their Computation by Machines, Part I. Communications of the ACM 3(4), 184–195 (1960)
McCarthy, J.: Towards a Mathematical Science of Computation. In: Popplewell, C. (ed.) IFIP World Congress Proceedings, pp. 21–28 (1962)
Meyer, B.: Eiffel: The Language, 2nd revised edn., 300 pages. Prentice Hall PTR, Upper Sadle River (1992) (Amazon price: US $ 47.00)
Milner, R.: A Calculus of Communication Systems. LNCS, vol. 92. Springer, Heidelberg (1980)
Milner, R., Tofte, M., Harper, R.: The Definition of Standard ML. The MIT Press, Cambridge (1990)
Miller, A., Paul, W.: Computer Architecture, Complexity and Correctness. Springer (2000)
Nipkow, T., Paulson, L.C., Wenzel, M.T.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)
The OCaml programming language, http://ocaml.org
Oest, O.N.: Vdm from research to practice (invited paper). In: IFIP Congress, pp. 527–534 (1986)
Owre, S., Shankar, N., Rushby, J.M., Stringer-Calvert, D.W.J.: PVS Language Reference, Computer Science Laboratory, SRI International, Menlo Park, CA (September 1999)
Owre, S., Shankar, N., Rushby, J.M., Stringer-Calvert, D.W.J.: PVS System Guide, Computer Science Laboratory, SRI International, Menlo Park, CA (September 1999)
Paul, W.: Towards a Worldwide Verification Technology. In: Meyer, B., Woodcock, J. (eds.) VSTTE 2005. LNCS, vol. 4171, pp. 19–25. Springer, Heidelberg (2008)
Paulson, L.C.: ML for the Working Programmer. Cambridge University Press (1991)
The Python programming language, http://www.python.org
Reisig, W.: Abstract State Machines for the Classroom. In: [37], pp. 15–46. Springer (2008)
Reisig, W.: Petrinetze: Modellierungstechnik, Analysemethoden, Fallstudien. Leitfäden der Informatik, 1st edn., June 15, 248 pages. Vieweg+Teubner (2010) ISBN 978-3-8348-1290-2
Reisig, W.: Understanding Petri Nets Modeling Techniques, Analysis Methods, Case Studies, 230+XXVII pages. Springer (2013) (145 illus)
Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: Proceedings of the ACM Annual Conference, vol. 2, pp. 717–740. ACM (1972)
Reynolds, J.C.: The Craft of Programming. Prentice Hall PTR (1981)
Sannella, D., Tarlecki, A.: Foundations of Algebraic Semantcs and Formal Software Development. Monographs in Theoretical Computer Science. Springer, Heidelberg (2012)
The Scala programming language, http://www.scala-lang.org
Schwartz, J.: Mathematical Aspects of Computer Science. In: Proc. of Symp. in Appl. Math. American Mathematical Society, Rhode Island (1967)
Scott, D., Strachey, C.: Towards a mathematical semantics for computer languages. In: Computers and Automata. Microwave Research Inst. Symposia, vol. 21, pp. 19–46 (1971)
Sestoft, P.: Java Precisely, July 25. The MIT Press (2002)
Shankar, N., Owre, S., Rushby, J.M.: PVS Tutorial, Computer Science Laboratory, SRI International, Menlo Park, CA (February1993); Also appears in Tutorial Notes, Formal Methods Europe 1993: Industrial-Strength Formal Methods, Odense, Denmark, pp. 357–406 (April 1993)
Shankar, N., Owre, S., Rushby, J.M., Stringer-Calvert, D.W.J.: PVS Prover Guide, Computer Science Laboratory, SRI International, Menlo Park, CA (September 1999)
Sommerville, I.: Software Engineering. Addison-Wesley (1982)
Static analysers: Semmle, http://www.semmle.com , Coverity: http://www.coverity.com , CodeSonar: http://www.grammatech.com/codesonar , KlocWork: http://www.klocwork.com , etc.
Thompson, S.: Haskell: The Craft of Functional Programming, 2nd edn., March 29, 512 pages. Addison Wesley (1999) ISBN 0201342758
Visser, W., Havelund, K., Brat, G.P., Park, S., Lerda, F.: Model checking programs. Autom. Softw. Eng. 10(2), 203–232 (2003), Tool website: http://javapathfinder.sourceforge.net
Whysall, P.J., McDermid, J.A.: An approach to object-oriented specification using Z. In: Nicholls, J.E. (ed.) Z User Workshop, Oxford 1990. Workshops in Computing, pp. 193–215. Springer (1991)
Woodcock, J., Larsen, P.G., Bicarregui, J., Fitzgerald, J.: Formal Methods: Practice and Experience. ACM Computing Surveys 41(4), 19 (2009)
Woodcock, J.C.P., Davies, J.: Using Z: Specification, Proof and Refinement. Prentice Hall International Series in Computer Science (1996)
Zhan, N., Wang, S., Zhao, H.: Formal modelling, analysis and verification of hybrid systems. In: Liu, Z., Woodcock, J., Zhu, H. (eds.) Unifying Theories of Programming and Formal Engineering Methods. LNCS, vol. 8050, pp. 207–281. Springer, Heidelberg (2013)
Zhou, C.C., Hansen, M.R.: Duration Calculus: A Formal Approach to Real–time Systems. Monographs in Theoretical Computer Science. An EATCS Series–Verlag. Springer (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Bjørner, D., Havelund, K. (2014). 40 Years of Formal Methods. In: Jones, C., Pihlajasaari, P., Sun, J. (eds) FM 2014: Formal Methods. FM 2014. Lecture Notes in Computer Science, vol 8442. Springer, Cham. https://doi.org/10.1007/978-3-319-06410-9_4
Download citation
DOI: https://doi.org/10.1007/978-3-319-06410-9_4
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-06409-3
Online ISBN: 978-3-319-06410-9
eBook Packages: Computer ScienceComputer Science (R0)