MICRO-371 / 3 credits

Teacher(s): Ingram Sandy, Silva Eric

Language: French


Résumé

Ce cours couvre des sujets liés à l'architecture software moderne et industrielle : la gestion agile de projets, la spécification des besoins, le développement d'applications critiques, la programmation robuste, et les aspects devOps (automatisation de tests, pipeline CI/CD)

Contenu

Architecture Software

  • Patron de conception (Design patterns) et principes SOLID

  • Styles d'architecture

  • Processus de développement dans les domaines critiques (automobile, aviation...)

  • Spécification des besoins et définition des exigences

Gestion de projet

  • Approche de gestion agile (principes agiles, outils de planification, méthodologie SCRUM)

  • Evaluation de l'effort, des coûts et des risques

  • Fiabilité et cycle de vie du produit

Code robuste et industrialisation

  • "Best practices" pour le développement d'applications critiques (choix des outils, librairies, tests)

  • Directives "statiques" de codage (MISRA C...) et outils de test (CPPCheck, PC-lint...)

  • Automatisation des tests (approches: TDD, BDD / types: unitaire, intégration...)

  • Outils de monitoring (couverture des tests, traçage d'erreurs)

Intégration et déploiement continus (CI/CD)

  • Introduction au DevOps et CI/CD

  • Gitflow et Trunk-based development

  • "Best practices" pour l'utilisation de GIT

Acquis de formation

A la fin de ce cours l'étudiant doit être capable de:

  • Expliquer les avantages du développement agile.
  • Prendre en considération durant la phase de conception et d'implémentation de logiciels que ces derniers sont en constante évolution.
  • Expliquer les techniques et outils de développement et de gestion de projet agile.
  • Exploiter les styles d'architecture et patrons de conception avancés.
  • Explorer les styles d'architecture et patrons de conception pour orienter les décisions de conception.
  • Choisir ou sélectionner les techniques de maintenance et d'évolution pour le développement continu de systèmes logiciels évolutifs et pour l'extension de systèmes existants tout en maintenant leur qualité.
  • Choisir ou sélectionner une architecture répondant aux besoins du domaine d'application
  • Concevoir un code sûr répondant aux exigences métier
  • Classer différentes architectures en fonction de leur niveau de fiabilité
  • Formuler des spécifications de code permettant un développement fiable et atomique

Méthode d'évaluation

- Projet de groupe

- Evaluation écrite

Ressources

Liens Moodle

In the programs

  • Semester: Spring
  • Exam form: Written (summer session)
  • Subject examined: Software architecture
  • Courses: 2 Hour(s) per week x 14 weeks
  • Project: 1 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: Written (summer session)
  • Subject examined: Software architecture
  • Courses: 2 Hour(s) per week x 14 weeks
  • Project: 1 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: Written (summer session)
  • Subject examined: Software architecture
  • Courses: 2 Hour(s) per week x 14 weeks
  • Project: 1 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: Written (summer session)
  • Subject examined: Software architecture
  • Courses: 2 Hour(s) per week x 14 weeks
  • Project: 1 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: Written (summer session)
  • Subject examined: Software architecture
  • Courses: 2 Hour(s) per week x 14 weeks
  • Project: 1 Hour(s) per week x 14 weeks
  • Type: optional

Reference week

Tuesday, 15h - 17h: Lecture GCC330

Tuesday, 17h - 18h: Project, labs, other GCC330

Related courses

Results from graphsearch.epfl.ch.