#2 - DDD Stratégique : Le plan d'attaque

#2 - DDD Stratégique : Le plan d'attaque
Photo by GeoJango Maps / Unsplash

Le DDD regroupe tellement de recettes que c'est assez compliqué d'identifier un bout par lequel débuter, lorsqu'on veut s'y essayer.

Classiquement le Domain Driven Design propose deux niveaux d'action :la stratégie et la tactique. La stratégie pour la vue de haut et la tactique pour les détails, en résumé.

Phase Stratégique : L'objectif est de cerner le problème auquel on s'attaque. Donc de permettre aux développeurs de comprendre les enjeux, les entités, les problématiques... bref l'univers auquel on s'adresse. Phase assez cruciale, mais aussi un peu intimidante car il est très rare que l'on comprenne intégralement et rapidement les enjeux de la digitalisation de processus complexes. Cette phase est classiquement supportée par des méthodes et des ateliers qui visent a discuter avec les experts du domaine pour s'approprier une partie de leur savoir.

Phase Tactique: Ici, les devs sont davantage en zone de confort, car on parle technique. Les patterns tactiques regroupent un ensemble de bonne pratiques de code, pour réaliser notre implémentation DDD. Ces bonnes pratiques visent à assurer que la modélisation stratégique du problème faite préalablement ne va pas se retrouver noyée au milieu d'enjeux purement techniques et exogènes à notre problématique métier.

Et il y a évidemment une boucle de rétro-action entre ces phases. Nous allons définir une première approche stratégique, puis en faire une implémentation. C'est lors de leur de l'implémentation que nous allons nous confronter aux limites de pertinence de notre première approche stratégique.

Donc nous allons potentiellement redécouper, et réagencer les domaines. et modifier le code en fonction. On va essayer de ne pas faire ça trop trop souvent histoire de ne pas cramer tout le temps en refacto mais bon vous voyez l'idée.

Le plus naturel pour notre gestionnaire de ligue de football fantastique est de commencer par l'aspect stratégique. En gros essayer d'avoir une vue d'avion de notre sujet. Essayer de capturer la problématique d'ensemble.

Cette partie est détaillée dans l'article suivant, en commencant par identifier les acteurs de notre domaine.

Ensuite nous verrons quels sont les moyens d'implémentation que nous avons choisi pour traiter nos problématiques.
La route est encore longue avant d'avoir une appli qui tourne.