Module 1 — Fondamentaux de l’architecture logicielle
- Rôle de l’architecture dans la qualité, la pérennité et l’évolutivité d’un système logiciel.
- Différence entre architecture, conception détaillée et implémentation.
- Principes de modularité, séparation des responsabilités et maîtrise des dépendances.
- Identification des qualités attendues : maintenabilité, testabilité, performance, lisibilité, extensibilité.
- Lecture d’une architecture existante pour repérer forces, limites et points de vigilance.
- Mise en application encadrée autour de l’analyse d’une structure applicative type.
Module 2 — Clean code et qualité de conception
- Principes de lisibilité du code : intention claire, nommage pertinent, structure cohérente.
- Organisation des classes, méthodes et fichiers pour réduire la complexité inutile.
- Gestion des responsabilités avec les principes SOLID et les bonnes pratiques associées.
- Prévention des code smells les plus fréquents : duplication, classes trop larges, méthodes trop longues, dépendances excessives.
- Bon usage des commentaires, exceptions, validations et conventions d’équipe.
- Intégration du clean code dans les revues de code et dans le quotidien des développements.
Module 3 — Maîtriser les design patterns utiles
- Comprendre l’objectif réel des design patterns et leurs limites d’utilisation.
- Identifier les grandes familles de patterns : création, structure, comportement.
- Étudier les patterns les plus utiles en contexte applicatif : Factory, Strategy, Observer, Adapter, Decorator, Command, Repository.
- Choisir un pattern en fonction d’un problème de conception concret plutôt que par effet de mode.
- Reconnaître les surconceptions et éviter l’ajout de complexité non justifiée.
- Mise en application encadrée à partir de cas de refactorisation ciblés.
Module 4 — Structurer l’application par couches et composants
- Définition des responsabilités entre présentation, application, domaine et infrastructure.
- Différence entre logique métier, logique technique et orchestration.
- Conception d’interfaces claires entre composants et services.
- Réduction du couplage grâce à l’inversion de dépendances et aux contrats explicites.
- Organisation des flux, des échanges et de la circulation des données dans l’application.
- Critères de qualité pour découper un système en modules cohérents et évolutifs.
Module 5 — Introduction opérationnelle au Domain-Driven Design
- Principes du DDD et apports pour les applications orientées métier.
- Distinction entre cœur de métier, sous-domaines et zones de complexité.
- Construction d’un langage commun entre équipes métier et équipes techniques.
- Identification des concepts métier structurants : entités, objets-valeur, agrégats, services de domaine.
- Compréhension des bounded contexts et de leur utilité dans l’organisation d’un système.
- Mise en application encadrée sur la modélisation d’un domaine fonctionnel type.
Module 6 — Modélisation métier et règles de conception DDD
- Concevoir un modèle métier cohérent, explicite et centré sur les invariants métier.
- Définir le rôle des entités et des objets-valeur dans la stabilité du modèle.
- Encapsuler les règles métier au bon endroit pour éviter leur dispersion dans le code.
- Structurer les agrégats pour garantir cohérence, intégrité et maîtrise des transactions.
- Utiliser les repositories et services applicatifs sans affaiblir le domaine.
- Repérer les anti-patterns fréquents : modèle anémique, services surchargés, confusion entre domaine et infrastructure.
Module 7 — Refactorisation et amélioration d’une architecture existante
- Identifier les points de fragilité d’une base de code existante sous l’angle architecture et conception.
- Prioriser les améliorations selon les risques, les usages et la valeur apportée au projet.
- Mettre en œuvre une démarche de refactorisation progressive et sécurisée.
- Réduire la dette technique sans bloquer les évolutions fonctionnelles.
- Introduire progressivement principes de clean code, patterns et concepts DDD dans un existant.
- Mise en application encadrée sur des scénarios d’amélioration d’architecture.
Module 8 — Pérenniser les bonnes pratiques en équipe
- Formalisation de standards de conception adaptés au contexte technique de l’équipe.
- Mise en place de critères partagés pour les revues de code et les décisions d’architecture.
- Articulation entre qualité de code, tests, documentation utile et collaboration.
- Gestion des arbitrages entre simplicité, robustesse, délai et évolutivité.
- Organisation d’une démarche d’amélioration continue des pratiques de conception.
- Capitalisation des choix structurants pour renforcer la cohérence des développements dans le temps.






