Architecture Logicielle
Le cours d’architecture logicielle a pour objectifs de former l’étudiant ou l’étudiante à concevoir et planifier des projets logiciels de manière à en assurer la réussite à long terme. Au fil des séances, il ou elle apprendra à comparer diverses architectures, à en mesurer les forces, faiblesses et coûts techniques, puis à justifier ses choix de façon argumentée. Le cours développe également un vocabulaire commun de conception logicielle, indispensable pour dialoguer efficacement avec ses pairs.
Enfin, la démarche adoptée met l’accent sur la nuance : il n’existe jamais une unique solution idéale, et la capacité à sélectionner l’approche la plus appropriée à un contexte donné constitue une compétence centrale qui sera cultivée tout au long de la formation.
Objectifs du cours
- Comprendre les fondements de l’ingénierie logicielle : analyse des besoins et modélisation.
- Maîtriser les principaux styles architecturaux, en particulier MVC, et autre patrons de conception.
- Savoir assurer la qualité d’un logiciel : TDD, tests unitaires, intégration continue, CI/CD.
3 blocs d’apprentissage
| # | bloc | contenu principal |
|---|---|---|
| 1 | Analyse et modélisation | Exigences, UML (cas d’utilisation, classes), Outils de création de diagrammes (Lucidchart, draw.io, PlantUML) méthodologies de développement (cascade, itérative, agile, DevOps) Outils de gestion (Jira/Trello) |
| 2 | Architecture et conception | MVC & variantes, patrons (Observer, Adapter, Facade, Strategy, Factory…), principes de design (cohésion, couplage, retour sur encapsulation/héritage/composition/polymorphisme ), séparation des couches, normalisation de base de données |
| 3 | Tests et qualité | TDD, JUnit, tests d’intégration, introduction aux pipelines CI/CD |