Dans ce cours, l’étudiant apprend à utiliser des outils et méthodes d’ingénierie logicielle pour définir, concevoir et évaluer des solutions architecturales. L’enseignement couvre les tactiques associées aux attributs de qualité, les principaux patrons et styles architecturaux, ainsi que l’élaboration et la documentation d’architectures logicielles. Plus particulièrement, il ou elle se familiarise avec :
-
les principales tactiques architecturales associées aux attributs de qualité (performance, disponibilité, sécurité, etc.) ;
-
les patrons et styles architecturaux (monolithique, microservices, événementiel, CQRS, etc.) ;
-
les gabarits de documentation architecturale (UML, C4, Arc42) ;
-
une méthode d’élaboration d’architecture logicielle, appliquée de manière incrémentale dans une série de laboratoires thématiques.
Outils logiciels exploités
Afin de soutenir l’apprentissage, l’étudiant utilise un ensemble diversifié d’outils d’ingénierie logicielle. Le choix précis des outils est laissé à sa discrétion, mais les catégories couvertes dans ce cours incluent :
-
Outils de conception : Eclipse Papyrus, Visual Paradigm, PlantUML, etc.
-
Environnements de développement intégrés (IDE) : IntelliJ IDEA, Eclipse, NetBeans, Visual Studio, Visual Studio Code.
-
Plateformes d’observabilité et de déploiement : Prometheus, Grafana, Docker, Kubernetes.
-
Systèmes de bases de données relationnels et non relationnels : SQL (PostgreSQL, MySQL) et NoSQL (MongoDB, Cassandra, etc.).
-
Systèmes d’exploitation : Linux.
Application progressive dans les laboratoires
Chaque laboratoire introduit des problématiques architecturales concrètes et mobilise des outils adaptés :
-
Infrastructure – Docker, contrôle de version, CI/CD
-
Architecture client/serveur et persistance (DAO, RDBMS, NoSQL)
-
Architecture monolithique, ORM, DDD
-
Interfaces REST et GraphQL
-
Optimisation, mise en cache, tests de charge (lecture), observabilité (logs, métriques)
-
Répartition de charge, tests de charge (lecture/écriture), observabilité avancée
-
Microservices, API Gateway, gestion des limites et délais, Kubernetes
-
Saga (orchestration), traçage distribué, gRPC
-
Event Sourcing, architectures pilotées par événements, Pub/Sub
-
Saga (chorégraphie), CQRS avec event broker
-
Bases de données distribuées (Cassandra, etc.), tests de charge avancés
-
Service Mesh, découverte de services, configuration, sécurité
-
Circuit Breaker, Machine Learning (MCP, agents), Chaos Engineering