Matière
Architecture des logiciels
Description
Les grands logiciels actuels ont une complexité telle que la définition d’une archi-tecture logicielle est devenue un préalable à leur conception. Ces architectures ont des impacts tant en termes de coûts de développement, de déploiement et d’exploitation qu’en termes de dimensionnement, d’efficacité énergétique ou de flux réseaux.
Cet enseignement a pour objectif de présenter les principales notions utilisées dans les architectures logicielles et les impacts croisés entre l’architecture du logiciel et les contraintes opérationnelles. Les aspects pratiques sont centrés sur les outils et les métiers autour du DevOps.
Compétences requises
À l’entrée dans cet enseignement, un étudiant devrait savoir :
- Programmer à l’aide d’un langage impératif tel que Python ou JavaScript
- Utiliser un langage de script (shell)
- Maîtriser des outils tels que git
- Utiliser un outil de conteneur (docker)
Compétences visées
À l’issue de cet enseignement, les étudiants seront capables de :
- Définir l’architecture d’un grand logiciel
- En maîtriser le développement et le déploiement
Discipline(s)
- Informatique
Bibliographie
- Robert C. Martin, Clean Architecture: A Craftsman’s Guide to Software Struc-ture and Design, 2017
- Vaughn Vernon, Implementing Domain-Driven Design, 2013
- Chris Richardson, Microservices Patterns, 2018
- Hugo Filipe Oliveira Rocha, Practical Event-Driven Microservices Architecture, 2021
- Harry J.W. Percival, Bob Gregory, Architecture Patterns With Python, 2020