Domanda

Quali sono le differenze e le somiglianze tra Domain Specific Languages ??(DSL) e Domain Driven Design (DDD)?

È stato utile?

Soluzione

Domain Driven Design (DDD) è un modo di pensare e comunicare sui problemi e le sue soluzioni.

Domain Specific Language (DSL) è un modo di scrivere codice.

Sono simili perché entrambi iniziano con la parola " dominio " ;. Ecco, immagino. : -)

Altri suggerimenti

Il Domain-Driven Design enfatizza il ruolo del dominio problematico quando si creano il vocabolario, i concetti e il modello di oggetti fondamentali per il sistema che si sta progettando.

Un linguaggio specifico di dominio è una notazione per specificare o implementare parti specifiche del sistema, orientato alle esigenze del professionista in quel dominio (cioè minimizzare gli aspetti "programmatori" della maggior parte dei linguaggi di programmazione o di specifica).

Direi che sono in qualche modo correlati e non solo dalla parola "dominio". Una volta che hai una buona progettazione (guidata dal dominio), ti aiuterà sicuramente a creare una solida DSL.

" DDD non richiede specificamente l'uso di un DSL, sebbene possa essere usato per aiutare a definire un DSL. " - Wikipedia

Suppongo che entrambi abbiano come obiettivo principale la riduzione del rumore in programmazione, il DDD agisce sul rumore semantico e le DSL nel rumore sintattico.

Questi possono aiutare a capire la mia opinione:

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

http://fragmental.tw/2008 / 04/20 / specifico dominio-lingue-e-video-giochi /

Un elemento di DDD può essere visto come la capacità di sviluppare linguaggi ubiquitari per parlare con gli stakeholder del dominio. Per il sottoinsieme di quegli UL che sono sia inequivocabili che potenzialmente eseguibili, è possibile scegliere di implementarli utilizzando un DSL interno o esterno.

Ecco un mio video che ne discute sul sito DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

I migliori auguri, Peter

Wikipedia ha una definizione abbastanza chiara per DSL :

  

Il termine linguaggio specifico del dominio   (DSL) è diventato popolare negli ultimi tempi   anni di sviluppo software a   indicare un linguaggio di programmazione o   linguaggio di specifica dedicato a a   dominio del problema particolare, a   rappresentazione di problemi particolari   tecnica e / o un particolare   tecnica di soluzione.

Questo può essere implementato come un insieme di classi che seguono un modello coerente, un po 'di fantasia in template C ++ o un compilatore / parser che interpreta l'immissione di testo libero per fare ciò che vuoi.

Penso che siano in qualche modo collegati (come diceva Christophe), ma due aspetti totalmente diversi. Non respingerei nemmeno la dichiarazione di Jop.

Per informazioni scritte molto bene sui DSL, consultare L'insieme di pagine di Martin Fowler sui DSL (lavori in corso ), puoi iniziare con l ' esempio o definizione . Un'altra buona lettura è la sua QandA .

DDD si basa sul modello di dominio e di solito almeno un livello di astrazione superiore al DSL. Entrambi possono esistere senza l'altro e, come già detto da Christophe, possono entrambi essere utilizzati nello stesso progetto.

Le differenze, una è un approccio alla costruzione di sistemi che utilizza un linguaggio DSL (Domain Specific Language) anziché un linguaggio di uso generale e l'altro è un approccio architettonico (DDD) alla progettazione e alla costruzione di sistemi.

La somiglianza è che entrambi si concentrano sul dominio specifico.

Wikipedia ( https://en.wikipedia.org/wiki/Domain-driven_design) ha una buona risposta:

  

DDD non richiede specificamente l'uso di un DSL, anche se potrebbe essere   utilizzato per aiutare a definire un DSL e supportare metodi come specifici del dominio   multimodeling.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top