- Zulassung : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/zulassung/
- Ausbildungsprogramm : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/ausbildungsprogramm/
- Studienaufbau : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/studienaufbau/
- Berufliche Perspektiven : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/berufliche-perspektiven/
- Mobilität : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/mobilitat/
- Personen : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/personen/
- Zulassung : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/zulassung/
- Ausbildungsprogramm : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/ausbildungsprogramm/
- Studienaufbau : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/studienaufbau/
- Berufliche Perspektiven : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/berufliche-perspektiven/
- Mobilität : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/mobilitat/
- Personen : /de/ausbildung/bachelor/informatik-und-kommunikationssysteme/personen/
Ausbildungsprogramm
Kursbeschreibung
Zum Modul-
Angestrebte Kompetenzen und Lernziele
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.
-
Kursinhalte
- 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.
Unterrichtsform
Kursbeschreibung
Lernkontrolle
- Schlussprüfung Lernkontrolle Berichte, Berichte,
Notenberechnung / Validierungsmodalitäten
Die Note des Kurses entspricht dem gewichteten Durchschnitt aller Lernkontrollen während des Semesters. Im Falle einer Schlussprüfung entspricht die Note des Kurses dem arithmetischen Mittel aus der Note der Lernkontrolle und der Schlussprüfung.
Dozierende
Philippe Joye, Sébastien Rumley