Présentation de la Formation

Un logiciel doit être au service d’un domaine métier. L’objectif du Domain Driven Design (DDD) est de créer de meilleurs logiciels plus facilement en se concentrant sur le domaine métier plutôt que la technologie.

Un logiciel est adapté à son domaine lorsque sa capacité à traiter des problèmes liés au domaine est bonne. Le DDD est une approche et des techniques de conception pour gérer la complexité du domaine et aligner le logiciel sur les concepts métiers qu'il manipule.

Cette formation vous apprend les fondamentaux du DDD et sa mise en oeuvre pratique et concrète dans vos logiciels.

Objectifs

  • Maîtriser l’approche Domain-Driven Design (DDD) : pourquoi ? bénéfices ? principes clés.
  • Étudier et mettre en oeuvre les building blocks du DDD
  • Étudier et mettre en oeuvre les principes de conception : supple design et strategic design
  • Étudier les architectures permettant de mettre en oeuvre une approche DDD
  • Échanger sur les aspects concrets et pratiques du DDD avec des retours d’expérience

Durée

3 jours

Pré-requis

  • Connaissance des concepts et d'un langage objet (Java, C#)
  • Expérience du développement logiciel en entreprise

Public

  • Architectes
  • Développeurs senior ou junior
  • Team Leader
  • Chef de Projets

Contenu de la formation

Programme

La formation utilise un système de e-commerce comme fil rouge pour les cas pratiques. Les participants peuvent également soumettre des cas liés à leur domaine s'ils le souhaitent.

La structure de code et les solutions sont fournis sur la plateforme Java, l'utilisation d'une autre plateforme (.Net, Ruby, Python, Clojure, ...) est cependant possible.

Introduction à l'approche DDD

5%
  • Origine, définitions et bénéfices
  • Principes clés de l’approche
  • Qu'est ce que l'activité de conception ?

AVANT DE CONCEVOIR : Pourquoi ce logiciel ?

5%
  • Définir la vision du projet
  • Pourquoi le logiciel est développé ?
  • Présentation des techniques :
    • Feature Injection
    • Impact Mapping
    • User Story Mapping
    • Mental Models

AVANT DE CONCEVOIR : Explorer le domaine et Spécifier le comportement du logiciel

15%
  • Des scénarios avec des exemples pour explorer le domaine
  • Event Storming: Les événement dans le temps pour explorer le domaine
  • Exprimer le comportement attendu avec des exemples au format BDD (Behavior-Driven Development : Given/When/Then)
  • Organisation des scénarios : dépendances, mutualisation, gestion des données
  • Comment exprimer les règles métiers dans les scénarios ?
  • Cas Pratique

Fondamentaux de Modélisation et Gestion de la Complexité

5%
  • Qu'est ce qu'un modèle ? papier/crayon ou outil de modélisation ?
  • Qu'est ce que la complexité ? outils pour la gérer
  • Aspects pratiques : communication, intentions, forme (graphique, textuel), gestion collective du modèle

Les Building Blocks du DDD

30%
  • L'ubiquitous language
  • Building Blocks du DDD :
    • La gestion d'état avec les Value Object et les Entity
    • L'accès aux Entity avec les Repositories
    • Factory
    • Service
    • Module
    • Aggregate
    • Domain Event
  • Exercices pratiques de mise en œuvre des Entity, Value objects et Repository

DDD Supple Design pour un logiciel évolutif et testable

20%
  • La gestion des dépendances
  • La gestion d'états
  • Séparation des responsabilités
  • Encapsulation et Interface
  • Présentation du Paradigme Fonctionnel : Lazyness, Immutabilité, Fonctions Pures
  • DDD Supple Design
    • Intention-revealing interface
    • Standalone classes
    • Side-Effect free function
    • Assertions
    • Conceptual contours
    • Closure on operations

Architectures pour une approche DDD

10%
  • Modulariser le domaine
  • Architecture Hexagonale : inversion de dépendances, le Domaine au coeur de l'architecture, utilisation des frameworks d'injection de dépendances avec le DDD (Spring, etc.)
  • Architecture Événementielle : CQRS, Event Sourcing, lien avec le DDD
  • Architecture Microservice avec le DDD : REST et SOA, apport du DDD
  • Gestion de la persistance avec le DDD : aspects pratiques

DDD STRATEGIC DESIGN : INTéGRER LE LOGICIEL DANS son écosystème, INTéGRER LES éQUIPES ENTRE-ELLES

10%
  • Notion de Bounded Context
  • Comment intégrer différents modèles ?
  • Context Map
  • Relations entre systèmes et équipes :
    • Shared Kernel
    • Anticorruption Layer
    • Conformist
    • Customer/Supplier
    • Separate Ways
    • Open Host
    • Published Language
  • Intégrer des systèmes Legacy : stratégie d’intégration, stratégie de refactoring

Dates

Date Lieu Inscription
23 au 25 janvier 2023 Paris* S'inscrire
17 au 19 avril 2023 Paris* S'inscrire
*Le lieu exact vous est communiqué à l'inscription

Tarif

Inter-Entreprises


1 790
/ personne
Formation de 3 jours

  • Programme commun
  • Sur Paris
  • Session tous les trois mois
  • Fil rouge sur un cas partagé
  • Support téléphonique à la mise en oeuvre

Intra-Entreprises


Sur Devis
Durée adaptée

  • Programme sur-mesure
  • Dans vos locaux
  • Dates Flexibles
  • Fil rouge dans votre domaine
  • Support téléphonique à la mise en oeuvre


Formateur

Jérémie Grodziski

Jérémie Grodziski

Architecte, Lead Developer, Expert Domain-Driven Design