Filière: Informatique et systèmes de communication
Orientation: Informatique logicielle
Module: Paradigmes de programmation 1

Descriptif de cours

Retour DevOps et code robuste

  • Objectifs

    Les buts de ce cours sont de a) saisir l'importance de la qualité dans la production de code informatique b) d'adopter les bonnes pratiques conduisant à la production d'une code base (code, fichiers de configurations associés, documentation) saine, permettant une maintenance facilitée et une maîtrise technique des projets informatiques à moyen et long termec) assimiler et adhérer à la philosophie du ' DevOps ', qui vise à rapprocher la production d'un logiciel de son exploitation. A la fin du cours, l'étudiant est capable de :

    • Témoigner de l'importance de rédiger (ou de faire rédiger, par exemple par un chatbot) un code informatique de qualité.
    • Rappeler et appliquer des bonnes pratiques contribuant à l'écriture d'un code de qualité, donc facilement lisible, documenté, testable, reproductible et maintenable à moyen voir long terme.
    • Justifier l'importance des outils de build et de gestion de dépendances tel que make, ant, maven ou npm, savoir en mettre en oeuvre certains, les utiliser et les configurer au mieux pour garantir la robustesse.
    • Appliquer les bonnes pratiques pour maitriser les dépendances de son projet informatique.
    • Comprendre le concept de la dette technique, saisir les risques associés, et adopter des pratiques permettant de maîtriser sa dette.
    • Mettre en oeuvre des outils contribuant à la production et à la conservation d'une base de code de qualité, quasi toujours opérationnelle et maîtrisée, tels qu'analyseurs de code, linters et outils de tests, mais aussi programme de versioning de code (git).
    • Mettre en oeuvre des méthodes contribuant à la production et à la conservation d'une base de code de qualité, quasi toujours opérationnelle et maîtrisée, telle que le pair programming, la revue de code ou le test-driven development.
    • Résumer les avantages que procurent la containerisation, notamment en matière de reproductibilité.
    • Utiliser docker pour bénéficier de ces avantages.
    • Résumer l'origine de la philosophie DevOps, mentionner les sources d'inspiration, citer les trois grands principes (flow, feedback, continuous improvement), et surtout comprendre comment appliquer cette philosophie à ses futurs projets.
    • Décrire les principes d'intégration continue (CI) et de déploiement continu (CD).
    • Rappeler les étapes standards d'un pipeline de livraison ou de déploiement.
    • Mettre en oeuvre un pipeline de CI/CD automatisant la chaîne de vérification du code et des configurations diverses, inclus configurations de déploiement.
    • Mettre en place un outillage permettant des tests automatiques du code, différencier le rôle de chaque outils, vérifier que l'outillage est fonctionnel et que les tests qui échouent provoqueront une alarme.
    • Rédiger ou faire rédiger du code de test, s'assurer qu'il s'exécute correctement ; mettre en place un système d'analyse de la couverture de test, savoir l'utiliser pour être efficace dans la rédaction des tests.
    • Saisir l'ultime importance de soigner son travail et ses développements, par égard pour ses futurs clients, collègues ou mandataires, et par égard pour lui-même.
  • Contenu
    • Problématique de la qualité et de la sécurité dans le génie logiciel. Également sous l'angle de la sécurité au travail (travail dans un environnement psychologique sain)
    • Le rôle et l'importance des outils de compilation, de gestion des dépendances, d'assemblages etc. L'importance de rendre les processus de build reproductibles, si possible sur n'importe quel environnement. Bonnes pratiques pour la gestion de dépendances (e.g. maven, gradle).
    • Problématique de la maintenance du code, surtout dans le contexte moderne de mise à jour quasi continue et d'évolutivité des produits logiciels. Introduction au concept de la dette technique.
    • Principe de la virtualisation et de la containerisation pour garantir la reproductibilité, faciliter le déploiement et le test continu. Introduction à docker.
    • Règles d'or pour un code lisible, en particulier longueur des classes et méthodes, nommage, complexité, commentaires, documentation. Utilisation raisonnée de GIT : noms des commit, soumission de merge request. Comment procéder à une revue de code.
    • Utilisation raisonnée de GIT : noms des commit, soumission de merge request. Comment procéder à une revue de code.
    • Fondements de la doctrine devOps : principes de flux, de feedback et d'amélioration continue. Origines de la doctrine.
    • Application de la doctrine en pratique en réalisant des pipelines de livraison continue (continuous delivery). Introduction au déploiement continu.
    • Méthodes d'écriture de test incluant les tests unitaires et le test-driven-development. Introduction aux outils d'analyse de couverture de test.
    • Utilisation avancée de git incluant l'utilisation des branches, le pull-request, et autres pratiques pour le travail en équipe telles que gitflow.

Forme d'enseignement et volume de travail

Cours magistral (y compris exercices)
20 périodes
Travaux pratiques / laboratoires
10 périodes
Travail personnel
45 périodes

Spécification du cours

Année de validité
2025-2026
Année du plan d'études
2ème année
Semestre
Automne
Programme
Français,Bilingue
Filière
Informatique et systèmes de communication
Langue d'enseignement
Français
Identifiant
B2C-DOCR-S
Niveau
Avancé
Type de cours
Fondamental
Formation
Bachelor

Modalités d'évaluation

  • Contrôle continu: travaux écrits, TP/évaluation de rapports, Participation aux discussions lors d'études de cas

Mode de calcul de la note de cours

La note du contrôle continu est la moyenne pondérée des évaluations du semestre. En cas d'examen de révision, la note finale du cours est la moyenne arithmétique de la note du contrôle continu et de celle de l'examen de révision.

Enseignant(s) et/ou coordinateur(s)

Philippe Joye, Sébastien Rumley