Software engineering
Cursus master ingénierie (CMI) - UFR de mathématique et d'informatiqueParcours Cursus master ingénierie (CMI) - Informatique, image, réalité virtuelle, interactions et jeux
Description
Mécanismes de la compilation (préprocesseur, compilation, assemblage et édition de liens). Structure mémoire d'un exécutable, pile d’exécution. Utilisation, création et compilation de bibliothèques. Compilation séparée et structuration d'un projet informatique (makefile). Gestionnaire de versions et développement collaboratif (svn, git). Portée des variables static/extern. Documentation de code (doxygen). Analyse de couverture de code (gcov). Méthodologie de gestion des erreurs et debug (gdb et valgrind). méthodologies de tests, tests unitaires/intégration/système, TDD, instrumentation d’un dépôt git (CI/CD, etc…), frameworks, écosystèmes, IDEs.
Version en Anglais:Compilation mechanisms (preprocessor, compilation, assembly and link editing). Memory structure of an executable, execution stack. Use, creation and compilation of libraries. Separate compilation and structuring of an IT project (makefile). Scope of static/external variables. Version management and collaborative development (svn, git). Test methodologies, unit/integration/system tests, Test Driven Development (TDD), instrumentation of a git repository (CI/CD, etc.), frameworks, ecosystems, IDEs. Code documentation (doxygen). Code coverage analysis (gcov). Error management and debugging methodology (gdb and valgrind)
Compétences requises
À l'entrée dans cette UE, un étudiant devrait déjà être capable de :
- utiliser un shell et un éditeur de texte (UE Culture et Pratique de l'Informatique)
- écrire des programmes en langage C (UE Algorithmique et Programmation 2)
version en Anglais:
Upon entering this UE, a student should already know how to :
- use a shell and a text editor (UE Culture et Pratique de l'Informatique)
- write programs in C language (UE Algorithmique et Programmation 2)
Compétences visées
À l'issue de cette UE, un étudiant est capable de :
- utiliser un compilateur, connaître ses options, utiliser la compilation séparée
- écrire un makefile
- documenter un code source
- contribuer à un projet collaboratif
- déboguer un programme
- développer un projet de taille importante
- utiliser un environnement de développement intégré (EDI)
- mettre en place des tests unitaires
Version en Anglais:
On completion of this course, students will be able to :
- use a compiler, know its options, use separate compilation
- write a makefile
- document source code
- contribute to a collaborative project
- debug a program
- develop a large-scale project
- use an integrated development environment (IDE)
- set up unit tests.
Bibliographie
- "Practical Makefiles, 1st Edition", John Graham-Cumming, 2018, No Starch Press
- "Learning Git: A Beginners Guide to Version Control" by Tobias Günther, 2021, Packt Publishing
- "The Pragmatic Programmer: Your Journey to Mastery", Andrew Hunt and David Thomas, 2019, Addison-Wesley Professional
- "The Debugging Book: Make Your Programs Work by Understanding What Can Go Wrong" by Andreas Zeller, 2021, No Starch Press
- "Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications", J. Seward, N. Nethercote, J. Weidendorfer, and the Valgrind Development Team, 2008, Network Theory Ltd.
- "Debugging with GDB: The GNU Source-Level Debugger" by Richard Stallman, Roland Pesch, Stan Shebs, et al., 2020, Free Software Foundation
- "Doxygen: Documentation System", Dimitri van Heesch, 2013, No Starch Press
- "Test Driven Development: By Example" by Kent Beck, 2022 (second edition),Addison-Wesley Professional