Domain Driven Design

La modélisation en Domain Driven Design

Le langage omniprésent

Pour surmonter la différence de style de communication, quand nous construisons le modèle, nous devons nous parler pour échanger des idées sur le modèle, sur les éléments impliqués dans le modèle, la manière dont nous les relions, sur ce qui est pertinent ou non. La communication à ce niveau est primordiale pour la réussite du projet.

Les développeurs ont la tête pleine de classes, de méthodes, d’algorithmes, de patterns, et ont tendance à toujours vouloir faire correspondre un concept de la vie réelle à un artefact de programmation. Mais les experts du domaine ne connaissent en général rien de tout cela. C'est pourquoi, dès la naissance du projet, il est important d'adopter un langage qui sera compris à la fois par les clients, les analystes logiciel ainsi que les développeurs

Les couches

Domain Driven Design prône la séparation des rôles dans la modélisation de couches conceptuelles. Lorsqu’on crée une application logicielle, une grande part de l’application n’est pas reliée directement au domaine, mais fait partie de l’infrastructure ou sert le logiciel luimême. Il peut arriver, et c’est justifié, que la partie domaine d’une application soit assez réduite comparée au reste, puisqu’une application typique contient beaucoup de code lié à l’accès à la base de données, à l’accès aux fichiers ou au réseau, aux interfaces utilisateur, etc.

Il arrive que quand du code relatif au domaine se mélange à d'autres couches conceptuelles, alors sa maintenance devient compliquée. Des changements superficiels dans l’IHM peuvent en réalité modifier la logique métier. Il se peut que changer une règle métier exige une fouille méticuleuse dans code de l’IHM, dans code de la base de données, ou d’autres éléments du programme. Le Domain Driven Design propose 4 couches conceptuelles :

L'interface utilisateur est responsable de la présentation de l’information à l’utilisateur et de l’interprétation des commandes de l’utilisateur.

La couche applicative est une couche fine qui coordonne l’activité de l’application. Elle ne contient pas de logique métier. Elle ne recèle pas l’état des objets métier, mais elle peut détenir l’état de la progression d’une tâche applicative.

La couche du domaine contient les informations sur le domaine. C’est le cœur du logiciel métier. L’état des objets métier est renfermé ici. La persistance des objets métier et peut-être aussi leur état est délégué à la couche infrastructure.

La couche infrastructure agit comme une bibliothèque de soutien pour toutes les autres couches. Elle fournit la communication entre les couches, implémente la persistance des objets métier, contient les bibliothèques auxiliaires de la couche d’interface utilisateur, etc.

Le modèle du domaine