Imagine un projet où tout le monde se comprend... ou presque. Dans la vraie vie, c'est rarement le cas.
Quand tu bosses sur un projet immobilier (et je vais vous partager mon vécu), tu entends parler de "prospect", "client", "visiteur", "demandeur", "vacancier", et dans la base de données, tout ce beau monde est... un USER. Même les administrateurs de l'ERP.
Bonjour le chaos ! Parfois le "client" n'est pas la même personne selon la branche de la boite...
Ajoute à ça des mandataires qui confondent "appartement au 5e étage" et "immeuble de 3 étages", si tes labels ou tes variables ne sont pas explicites tu obtiens un cocktail de gloubiboulga (bon pour les plus jeunes, la réf c'est casimir).
Ok, mais on fait quoi alors ?
C'est maintenant que DDD entre en scène, en français on pourrait dire "conception pilotée par le domaine".
C'est une méthodologie de conception logicielle qui met le métier au centre du développement.
Pas tout compris ? pas grave... L'idée, c'est d'avoir un langage commun entre les développeurs et les experts métier, afin que le code reflète réellement les besoins de l'entreprise.
Tu as déjà connu ça en réunion non ? le marketing avec ses termes, la compta avec ses termes, la R&D avec ses termes... une fois j'ai diné à une table ou il n'y avait que des profs... ben même là, j'ai rien compris de ce qu'il disaient.
Pourquoi c'est important pour un CTO et pour les Dév ?
Un CTO doit s'assurer que son équipe parle la même langue que les utilisateurs finaux. Un bon usage du DDD permet de :
Réduire les incompréhensions entre développeurs et experts métier.
Avoir un code plus clair, mieux structuré et plus facile à maintenir.
Éviter les bugs dus à des malentendus sur les concepts métier (ou ne pas avoir une pub du genre "superbe appart au 5ieme sur un immeuble de 3 étages)
Faciliter l'intégration avec d'autres systèmes et plateformes.
Alors, imaginons maintenant le DDD dans les années 80 avec Tonton moustache et Tata moumoute... Mes 2 protagnistes ultra cliché pour illustrer parfois des mises en situations.
Tata moumoute rédige une lettre....
Expéditeur : Mme Ginette L. (alias Tata Moumoute)
Destinataire : Service Client de la société ÉlectroRêve 2000
Objet : Demande de renseignement sur le "SuperMix Deluxe"
Cher Service Client de l'ÉlectroRêve 2000,
Moi, Ginette L., femme au foyer passionnée d’électroménager et fervente utilisatrice de votre SuperMix 3000, je m’adresse à vous avec une requête bien précise.
Mon mari, Robert (qu’on appelle Tonton Moustache au bistrot), passe son temps à boire des bières en regardant le foot, pendant que moi, je m’efforce de cuisiner des plats dignes de Maïté. Or, j’ai entendu parler du SuperMix Deluxe en fabrication, qui pourrait révolutionner ma cuisine et, soyons honnêtes, me laisser plus de temps pour chercher un moyen pour que Robert ressemble un peu plus à Sean Connery.
J'aimerai vous conseiller sur mes besoins pratiques et afin de structurer ma demande avec rigueur et méthode (on n’est pas des bêtes, hein), je vais procéder comme dans le livre qu’utilise le neveu de Robert, un certain "Domain-Driven Design" :
Définition du Domaine :
Mon domaine principal est l’optimisation de la cuisine familiale.
Mon problème métier actuel : trop de temps passé à touiller les sauces pendant que Robert regarde Saint-Étienne perdre. (ouais ok... dans les années 80... c'était qui les plus fort ?)
Contexte Borné :
Je ne m’intéresse qu’à l’électroménager de cuisine.
Tout ce qui concerne la bière et le foot n'est pas pertinent pour mon contexte (même si Robert voudrait un mixeur qui ouvre aussi les bouteilles).
Langage Omniprésent :
Nous allons parler en termes de blender, mixage, puissance moteur et non en "belle mécanique comme la R16" (ce que Robert dirait).
Spécifications Métier :
Le SuperMix Deluxe doit selon moi :
Mixer sans éclabousser (j’ai encore des traces de soupe de l’hiver dernier).
Avoir un moteur puissant (parce que le pot-au-feu, ça ne rigole pas).
Être facile à nettoyer, car franchement, j’ai autre chose à faire.
Interactions et Dépendances :
Si possible, un mixeur qui fait aussi du café, histoire que Robert se réveille avant la mi-temps.
Un silence relatif serait apprécié (sinon, il dit que "ça fait plus de bruit qu’un virage du stade Geoffroy-Guichard"
Ainsi, je vous prie de bien vouloir me fournir les spécifications techniques de votre appareil ainsi qu’un délai de livraison, afin que je puisse anticiper l’intégration du SuperMix Deluxe dans mon domaine domestique.
Dans l’attente d’une réponse rapide, je vous salue bien chaleureusement,
Ginette "Tata Moumoute" L.
Alors... l'analyse DDD du courrier donne quoi !
Domaine : L'électroménager, et plus précisément la cuisine.
Contexte Borné : On reste sur l’amélioration des tâches ménagères, sans interagir avec le loisir de Robert.
Langage Omniprésent : On parle mixage, puissance moteur, sans digressions sur le foot ou la bière.
Spécifications Métier Claires : Ce que doit faire le SuperMix Deluxe et pourquoi.
Dépendances et Contraintes : Compatibilité avec l’environnement domestique et les exigences de Robert.
Mais que donnera le stockage des données sur l'Atari 2600 de la secrétaire :
categoryProduct = electroménager
categoryProductInterestCustomer = cuisine
requestPriority = haute (parce que Tata Moumoute est pressée)
senderName = Ginette_L
recipientDepartment = Service_Client
requestStatus = En_Cours_De_Traitement
Grâce à son ordinateur révolutionnaire, la secrétaire peut ainsi classer le courrier avec un truc tout nouveau... une base de données. Waoooooo !