01 Introduction
01 Introduction
01 Introduction
2014/09
2013/07
2018/08 2020/09
Développeur Post-doctoral
logiciel fellow
2
Mes intérêts en recherche et développement
• DevOps/Mise en production
• Gestion de configuration
• Pipeline d’intégration (CI/CD)
• Gestion de logs
• Monitoring
• Analyse des activités de développement et d’opération
• Mining software repositories
• Machine learning
• Techniques d’analyse de code
• Systèmes multi-composants: Micro-Services, systèmes
distribués, …
3
Mon équipe et moi même, on travail sur différentes
étapes du DevOps
Révision de code
Gestion de configuration
Évolution des
logiciels
Ph.D.
Masters
Stagiaire
CI/CD
ML4DevOps
Je suis là pour vous aidez!
mohammed.sayagh@etsmtl.ca
http://msayagh.github.io 5
Discussion sur le cours
Présentez vous …
6
Où se situe « l’ingénierie de réalisation de versions
» dans le processus du génie logiciel
Définition des
requis
Conception
Opération
et architecture
et surveillance
15k tests
VCS
Test Environment
Staging/Production Environments
9 min. 6 min.
http://goo.gl/qPT6
“Facebook required
us to develop a
system that pushes
tens to hundreds of
diffs every few hours”
- Chuck Rossi
https://engineering.fb.com/developer-tools/rapid-release-at-massive-scale/
La publication de nouvelles versions est de plus en
plus rapide
OK ! Mais, comment peut on arriver à une telle
agilité/productivité tout en gardant et améliorant la
qualité de logiciels ?
Objectifs du cours : (1) comprendre les outils qui existent déjà dans
l’ingénierie de mise en production
Magique
Technologies : Containerisation, Branches, CI/CD,
Révision de code, DevSecOps, Types de
déploiement, Tests, …
Objectifs du cours : (2) Comprendre les problèmes
lié à la mise en production en pratique
Invité de l’industrie,
explorer les problèmes
pratiques
Objectifs du cours : (3) Apprendre des solutions
avancées lié à l’ingénierie de mise en production
Apprentissage
machine et
analyse de code
Objectifs du cours
• L’objectif du cours est de vous donner les moyens pour résoudre des
problèmes de mise en production en utilisant des méthodes avancées tel
que l’intelligence artificielle.
• Étudier des concepts techniques de bases en ingénierie de mise en
production
• Étudier des problématiques existantes en ingénierie de mise en
production
• Étudier des techniques avancées (principalement l’apprentissage machine)
appliquées à divers problèmes d’ingénierie de mise en production
• Pratiquer la résolution d’un problème de mise en production
• Lab : prédiction des bogues
• Mini-projet : de votre choix
15
Sujet
• Les bases techniques de l’ingénierie de publication de nouvelles versions
• Bases techniques du pipeline de déploiement/DevOps
• Tests, revue de code, CI/CD, gestion de configuration, conteneurisation et orchestration des
systèmes complexes, IaC
• Bases techniques de monitoring et télémétrie
• Gestion de logs, infrastructure de télémetrie,
• L’intégration de l’intelligence à l’ingénierie de publication de nouvelles
versions
• Les bases de l’utilisation d’IA pour le génie logiciel
• Les modèles d’IA pour le pipeline CI/CD
• Les modèles d’IA pour le monitoring/télémétrie
• Exploration de sujets avancés en ingénierie de publication de nouvelles
versions
• Pratiquer l’intégration de l’intelligence à l’ingénierie de publication de
versions
D’autres références très intéressantes, mais pas
obligatoire !
17
Déroulement du cours
• Partie 1 : Les pratiques techniques du CI/CD, DevSecOps, et
observabilité
• Partie 2 : L’utilisation de l’apprentissage machine en génie
logiciel en générale
• Partie 3 : Un cas d’étude sur les difficultés rencontrés en
entreprise (invité de l’industrie)
• Partie 4: Le pipeline de déploiement (CI/CD), problèmes et
solutions basés sur l’apprentissage machine
• Partie 5 : L’opération et monitoring des logiciels en
production et l’utilisation de l’IA dans l’opération (AiOps)
18
Structure du cours
• L’objectif du cours est de vous donner les moyens pour résoudre
des problèmes de mise en production en utilisant des méthodes
avancées tel que l’intelligence artificiel.
21
Mini-projet
• Développer une solution –idéalement basé sur l’IA - pour résoudre
l’une des problématique de l’ingénierie de mise en production de
nouvelles versions
• Vous avez le choix libre de choisir le problème qui vous intéresse
• Le projet est le développement de la solution avec une validation.
• Exemple :
• L’utilisation d’un modèle d’apprentissage machine et le calcul de ses performances pour
améliorer …
• Répliquer une solution existante dans la littérature à un nouveau projet
• Il y aura une séance dédiée à la discussion du projet final
Dates limites à retenir
• Lab. :
• Début : 24 Mai
• Présentation du laboratoire : 26 Juin
• Rapport de la première partie du Lab : 12 Juin
• Rapport finale du Lab : 10 Juillet
• Mini-projet :
• Début : 19 Juin.
• Présentation finale : 31 Juillet.
• Rapport final (5 pages max) : 16 Août.
• Présentation de 2 articles
• Dans toute la session, chaque étudiant présentera 2 articles.
• Choix des articles entre 18 et 24 Mai
Questionnaire
• Le but du questionnaire est d’avoir une idée sur vos connaissances
en ingénieurie de mise en production et de comprendre vos attente
• https://forms.gle/j8Va5x52VicvvCWi7