Si participes en el sector del desenvolupament de software, probablement estaràs d’acord que entendre un negoci és tan o més important que el saber programar bé. Partint d’aquesta premissa, el millor paradigma per a enfocar-se en el negoci i plasmar-lo en el codi és aplicar el model DDD (Domain Driven Design).

Aquest enfocament de desenvolupament de software proposat per Eric Evans posa en el centre al domini del negoci. Però, què és el domini? Bàsicament, representa la informació, la lògica i els processos del negoci. Així com el problema específic que hem de resoldre.

DDD està concebut per a facilitar el desenvolupament d’aplicacions complexes i per a aquells projectes que utilitzen metodologies agile. De la mateixa manera, no servirà per a projectes en els quals s’utilitzen conceptes exclusivament tècnics i amb poca lògica de negoci.

Tot el conjunt d’elements significatius que representen el domini (atributs, funcions i relacions), així com el coneixement que es té sobre aquest, es veuran representats en el model. Aquest serà la base del disseny del software i s’anirà depurant a mesura que s’aprengui més sobre el domini.

Si volem que el desenvolupament de les aplicacions tingui èxit, haurà d’existir un llenguatge comú (Ubiquitous Language) entre els experts en el domini, coneixedors del negoci, el flux i l’operativa a seguir per a resoldre el problema, i els desenvolupadors. S’hauran de tenir clars els conceptes del negoci per a construir les entitats i les relacions entre elles. D’aquesta manera, l’estructura i el llenguatge en el codi del software (noms d’entitats, propietats i funcions) seran un reflex del domini de negoci.

Conèixer en profunditat el domini evitarà errors funcionals i, en cas d’haver d’explicar noves funcionalitats o relacions que s’han d’aplicar durant el projecte, la comunicació entre totes dues parts serà més intel·ligible. També facilitarà el manteniment del model i permetrà concebre un software amb els objectius ben clars.

Com a resultat, obtindrem un codi net, on els comentaris serviran per a aclarir els conceptes i explicar quina és la funcionalitat del bloc. No necessitarem incloure cap diccionari per a identificar les entitats en els comentaris.

Elementos clave

Domain Driven Design es compon dels següents elements:

Entitats:

En les entitats es defineixen tots els models que el negoci necessita per a representar. Les entitats són objectes amb identitat única, que es manté en el temps i els atributs del qual no són la seva principal característica.

Objectes de valor: 

A diferència de les entitats, els objectes de valor no tenen identitat i es defineixen únicament pels valors dels seus atributs.

Context:

El conjunt d’entitats que estan relacionades entre elles i que han de coexistir conjuntament perquè el negoci tingui sentit.

Serveis:

Tota la lògica del negoci viu en aquest bloc. Els serveis no tenen cap dependència amb cap part externa del negoci (per exemple, accés a base de dades).

Repositori:

Els repositoris han de contenir la implementació dels accessos de les dades externes. Implementen les interfícies dels serveis del domini.

La documentació de les aplicacions és important tant per al client com per al desenvolupador. La documentació és un doble factor per a verificar que l’aplicació realitza les operacions i en la seqüència correctament.

Encara que és un procés que requereix de temps d’aprenentatge i gran implicació per part dels equips involucrats en el projecte, Domain Driven Design et permetrà tenir una major visió i enfocament del negoci. Així, s’aconseguirà un software pròxim al client, amb un codi ben organitzat i fàcilment mantenible en el temps.

En Click-IT emprem DDD per a afrontar projectes de desenvolupament complexos. Explica’ns la teva necessitat i t’ajudarem a trobar la millor solució que compleixi els teus objectius.