La distillation est un procédé de séparation des constituants d’un mélange afin d’en extraire les différents composés et notamment celui qui a le plus de valeur : le « coeur » du distillat.
Le domaine représente la connaissance du sujet considéré, le métier de l’entreprise, et dans lequel sont engagés les employés de l’entreprise. ­­­La distillation est une démarche issue du Domain Driven Design permettant de classifier le domaine d’une entreprise en trois catégories et sans alcool ! Cette analogie physique est intéressante car elle met l’accent sur l’obtention du constituant qui a le plus de valeur pour l’entreprise : le « coeur du domaine ».

Qu’est ce que le coeur du domaine ?

Le coeur du domaine est la partie du domaine qui est fortement associée à la stratégie de l’entreprise.

Définition de la stratégie

Ma définition de la stratégie d’entreprise est la suivante :

La stratégie décrit les objectifs en fonction de l’environnement et des ressources disponibles, puis de l’allocation de ces ressources afin de créer de la valeur pour les clients tout en créant des profits pour l’entreprise et ses employés.

Quelques commentaires sur cette définition :

  • Une stratégie bien définie décrit donc les priorités sur lesquelles doivent se concentrer l’énergie et le temps des employés
  • Les profits font bien sûr penser aux profits financiers mais également à ce qui profite aux employés en terme d’épanouissement et d’apprentissage sur leurs métiers, de même pour les clients : « Don’t be evil » qu’ils disent  🙂
  • La stratégie est dynamique, elle change ou doit changer dans le temps car l’environnement change et avec lui les objectifs

Qu’est ce que le domaine support ?

Un domaine support est une partie du domaine qui supporte indirectement le coeur du domaine sans en faire partie.

C’est typiquement quelque chose dont vous avez besoin mais que personne n’est prêt à payer car sa valeur ajoutée prise isolément est faible. Exemple : la tenue de compte est indispensable dans de nombreuses activités bancaires mais personne n’est prêt à payer pour cela.

Qu’est ce que le domaine générique ?

Un domaine générique est un domaine connu de manière universelle sans spécialisation particulière dans le coeur du domaine.

Exemples classiques : la comptabilité, les ressources humaines, la gestion de projet. Ces domaines sont connus de manière générale avec parfois des sous-spécialités. D’un point de vue technique ce peut être par exemple un outil d’optimisation d’un parcours de graphe (beaucoup de problèmes se réduisent à un graphe…). Les options à considérer sont bien sûr de l’open-source, du progiciel, un développement externalisé et bien sûr en dernier lieu un développement interne. Les questions pertinentes sont dans ce cas : est ce que cela vaut le coup que j’écrive ce logiciel ? Pourquoi ne pas l’acheter sur étagère ? Pourquoi ne pas l’externaliser ?

Exemples

Le ranking chez Amazon et eBay

Amazon et eBay ont tous deux des fonctions de ranking intégrées à leur site : les fameuses étoiles. Pour amazon, le ranking est associé au produit (livres, CD, etc.). Pour ebay ce ranking est associé au vendeur.  Dans les deux cas le domaine est quasiment le même : une note et un commentaire, un classement de ces notes et une moyenne.

Amazon et eBay ont néanmoins des business models différents. Dans le cas d’amazon, celui ci consiste à vendre des produits neufs éventuellement sous-traités à des vendeurs professionels autres qu’Amazon. Dans le cas d’eBay, le business model fondamental est la vente entre particuliers et dans ce domaine un élément clé, stratégique, est la confiance entre vendeurs et acheteurs. La fonction de ranking revêt donc un intérêt stratégique pour eBay car il fait partie de sa stratégie pour établir une confiance maximale entre ses clients, non pour Amazon. Cette fonction de ranking est donc du core domain pour eBay et du supporting domain pour Amazon car dans ce cas elle ne participe pas directement à la stratégie d’Amazon mais est une fonction support.

Pour rester dans le même secteur d’activité, le domaine logistique d’Amazon est probablement du Core Domain car la capacité à livrer rapidement et efficacement est un avantage stratégique.

Le monde bancaire

Dans le monde bancaire, les fonctions liées au compte bancaire (débit, crédit, calcul du solde) font partie du domaine support; c’est une fonction indispensable mais pour laquelle personne n’est prêt à payer. La crise des subprimes a remis dans la stratégie la gestion des risques, le Risk Management est donc devenu momentanément le coeur du domaine.

La gestion des fuseaux horaires

Eric Evans cite dans son ouvrage, lors d’un projet pour une compagnie d’assurance, l’utilisation d’un composant de gestion des fuseaux horaires (afin de connaitre le moment exact où a eu lieu un sinistre, les états-unis ayant plusieurs fuseaux horaires). Les développeurs ont développé ce composant de manière très complète avec un ensemble de fonctionnalités, ce qui est typiquement le genre de problèmes bien définis qu’aiment les ingénieurs. Pour au final, une utilisation très réduite car aucunes conversions n’étaient réalisées, juste un stockage. Avec comme principal effet négatif de négliger le coeur du domaine à savoir l’assurance, alors que la gestion des fuseaux horaires est un domaine générique.

Pourquoi faire la distinction entre les différents types de domaine ?

Lors de la conception d’un système de taille importante, de nombreux composants seront réalisés et mis en oeuvre, tous ces composant ont bien sûr leurs intérêts et participent au succès de l’ensemble du système. Néanmoins il est très facile de perdre de vue les fonctions essentielles du système. D’autre part, la dure réalité est que toutes les parties du système ne pourront pas bénéficier d’une conception de qualité car les ressources sont finies ! Il est essentiel de se concentrer sur le coeur du domaine, donc en pratique d’affecter les meilleurs membres de l’équipe, d’ailleurs pourquoi les meilleurs sont ils toujours affectés aux parties très techniques du projet ? Entre deux refactorings, celui qui améliorera le plus le coeur du domaine sera toujours à privilégier. De par ces éléments, il est très rare que le coeur du domaine puisse être implémenté par un logiciel sur étagère. Enfin, il est préférable d’éviter une expertise externe sur le coeur du domaine car cette connaissance se construit dans la durée.

Et vous quel est votre coeur du domaine ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Voir plus
scroll to top