→ Sensibiliser au Domain-Driven Design afin de guider le développement de logiciel par les contraintes et le besoin métier
→ Comprendre les termes techniques du Domain-Driven Design et pouvoir converser avec d’autres développeurs sur le sujet
→ Développer les compétences en matière de développement orienté objet - Comprendre et acquérir des outils d’analyse conceptuelle afin de développer des logiciels répondant vraiment aux exigences des clients
→ Décomposer une application large en sous-modules et maintenir l’indépendance entre ces sous-modules pour garder la complexité du logiciel gérable
A l’issue de ce formation, vous serez capable de:
→ Définir ce qu’est le Domain-Driven Design
→ Développer un logiciel en utilisant les patterns tactiques du Domain-Driven Design - D’approfondir les connaissances en matière de Design Logiciel et d’Architecture Logiciel avec les Design Patterns Objet
→ Développer des applications mieux conçues en design Orienté Objet
→ Quels sont les problèmes majeurs dans le développement logiciel ?
→ Définition du Domain-Driven Design
→ Domaines et Sous-Domaines
→ Langage Ubiquitaire
→ Cas d’étude : analyser les sous-domaines
→ Exercices
→ Le Design Logiciel
→ La Programmation Orientée Objet ?
→ Analyse de noms et de verbes
→ Domain Objects
→ Value Objects
→ Domain Services
→ Architecture orientée objet
→ Exercices
→ Le pattern Entity
→ Différences entre Value Object et Entity
→ Le pattern Policy
→ Comment exploiter ces patterns dans notre modélisation
→ Le pattern Repository
→ Exercices
→ Le problème des graphes orienté “données”
→ Invariants métier
→ Aggregate
→ Guider la modélisation des Aggregates
→ Les pièges à éviter
→ Exercices
→ Les 3 lois des Aggregates
→ Les patterns de Transaction
→ Les Domain Events
→ Domain Events et Integration Events
→ Les patterns de Domain Events
→ Exercices
→ La Programmation Événementielle
→ La Cohérence Éventuelle
→ La 4e loi des Aggregates
→ Comment structurer ses Aggregates au regard de la Cohérence Éventuelle
→ Exercices
→ Comment modulariser son application
→ Bounded Contexts
→ Comment intégrer ses Bounded Contexts
→ Communication Synchrone ou Asynchrone ?
→ Evaluation Finale