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.
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
Java modeling language (JML), http://www.eecs.ucf.edu/~leavens/JML/
Blast project, http://mtc.epfl.ch/software-tools/blast/
Java PathFinder, http://javapathfinder.sourceforge.net/
NuSMV, http://nusmv.irst.itc.it/
PicoSAT, http://fmv.jku.at/picosat/
SatAbs tool, http://www.verify.ethz.ch/satabs/
Slam project, http://research.microsoft.com/en-us/projects/slam/
Soot framework, http://www.sable.mcgill.ca/soot/
Spec#, http://research.microsoft.com/en-us/projects/specsharp/
Uppaal integrated environment, http://www.uppaal.com/
Yices, http://yices.csl.sri.com/
Adámek, J., Kofroň, J., Plášil, F.: NSWI101: Behavior models and verification, http://dsrg.mff.cuni.cz/teaching/nswi101/
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)
Alur, R., Dill, D.L.: A theory of timed automata. Theoretical Computer Science 126(2), 183–235 (1994)
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)
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)
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)
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)
Bergstra, J., Klop, J.: Process algebra for synchronous communication. Information and Control 60(1-3), 109–137 (1984)
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)
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)
Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press, Cambridge (1999)
Dijkstra, E.W.: Cooperating sequential processes. In: Programming Languages: NATO Advanced Study Institute, pp. 43–112. Academic Press, London (1968)
Fokkink, W.: Introduction to Process Algebra. Springer-Verlag New York, Inc., Secaucus (2000)
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)
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)
Henzinger, T. A., Jhala, R., Majumdar, R.: SPIN Workshop 2005 – Blast tutorial slides, http://www.cs.ucla.edu/~rupak/Powerpoint/BlastTutorial/SPIN2005.ppt
Holzmann, G.J.: The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley Professional, Reading (2003)
Kroening, D., Strichman, O.: Decision Procedures: An Algorithmic Point of View. Springer, Heidelberg (2008)
Newborn, M.: Automated Theorem Proving: Theory and Practice. Springer, Heidelberg (2001)
Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer-Verlag New York, Inc., Secaucus (1999)
Parízek, P., Šerý, O.: NSWI132: Program analysis and code verification, http://dsrg.mff.cuni.cz/~parizek/teaching/proganalysis/
Pasareanu, C.S., Pelanek, R., Visser, W.: Predicate abstraction with under-approximation refinement. Logical Methods in Computer Science 3(1) (2007)
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)
Ranjit, T.H., Henzinger, T.A., Jhala, R., Majumdar, R.: Lazy abstraction. In: POPL, pp. 58–70. ACM Press, New York (2002)
Ruys, T.C.: SPIN Workshop 2002 – SPIN beginners’ tutorial, http://spinroot.com/spin/Doc/SpinTutorial.pdf
Ruys, T.C., Holzmann, G.J.: SPIN Workshop 2004 – advanced SPIN tutorial, http://spinroot.com/spin/Doc/Spin_tutorial_2004.pdf
Schwartzbach, M.: Lecture notes on static analysis, http://www.brics.dk/~mis/static.html
Visser, W., Havelund, K., Brat, G.P., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering 10(2), 203–232 (2003)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)