Architecte Logiciel
Domain Driven Design DDD, AI-Driven Design et les Architectures
Training created on 3/19/24. Last update on 7/8/24.
Programme version: 1
Training programme
Les architectes logiciels sont souvent confrontés à des défis complexes tels que la conception de systèmes évolutifs, la gestion de la complexité des projets et la communication efficace avec les parties prenantes. Il est aussi indispensable de ne pas rentrer en conflit en ralentissant le produit quant le Product Owner recherche de la vitesse dans la gestion de son backlog et focalise sur l’optimisation de la valeur. Cette formation intensive de trois jours, “Architecte Logiciel”, est conçue pour aborder ces problématiques en profondeur. En utilisant des approches pratiques et interactives comme les ateliers et les sticky notes, les participants apprendront à maîtriser les concepts de Clean Architecture, d’Architecture Hexagonale, d’Architecture Événementielle et d’Architecture Distribuée. Ils découvriront comment le Domain Driven Design (DDD) et Model Driven Design (MDD) peuvent transformer leur manière de concevoir des systèmes logiciels robustes et maintenables. Cette formation est incontestable une formation pour rebooster ses aptitudes en bénéficiant de nos 20 années passées dans le domaine.
Objectives of the training
- Comprendre les principes fondamentaux des principales architectures logicielles (Clean Architecture, Architecture Hexagonale, Architecture Événementielle).
- Appliquer les concepts de Domain Driven Design (DDD) pour aligner le développement logiciel avec les besoins métiers.
- Utiliser des techniques de modélisation avancées pour améliorer la conception et la communication au sein des équipes.
- Maîtriser les techniques pratiques comme Event Storming, CRC Cards, et Wardley Mapping pour résoudre des problèmes réels.
- Identifier et éviter les anti-patterns d’architecture logicielle.
Profile of beneficiaries
- Architectes logiciels
- Développeurs senior
- Chefs de projet technique
- Responsables d’équipe de développement
- Toute personne impliquée dans la conception et la gestion de l’architecture logicielle
- Expérience pratique dans la conception ou le développement de logiciels fortement recommandée.
Training content
-
TOUR DE TABLE
-
Jour 1 : Introduction et Domain Driven Design (DDD)
-
Introduction
- Présentation générale de la formation
- Importance du Domain Driven Design et de l’architecture logicielle
-
Module 1 : Introduction au Domain Driven Design (DDD)
- Maîtriser les principes fondamentaux du DDD pour se poser des bases solides et communes.
- Principes de base : Ubiquitous Language, Bounded Contexts, Entités, Valeurs, Agrégats, Référentiels et Services
- Importance de l’alignement entre le code et le domaine métier
- Atelier d’Ubiquitous Language et Communication Créer un langage partagé entre les développeurs et les experts métiers pour améliorer la communication et la compréhension mutuelle. Utilisation de sticky notes pour définir les termes clés du domaine. Discussions en groupe pour valider et affiner le langage commun
-
Module 2 – Exploration du Domaine avec Event Storming
- Approfondir l’Event Storming pour découvrir et modéliser les processus d’affaires de manière collaborative et visuelle.
- Principes et avantages de l’Event Storming
- Atelier – Session d’Event Storming : Faciliter une session d’Event Storming pour identifier les événements clés, les commandes et les lectures dans votre domaine. Utilisation de sticky notes pour cartographier les événements. Collaboration entre développeurs et experts métiers pour explorer le domaine
-
Module 3 – Modélisation Tactique
- Déployer les modèles tactiques du DDD pour structurer et organiser votre domaine de manière efficace.
- Principes de la Modélisation Tactique
- Entités, Valeurs, Agrégats, Référentiels et Services
- Atelier – Modélisation des Agrégats et Référentiels : Modéliser les agrégats et référentiels de votre domaine pour assurer la cohérence et l’intégrité des données. Utilisation de sticky notes pour identifier et définir les agrégats. Discussion sur les relations entre agrégats et référentiels
-
Jour 2 : Architecture Logicielle et Techniques Avancées
-
Module 4 : Clean Architecture
- Les systèmes complexes souffrent souvent d’un couplage étroit et d’une faible modularité. Ce module vous montrera comment la Clean Architecture peut structurer votre code pour faciliter les changements et la maintenance.
- Introduction à la Clean Architecture
- Origine, principes, et schéma
- Comparaison avec l’architecture hexagonale
- Atelier – Développement d’une Application Clean Architecture : Structurer votre code de manière à faciliter les changements et la maintenance. Utilisez des sticky notes pour définir les différentes couches et composants d’une application en Clean Architecture, et discutez en groupe des avantages et défis rencontrés.
-
Module 5 : Architecture Hexagonale
- Les architectures traditionnelles peuvent devenir rigides et difficiles à maintenir, limitant la testabilité et la flexibilité. Appliquer les principes de l’architecture hexagonale pour concevoir des systèmes plus flexibles et faciles à tester.
- Introduction à l’Architecture Hexagonale
- Principes, ports et adaptateurs
- Avantages et inconvénients
- Atelier – Modélisation de l’Architecture Hexagonale : Améliorer la testabilité et la maintenabilité en isolant la logique métier. Utiliser des sticky notes pour modéliser une application en suivant les principes de l’architecture hexagonale et discuter des ports, adaptateurs et couches de domaine.
-
Module 6 : CQRS et Event Sourcing
- Maîtriser les principes de CQRS et Event Sourcing afin d’améliorer la scalabilité et la flexibilité de votre système.
- Principes, avantages et défis
- Atelier – Implémentation de CQRS et Event Sourcing : Appliquer le CQRS et Event Sourcing pour séparer les responsabilités de lecture et d’écriture et gérer l’historique des événements – Utilisation de sticky notes pour modéliser les commandes et les événements – Simulation de différents scénarios d’événements
-
Jour 3 : Techniques de Modélisation Avancées, Stratégie et AI-Driven Design
-
Module 7 : Bounded Contexts et Context Mapping
- Explorer comment diviser votre domaine en sous-domaines gérables et définir clairement les frontières contextuelles.
- Comprendre les Bounded Contexts
- Définition et importance des Bounded Contexts
- Atelier – Context Mapping : Créer des Context Maps pour visualiser les interactions entre les différents sous-domaines et identifier les points d’intégration. Utilisation de sticky notes pour dessiner les Context Maps. Discussion sur les relations et intégrations entre les Bounded Contexts
-
Module 8 : Techniques de Modélisation Avancées Approfondir vos compétences en modélisation avec des techniques avancées comme Example Mapping et CRC Cards.
- Théorie et principes des CRC Cards
- Atelier – CRC Cards : Utiliser des CRC Cards pour définir les responsabilités, collaborations et relations des classes dans un système. Utilisation de sticky notes pour créer les CRC Cards. Discussion et feedback sur les responsabilités et collaborations.
-
Module 9 : Example Mapping (BDD)
- Théorie et principes de l’Example Mapping
- Atelier – Example Mapping : Créer des scénarios de tests alignés avec les exigences métiers pour garantir des fonctionnalités correctes. Utilisation de sticky notes pour créer des exemples concrets et des scénarios de tests. Application pratique et discussion sur les tests
-
Module 10 : Wardley Mapping
- Les architectes ont souvent du mal à visualiser la stratégie et l’évolution des composants de leur système. Ce module vous introduit à la méthode de Wardley Mapping pour clarifier la prise de décision stratégique.
- Introduction à Wardley Mapping
- Présentation de la méthode
- Utilisation dans le contexte de l’architecture logicielle
- Atelier – Wardley Mapping : Visualiser clairement la stratégie et l’évolution de votre système. Créez des Wardley Maps en utilisant des sticky notes pour visualiser les composants stratégiques et leur évolution, et discutez des implications pour l’architecture logicielle.
-
Module 11 : AI-Driven Design
- Intégrer des techniques d’AI-Driven Design pour optimiser les architectures et améliorer la prise de décision basée sur les données et l’apprentissage automatique tout au long du cycle de vie de l’architecture.
- Introduction à l’AI-Driven Design
- Présentation des concepts d’AI-Driven Design
- Utilisation de l’intelligence artificielle pour améliorer la conception logicielle
- Atelier – Mise en Pratique de l’AI-Driven Design : Appliquer les principes d’AI-Driven Design pour améliorer une architecture existante ou concevoir une nouvelle architecture. Utilisation de sticky notes et d’outils AI pour analyser et optimiser les décisions architecturales. Discussion sur les bénéfices et les défis de l’intégration de l’IA dans la conception logicielle
-
Conclusion
- Synthèse et Rappel des Points Clés
- Révision des concepts et techniques étudiées
- Discussion sur leur application dans différents contextes
- Feedback des participants et questions
- Questions et réponses
- Prochaines étapes et ressources pour aller plus loin
Nos intervenants sont des "Coachs Agiles & Instructeurs" expérimentés
- Évaluation lors des ateliers tout au long de la formation
- Évaluation des acquis en fin de formation
- Théorie : 30 % (support de cours et slides)
- Pratiques : 70 % (exercices + programmation)