Abstract
Formal methods provide systematic and rigorous techniques for software development. We are convinced that they must be taught in Software Engineering curricula. In this paper, we present a set of formal methods courses included in a Software Engineering & Security track of ENSIIE, École Nationale Supérieure d’Informatique pour l’Industrie et l’Entreprise, a French engineering school delivering the Ingénieur de l’ENSIIE degree (master level). These techniques have been taught over the last fifteen years in our education programs in different formats. One of the difficulty we encounter is that students consider these kinds of techniques difficult and requiring much work and thus are inclined to choose other courses when they can. Furthermore, students are strongly focused on the direct applicability of the knowledge they are taught, and they are not all going to pursue a professional career in the development of critical systems. Our experience shows that students can gain confidence in formal methods when they understand that, through a rigorous mathematical approach to system specification, they acquire knowledge, skills and abilities that will be useful in their professional future as Computer Scientists/Engineers.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Course catalogue can be found at https://www.ensiie.fr/wp-content/uploads/2018/05/ensiie_course_catalogue.pdf.
- 2.
In parenthesis appear the languages used to illustrate the different concepts.
- 3.
The authors of this paper are teaching these courses.
- 4.
- 5.
- 6.
The lab session text is at the following url http://web4.ensiie.fr/~guillaume.burel/download/PR_TP.pdf.
- 7.
Answers can be found at http://web4.ensiie.fr/~dubois/interviews_FMTEA19.pdf.
References
Abrial, J.: The B-Book - Assigning Programs to Meanings. Cambridge University Press, Cambridge (2005)
Abrial, J.: Modeling in Event-B - System and Software Engineering. Cambridge University Press, Cambridge (2010)
Barendregt, H.: Introduction to generalized type systems. J. Funct. Program. 1(2), 125–154 (1991)
Barthe, G., D’Argenio, P.R., Rezk, T.: Secure information flow by self-composition. Math. Struct. Comput. Sci. 21(6), 1207–1252 (2011)
Bechtold, S., Brannen, S., Link, J., Merdes, M., Philipp, M., Stein, C.: J Unit 5 User Guide. https://junit.org/junit5/docs/current/user-guide/
Blanchard, A., Kosmatov, N., Loulergue, F.: Ghosts for lists: a critical module of contiki verified in frama-C. In: Dutle, A., Muñoz, C., Narkawicz, A. (eds.) NFM 2018. LNCS, vol. 10811, pp. 37–53. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-77935-5_3
Blazy, S., Bühler, D., Yakobowski, B.: Structuring abstract interpreters through state and value abstractions. In: Bouajjani, A., Monniaux, D. (eds.) VMCAI 2017. LNCS, vol. 10145, pp. 112–130. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-52234-0_7
Dubois, C., Ménissier-Morain, V.: Apprentissage de la Programmation avec OCaml. Hermès Sciences, Cachan (2004)
Filliâtre, J.-C., Paskevich, A.: Why3 — where programs meet provers. In: Felleisen, M., Gardner, P. (eds.) ESOP 2013. LNCS, vol. 7792, pp. 125–128. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-37036-6_8
Huynh, N., Frappier, M., Mammar, A., Laleau, R., Desharnais, J.: A formal validation of the RBAC ANSI 2012 standard using B. Sci. Comput. Program. 131, 76–93 (2016)
Jarrar, A., Balouki, Y.: Formal modeling of a complex adaptive air traffic control system. CASM 6, 6 (2018)
Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-c: a software analysis perspective. Formal Asp. Comput. 27(3), 573–609 (2015)
Kosmatov, N., Williams, N., Botella, B., Roger, M.: Structural unit testing as a service with pathcrawler-online.com. In: SOSE, pp. 435–440. IEEE Computer Society (2013)
Lecomte, T., Déharbe, D., Prun, É., Mottin, E.: Applying a formal method in industry: a 25-Year trajectory. In: Cavalheiro, S., Fiadeiro, J. (eds.) SBMF 2017. LNCS, vol. 10623, pp. 70–87. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-70848-5_6
Miné, A.: A new numerical abstract domain based on difference-bound matrices. CoRR, abs/cs/0703073 (2007)
Monniaux, D., Gonnord, L.: Cell morphing: from array programs to array-free horn clauses. In: Rival, X. (ed.) SAS 2016. LNCS, vol. 9837, pp. 361–382. Springer, Heidelberg (2016). https://doi.org/10.1007/978-3-662-53413-7_18
Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)
Roşu, G., Şerbănuţă, T.F.: An overview of the K semantic framework. J. Logic Algebraic Program. 79(6), 397–434 (2010)
Vistbakka, I., Troubitsyna, E.: Towards Integrated Modelling of Dynamic Access Control with UML and Event-B. arXiv e-prints, May (2018)
Acknowledgment
We would like to thank all the colleagues who participated or participate to that set of formal courses. We cite some of them (in any order): S. Blazy, R. Laleau, J. Signoles, X. Urbain, P. Courtieu, F. Gervais, G. Berthelot, A. Mammar, T. Le Gall, R. Rioboo, C. Mouilleron, D. Watel, J. Falampin, C. Métayer, N. Kushik, A. Djoudi. Finally, we mention and thank late P. Facon who introduced a course at ENSIIE about formal specification with VDM in the late 90s and thus opened a specific route.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Dubois, C., Prevosto, V., Burel, G. (2019). Teaching Formal Methods to Future Engineers. In: Dongol, B., Petre, L., Smith, G. (eds) Formal Methods Teaching. FMTea 2019. Lecture Notes in Computer Science(), vol 11758. Springer, Cham. https://doi.org/10.1007/978-3-030-32441-4_5
Download citation
DOI: https://doi.org/10.1007/978-3-030-32441-4_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-32440-7
Online ISBN: 978-3-030-32441-4
eBook Packages: Computer ScienceComputer Science (R0)