Skip to main content

On Teaching Formal Methods: Behavior Models and Code Analysis

  • Conference paper
Book cover Teaching Formal Methods (TFM 2009)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5846))

Included in the following conference series:

Abstract

Teaching formal methods is a challenging task for several reasons. First, both the state-of-the-art knowledge and the tools are rapidly evolving. Second, there are no comprehensive textbooks covering certain topics, especially code analysis. In this paper, we share our experience with teaching two courses. The first is focused on classics of modeling and verification of software and hardware systems (LTS, LTL, equivalences, etc.), while the other one involves topics related to automated analysis of program code. We hope that other lecturers can benefit from our experience to improve their courses.

This work was partially supported by the Ministry of Education of the Czech Republic (grant MSM0021620838) and by the Czech Academy of Sciences project 1ET400300504.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Java modeling language (JML), http://www.eecs.ucf.edu/~leavens/JML/

  2. Blast project, http://mtc.epfl.ch/software-tools/blast/

  3. ESC/Java2, http://kind.ucd.ie/products/opensource/ESCJava2/

  4. Java PathFinder, http://javapathfinder.sourceforge.net/

  5. NuSMV, http://nusmv.irst.itc.it/

  6. PicoSAT, http://fmv.jku.at/picosat/

  7. SatAbs tool, http://www.verify.ethz.ch/satabs/

  8. Slam project, http://research.microsoft.com/en-us/projects/slam/

  9. Soot framework, http://www.sable.mcgill.ca/soot/

  10. Spec#, http://research.microsoft.com/en-us/projects/specsharp/

  11. Spin, http://spinroot.com/spin/whatispin.html

  12. Uppaal integrated environment, http://www.uppaal.com/

  13. Yices, http://yices.csl.sri.com/

  14. Adámek, J., Kofroň, J., Plášil, F.: NSWI101: Behavior models and verification, http://dsrg.mff.cuni.cz/teaching/nswi101/

  15. Adamek, J., Plasil, F.: Component composition errors and update atomicity: static analysis: Research articles. Journal of Software Maintenance and Evolution: Research and Practice 17(5), 363–377 (2005)

    Article  Google Scholar 

  16. Alur, R., Dill, D.L.: A theory of timed automata. Theoretical Computer Science 126(2), 183–235 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  17. Anand, S., Pasareanu, C.S., Visser, W.: JPF-SE: A symbolic execution extension to Java PathFinder. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 134–138. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  18. Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S.K., Ustuner, A.: Thorough static analysis of device drivers. SIGOPS Oper. Syst. Rev. 40(4), 73–85 (2006)

    Article  Google Scholar 

  19. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  20. Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. In: Proceedings of the 2005 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering, PASTE 2005, pp. 82–87. ACM, New York (2005)

    Chapter  Google Scholar 

  21. Bergstra, J., Klop, J.: Process algebra for synchronous communication. Information and Control 60(1-3), 109–137 (1984)

    Article  MATH  MathSciNet  Google Scholar 

  22. Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R., Beyer, D.: The software model checker blast: Applications to software engineering. Int. J. Softw. Tools Technol. Transfer, 505–525 (2007)

    Google Scholar 

  23. Beyer, D., Henzinger, T.A., Théoduloz, G.: Program analysis with dynamic precision adjustment. In: Proceedings of the 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE 2008), pp. 29–38. IEEE Computer Society Press, Los Alamitos (2008)

    Chapter  Google Scholar 

  24. Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press, Cambridge (1999)

    Google Scholar 

  25. Dijkstra, E.W.: Cooperating sequential processes. In: Programming Languages: NATO Advanced Study Institute, pp. 43–112. Academic Press, London (1968)

    Google Scholar 

  26. Fokkink, W.: Introduction to Process Algebra. Springer-Verlag New York, Inc., Secaucus (2000)

    MATH  Google Scholar 

  27. Giannakopoulou, D., Pasareanu, C.S., Cobleigh, J.M.: Assume-guarantee verification of source code with design-level assumptions. In: 26th International Conference on Software Engineering (ICSE 2004), pp. 211–220. IEEE Computer Society, Los Alamitos (2004)

    Google Scholar 

  28. Gulavani, B.S., Henzinger, T.A., Kannan, Y., Nori, A.V., Rajamani, S.K.: Synergy: a new algorithm for property checking. In: SIGSOFT 2006/FSE-14: Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, pp. 117–127. ACM, New York (2006)

    Chapter  Google Scholar 

  29. Henzinger, T. A., Jhala, R., Majumdar, R.: SPIN Workshop 2005 – Blast tutorial slides, http://www.cs.ucla.edu/~rupak/Powerpoint/BlastTutorial/SPIN2005.ppt

  30. Holzmann, G.J.: The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley Professional, Reading (2003)

    Google Scholar 

  31. Kroening, D., Strichman, O.: Decision Procedures: An Algorithmic Point of View. Springer, Heidelberg (2008)

    MATH  Google Scholar 

  32. Newborn, M.: Automated Theorem Proving: Theory and Practice. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  33. Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer-Verlag New York, Inc., Secaucus (1999)

    MATH  Google Scholar 

  34. Parízek, P., Šerý, O.: NSWI132: Program analysis and code verification, http://dsrg.mff.cuni.cz/~parizek/teaching/proganalysis/

  35. Pasareanu, C.S., Pelanek, R., Visser, W.: Predicate abstraction with under-approximation refinement. Logical Methods in Computer Science 3(1) (2007)

    Google Scholar 

  36. Pasareanu, C.S., Visser, W.: Verification of java programs using symbolic execution and invariant generation. In: Graf, S., Mounier, L. (eds.) SPIN 2004. LNCS, vol. 2989, pp. 164–181. Springer, Heidelberg (2004)

    Google Scholar 

  37. Ranjit, T.H., Henzinger, T.A., Jhala, R., Majumdar, R.: Lazy abstraction. In: POPL, pp. 58–70. ACM Press, New York (2002)

    Google Scholar 

  38. Ruys, T.C.: SPIN Workshop 2002 – SPIN beginners’ tutorial, http://spinroot.com/spin/Doc/SpinTutorial.pdf

  39. Ruys, T.C., Holzmann, G.J.: SPIN Workshop 2004 – advanced SPIN tutorial, http://spinroot.com/spin/Doc/Spin_tutorial_2004.pdf

  40. Schwartzbach, M.: Lecture notes on static analysis, http://www.brics.dk/~mis/static.html

  41. Visser, W., Havelund, K., Brat, G.P., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering 10(2), 203–232 (2003)

    Article  Google Scholar 

  42. Zhang, L., Malik, S.: The quest for efficient boolean satisfiability solvers. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 17–36. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kofroň, J., Parízek, P., Šerý, O. (2009). On Teaching Formal Methods: Behavior Models and Code Analysis . In: Gibbons, J., Oliveira, J.N. (eds) Teaching Formal Methods. TFM 2009. Lecture Notes in Computer Science, vol 5846. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04912-5_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-04912-5_10

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-04911-8

  • Online ISBN: 978-3-642-04912-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics