Gli sperti di dominio (i clienti) conoscono i termini del loro campo di conoscenza, ma non conoscono i termini propri dello sviluppo software.
Concordemente gli sviluppatori che utilizzano termini di propri di sviluppo, possono descrivere bene un sistema in termini funzionali ma privo di significato per un esperto di dominio.
Nella Domain Driven Design l'uso di un linguaggio comune tra gli sviluppatori, architetti, analisti ed esperti di dominio è essenziale alla riuscita del progetto.
Il mancato uso di un linguaggio comune rischia di confondere il visione del modello analitico, e della sua implementazione. Peggio ancora può indirizzare verso un refactoring sbagliato.
E' errato altresì pensare che questo linguaggio possa essere definito in modo dettagliato fin dall'inizio del progetto.
Risulta essere invece il risultato di arricchimenti del modello analitico.
Ad ogni cambiamento del modello analitico viene fatto corrispondere un cambiamento nel domain model.
Questo linguaggio sarà utilizzato oltre che tra le varie figure, anche nei diagrammi, nella documentazione e non per ultimo nel codice.
Il modello analitico è quindi la spina dorsale dell'ubiquitous language (cit. "Use the model as the backbone of a language").
Qual'è l'apporto di un developer a questo linguaggio comune?
Come dicevo in questo post...gli sviluppatori hanno sempre a che fare con i domini applicativi dei clienti e riescono talvolta a individuare e risolvere ambiguità e incoerenze difficilmente riconoscibili anche dai clienti stessi.