Tesi su Domain Driven Design e CQRS

Il 13 febbraio 2014 ho discusso una tesi dal titolo “Gestire la complessità del software con Domain Driven Design e CQRS”, presso l’Università degli Studi di Urbino.

Questo lavoro non è un’introduzione a DDD e CQRS, dato che esistono già molte risorse adeguate a riguardo. Piuttosto, si tratta di un excursus attraverso alcuni aspetti su cui ho voluto porre particolare enfasi, perciò il target più indicato è chi ha avuto già un’infarinatura su DDD e CQRS e vuole approfondirli.

Il materiale riportato è frutto di esperienze dirette, di partecipazioni a corsi, workshop e conferenze, ed in molti casi di letture e confronti attraverso canali quali forum, blog e twitter.
In particolare, per quanto riguarda corsi e workshop, tra i più importanti a cui ho partecipato ci sono il “CQRS Advanced Workshop” di Greg Young, il campo scuola su DDD ed il workshop su Event Storming tenuti da Alberto Brandolini, il corso “Command Query Responsibility Segregation + EventSourcing” tenuto da Andrea Balducci e Alessandro Giorgetti, il DDD-Day (2011) ed il CQRS-Retreat (2012) che abbiamo organizzato in Italia, oltre ad una serie di altre conferenze ed incontri informali organizzati in seno a diverse community (DotNetMarche, XPUG Marche, Italian Agile Movement, UgiDotNet, Ugi Alt.Net, …).

Nel caso di DDD, molte delle argomentazioni ho avuto la possibilità di sperimentarle durante l’attività lavorativa, avendo a disposizione dei riscontri in prima persona. Invece, nel caso di CQRS non ho purtroppo avuto modo di fare altrettanta pratica diretta. Vista però l’importanza di esperienza con sistemi andati effettivamente in produzione, ho voluto cercare qualcosa di analogo, individuandolo nella possibilità offertami da due persone, Andrea Balducci e Alessandro Giorgetti, di realizzare dei case study su dei progetti che hanno realizzato nell’ultimo paio di anni. La disponibilità di Andrea ed Alessandro nel fornirmi dettagli tecnici sulle loro implementazioni, nonché sul farmi comprendere meglio i concetti che stanno dietro ad esse, rendono questi case study una delle parti più interessanti della tesi.

Dalla community, per la community

Gran parte di ciò che ho riportato nella tesi è frutto di cose apprese grazie alla community DDD/CQRS. Ho perciò deciso di dare il mio piccolo contributo mettendo a disposizione gratuitamente questa tesi, sperando possa tornare utile a qualcuno, come è stato utile per me “percorrere” il percorso che mi ha portato alla sua scrittura.

Se poi ritieni interessante questo lavoro e vuoi proprio sdebitarti in qualche modo :) ti chiedo magari di dare un piccolo contributo non tanto a me, quanto direttamente alla community degli sviluppatori, così che questo ciclo possa continuare ad alimentarsi.
In particolare, abbiamo aperto una campagna per raccogliere fondi per organizzare workshop con DevMarche, una delle community a cui partecipo e che racchiude degli user group che nel tempo hanno organizzato diversi eventi su DDD e CQRS, come DotNetMarche e XPUG Marche. Perciò, con una piccola donazione potresti contribuire direttamente alla realizzazione di altri interessanti iniziative, magari proprio su questi temi!