Question

Quelles sont les différences et les similitudes entre les langages spécifiques à un domaine (DSL) et la conception pilotée par le domaine (DDD)?

Était-ce utile?

La solution

La conception gérée par le domaine (DDD) est une façon de penser et de communiquer sur les problèmes et leurs solutions.

Le langage DSL (Domain Specific Language) est une manière d’écrire du code.

Ils sont similaires car ils commencent tous les deux par le mot "domaine". C'est ça, je suppose. : -)

Autres conseils

La conception axée sur le domaine met l'accent sur le rôle du domaine problématique lors de la création du vocabulaire, des concepts et du modèle objet fondamentaux du système en cours de conception.

Un langage spécifique à un domaine est une notation pour spécifier ou implémenter des parties spécifiques du système, orientée vers les besoins du praticien de ce domaine (c'est-à-dire, minimisant les aspects "programmeurs" de la plupart des langages de programmation ou de spécification).

Je dirais qu'ils sont en quelque sorte liés et pas seulement par le mot "domaine". Une fois que vous avez une bonne conception (axée sur les domaines), cela vous aidera sûrement à créer un DSL solide.

"DDD ne nécessite pas spécifiquement l'utilisation d'un DSL, bien qu'il puisse être utilisé pour aider à définir un DSL." - Wikipedia

Je suppose que les deux ont pour objectif principal de réduire le bruit dans la programmation, DDD agit sur le bruit sémantique et les DSL dans le bruit syntaxique.

Cela peut aider à comprendre mon opinion:

http://fragmental.tw/2009/03/12/expessive -design-slides /

http://fragmental.tw/2008 / 04/20 / jeux de langues et jeux vidéo spécifiques au domaine /

Un élément de DDD peut être considéré comme la capacité à développer des langages ubiquitaires pour dialoguer avec les parties prenantes sur le domaine. Pour le sous-ensemble de ces UL à la fois non ambiguë et potentiellement exécutable, vous pouvez choisir de les implémenter à l'aide d'un DSL interne ou externe.

Voici une vidéo de moi en discutant sur le site DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

Meilleurs voeux, Peter

Wikipedia a une définition assez claire de DSL :

  

Le terme langue spécifique à un domaine   (DSL) est devenu populaire récemment   années en développement logiciel pour   indiquer un langage de programmation ou   langage de spécification dédié à un   domaine de problème particulier, un   représentation de problème particulier   technique, et / ou un particulier   technique de solution.

Ceci peut être implémenté comme un ensemble de classes suivant un modèle cohérent, une magie de modèle C ++ sophistiquée ou un compilateur / analyseur qui interprète la saisie de texte libre pour faire ce que vous voulez.

Je pense qu’ils sont liés (comme le dit Christophe), mais deux aspects totalement différents. Je ne voudrais même pas rejeter la déclaration de Jop.

Pour des informations très bien écrites sur les DSL, reportez-vous à la série de pages de de Martin Fowler (travaux en cours). ), vous pouvez commencer par exemple , ou le définition . Une autre bonne lecture est son QandA .

DDD est basé sur le modèle de domaine et généralement au moins un niveau d’abstraction supérieur à DSL. Les deux peuvent exister l'un sans l'autre, et comme Christophe l'a déjà dit, ils peuvent tous deux être utilisés dans le même projet.

Les différences, l’une est une approche de la construction de systèmes utilisant un langage DSL (Domain Specific Language) au lieu d’un langage à usage général et l’autre est une approche architecturale (DDD) de la conception et de la construction de systèmes.

La similitude est qu'ils se concentrent tous les deux sur un domaine spécifique.

Wikipedia ( https://en.wikipedia.org/wiki/Domain-driven_design) a une bonne réponse:

  

DDD n’exige pas spécifiquement l’utilisation d’un DSL, bien qu’il puisse être   utilisé pour aider à définir un DSL et prendre en charge des méthodes telles que spécifiques à un domaine   multimodelage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top