Domain Driven Design: fondamentaux

Domain Driven Design: fondamentaux

Modélisation & Conception - Domain Driven Design : Initiation aux fondamentaux
3 jour(s)
1800.00 €
Code: DDD
LinkedIn Google Plus Twitter Email

Description

Comprendre le métier et le modéliser est un pré-requis pour concevoir et implémenter avec succès un logiciel.

Cette formation vous apprend les concepts de base du Domain Driven Design et vous les fera pratiquer afin de réussir la modélisation de votre métier et sa traduction en logiciel. Une approche basée sur des scénarios exécutables est utilisée en complément pour l’activité de spécification.

Cette formation aborde les fondamentaux de la modélisation et du DDD et fait pratiquer les participants avec les buildings blocks, permettant une mise en application immédiate.

Les prochaines sessions

Objectifs

Cette formation vous apprendra les principes et les patterns du Domain Driven Design (DDD).

Cette formation répondra aux interrogations suivantes :

  • Comment bien spécifier le besoin et les fonctions pour faciliter la conception du logiciel ?
  • Comment modéliser le métier ?
  • Comment intégrer les règles de gestion dans le modèle ?

​Date de formation:

​Paris: Nous consulter

​Lyon: Nous consulter

​Grenoble: Nous consulter

​Toulouse: Nous consulter

Informations pratiques

Public : Développeur, architecte, analyste, chef de projet

Prérequis : Connaissance en modélisation et conception objet

Pédagogie : 70% de travaux pratiques

Programme

1.1. 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 ?

1.2. 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

1.3. 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

1.4. 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

1.5. 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

1.6. 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

1.7. 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

1.8. 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

    Jérémie GRODZISKI

    Jérémie GRODZISKI est un passionné de technologie et un gourou de la conception et du développement logiciel. Il est spécialisé sur les architectures logicielles avancées (machine learning algorithm, NoSQL, functional languages) et la conception de systèmes complexes. Il a une forte expertise sur la plate-forme Java et est un ardent promoteur des techniques de conception Agile comme le Domain-Driven Design et le Behavior-Driven Development.