En navigant sur ce site, vous acceptez l’utilisation de cookies ou autres traceurs vous permettant une utilisation optimale du site (partages sur les réseaux sociaux, statistiques de visite, etc.)
BESTNEW

Domain-Driven Design : de l’espace du problème à l’espace de la solution

En partenariat avec Bruno Boucard et Thomas Pierrain

Description

Dans la plupart des projets, nous sautons très souvent trop tôt sur l’espace de la solution (choix de frameworks, stacks techniques, data stores) avant même d’avoir bien compris ce qu’il fallait faire. Le logiciel n’est-il pourtant pas là pour nous aider à résoudre efficacement des problèmes métiers à la base ?

Pour celles et ceux qui auraient déjà exploré certaines techniques pour découvrir le métier (comme l’Event Storming par exemple), la question se pose ensuite très vite de comment on passe du post-it au code.
Par quoi commencer ? Comment articuler ce passage délicat entre l’exploration et le code qui laisse bien des gens sur le tapis ?

Durant cette formation co-animée par Bruno Boucard et Thomas Pierrain , nous verrons ensemble à la fois les bases et tout le cycle du développement logiciel à la Domain Driven Design (DDD). Vous utiliserez pour ce faire des techniques d’exploration et de distillation du domaine bien connues du DDD que nous vous présenterons en détail : Event Storming, Context Mapping, Example Mapping (issue du BDD) ou la reformulation, si chère à Éric Evans (le créateur du DDD).

Le deuxième jour, vous vivrez cette transition vers le code tout en appliquant et en découvrant au fil de l’eau un ensemble de concepts et de techniques du DDD qui nous serviront à travers la résolution de plusieurs modules/labs. Nous découvrirons en passant la forme de Test Driven Development vers laquelle nous avons convergé après 15 ans de pratiques du TDD : l’Outside-In et sa double boucle.

Enfin, nous protégerons ensemble notre code métier en l’isolant de la partie technique grâce à la mise en place d’une Architecture Hexagonale.

Objectifs pédagogiques

  • Organiser un Event Storming pour modéliser les différents domaines métier
  • Qualifier les relations entre les domaines avec le Context Mapping
  • Creuser les règles métier avec un Example Mapping
  • Modéliser les comportements et les relations d'entités avec Responsability-Driven Design
  • Appliquer Test-Driven Development en mode Outside-in pour définir les coquilles des apis publiques
  • Utiliser les premiers patterns DDD tactiques avec les premiers tests comportementaux
  • Modéliser l'agrégat en revenant sur le Whirlpool Modèle créé par Eric Evans
  • Préférer l'utilisation des Value Objects avec la fermeture sur opération
  • Protéger son domaine métier avec l'architecture Hexagonale

Public cible

  • Expert Métier
  • Développeur
  • Architecte

Pré-requis

  • Pratique de la programmation orientée objet.
  • Venir équipé d'un ordinateur portable pour réaliser des exercices de code en C# ou en Java.

Méthode pédagogique

La formation privilégie les échanges et la collaboration de tous les participants.
Les notions seront découvertes à travers de nombreux ateliers interactifs animés en mode « training from the back of the room » (i.e. c’est en faisant qu’on apprend et retient mieux les choses), combinaison de présentations, de livecoding, de discussions, d’ateliers et d’exercices pratiques.

Les supports sont en anglais et l’animation en français.

PROFILS DES INTERVENANTS

Toutes nos formations sont animées par des consultants-formateurs expérimentés et reconnus par leurs pairs.

MODALITÉS D'ÉVALUATION ET FORMALISATION À L'ISSUE DE LA FORMATION

L'évaluation des acquis se fait tout au long de la session au travers des ateliers et des mises en pratique. Une évaluation à chaud sur la satisfaction des stagiaires est réalisée systématiquement en fin de session et une attestation de formation est délivrée aux participants mentionnant les objectifs de la formation, la nature, le programme et la durée de l'action de formation ainsi que la formalisation des acquis.

Programme :

Jour 1 - Espace du problème

  • Introduction
    • Tour de table et recueil des attentes des participants
  • Domain-Driven Design a brief tour
    • La genèse du DDD selon Éric Evans
    • Le DDD en 2020 (vous avez dit micro-services ?)
  • Event Storming – essential workshop
    • Motivations métier pour notre cas pratique
    • Découverte du workflow métier à travers les Domain Events
    • Émergence des premiers contextes (Bounded Contexts + Context Map)
  • Example Mapping – essential workshop
    • A la découverte de nos invariants métiers
    • La puissance expressive et l’efficacité de l’Example Mapping
    • Utilité d’un exemple et challenges associés
  • Modeling
    • Challenge collaboratif pour trouver le bon modèle
    • Confrontation des modèles vis-à-vis notre problème métier
  • Bilan de la première journée
    • Depuis la motivation métier jusqu’aux modèles envisagés
    • Questions/Réponses et bilan des attentes de chacun pour cette première journée

Jour 2 - Espace de la solution

  • Introduction
    • Warm-up - Questions/Réponses
    • Rappel sur la modélisation envisagée la veille
  • Test-first coding flow (from problem space to solution space)
    • Outside-In TDD à la rescousse. Pourquoi et Comment ?
  • Patterns tactiques du DDD en renfort
    • Le style fonctionnel : Value Object/Types, Closure of operations
    • Zoom sur le cœur du problème (Agrégats)
  • Architecture et patterns stratégiques
    • Présentation et motivation
    • Implémentation d’une architecture hexagonale sur notre base de code existante
    • Anti-corruption layer pattern
  • Conclusion
    • Questions/Réponses et partage sur la formation
    • Clôture de la session

Pour aller plus loin :

Type : Stage pratique en présentiel
Code formation : DDD02
Durée : 2 jours (14 heures)

Sessions inter-entreprises :

Tarif & dates intra-entreprise :
Devis sur demande
Nous Contacter