SOFTWAREONTWIKKELING
13/05/2024 • Peter Claassen

Uitgebreid verslag van de DDD Europe Foundations Day (2023)

In June 2023, four ACA colleagues participated in the Foundations Day of the multi-day event of Domain-Driven Design Europe (DDD Europe). At the Meervaart theater in Amsterdam, they attended various talks offering a practical perspective on DDD concepts. The complete report is provided below.

Na een verkwikkende koffie voor de vroege vogels en het welkomstwoord door de organisatie, volgde er een vol programma van acht talks met live coding. 

Deze blogpost geeft een beknopt overzicht van alle presentaties, gevolgd door een quotering op verschillende gebieden: inspiratie van de spreker, link naar Domain-Driven Design (DDD), gebruikte analysetechnieken en technische bruikbaarheid van de informatie.

Reviews

Baking Domain Concepts into Code

Deze sessie werd gegeven door Paul Rayner, een Australiër wonend in de Verenigde Staten. Hij bracht een gestructureerde en interessante sessie met frisse inzichten in Domain-Driven Design en coding, met een zeer sterke voorkeur voor Test-Driven Design. Hij zoomde in op het concept van uitgebreide garantie en met behulp van Event Storming werd het stap voor stap live gedemonstreerd in Ruby code.

Zijn verhaal werd gaandeweg complexer en met een Test-Driven aanpak beantwoordde hij de vragen die door de Event Storming naar boven waren gekomen. Zijn boodschap op het einde was duidelijk: “Wees niet bang om code te refactoren als je vanuit een fundamentele Test-Driven methode vertrekt!”

Zelfs voor iemand met een beperkte kennis van DDD, waren de stappen in zijn redenering tijdens de live coding goed te volgen. Hij staat niet gepland als spreker op de komende editie van DDD Europe, maar als je ooit de kans krijgt om een sessie van Paul Rayner te volgen, hoef je niet te twijfelen: het is een aanrader.

🎥 Link naar video

Scorekaart (1-5):

  • Inspiratie: 3
  • Link naar DDD: 5
  • Analyse technieken: 4
  • Technisch behulpzaam: 4

Model Mitosis: A Dynamic Pattern to Deal with Model Tension

Deze entertainende sessie werd gebracht door Julien Topçu en Josian Chevalier. Ze brachten een sessie in de context van de Mandalorian uit de Star Wars saga en demonstreerden een aantal typische valkuilen in een ontwikkelproces. Dit was wel een volledig gescripte sessie waar de live coding zogezegd door een AI gedaan werd onder de naam Chat3PO. Ze gebruikten wel een aantal interessante concepten zoals een Shared Kernel en een Anti Corruption Layer. Omdat het een gescripte sessie was, werd er weinig tijd verloren aan het schrijven van code. Zo konden ze makkelijk switchen naar domeinoverzichten en bleef het verhaal overzichtelijk.

Deze sessie is zeker een aanrader omdat ze een interessante evolutie binnen een domein toelichten. In de laatste vijf minuten gaven ze ook een goede samenvatting van de evolutie die ze in hun scenario hebben doorlopen en verwezen ze naar de Hive Pattern waar de verdere uitwerking van dit concept gebruikt wordt.

🎥 Link naar de video

Scorekaart (1-5):

  • Inspiratie: 5
  • Link naar DDD: 4
  • Analyse technieken: 4
  • Technisch behulpzaam: 3

TDD & DDD from the Ground Up - Chris Simon

Tijdens de sessie “TDD & DDD from the Ground Up” werden enkele principes van Domain-Driven Design (DDD) belicht aan de hand van een live coding voorbeeld van Test-Driven Development (TDD). De ervaren spreker, Chris Simon deelde zijn uitgebreide kennis over dit thema. Dankzij de goede voorbereiding, diepgaande kennis van het onderwerp en het aangename tempo was deze sessie geschikt voor een publiek van developers en analisten die de basisprincipes van TDD willen verkennen.

Hoewel het TDD-gedeelte goed werd uitgevoerd, ontbrak een duidelijke link met DDD. Hierdoor voelde de sessie eerder aan als een TDD-demo, met slechts beperkte aandacht voor DDD-principes. De kijkervaring wordt bovendien negatief beïnvloed door de lage kwaliteit van de geprojecteerde code, in combinatie met de aanwezigheid van veel zonlicht in de ruimte.

Voor wie een solide basis van Test-Driven Development wil verwerven, was deze sessie zeker een aanrader. Als je echter meer interesse hebt in Domain-Driven Design, zijn er betere sessies die meer diepgang bieden.

🎥 Link naar de video

Scorekaart (1-5):

  • Inspiratie van de spreker: 4
  •  Link met Domain-Driven Design (DDD): 2
  • Analytische Mogelijkheden: 1
  • Technisch Behulpzaam: 4

The Escher School of Fish: Modelling with Functions

Tijdens “The Escher School of Fish: Modelling with Functions” demonstreerde Einar Høst het concept functiemodellering aan de hand van live coding in de functionele programmeertaal Elm. In het voorbeeld werden talrijke vectortransformaties toegepast om afbeeldingmanipulatie te bereiken. 

De presentatie viel zeker in de smaak bij developers. Het was fascinerend om te zien welke resultaten men kan bereiken door relatief eenvoudige vectortransformaties uit te voeren. Voor analisten bood de sessie waarschijnlijk minder directe meerwaarde. Omdat de presentatie heel technisch was, miste we een duidelijke link met Domain-Driven Design.

Ondanks het mooie visuele resultaat, paste de sessie minder in het kader van een DDD-conferentie.

🎥 Link naar de video

Scorekaart (1-5):

  • Inspiratie van de Spreker: 2
  • Link met Domain-Driven Design (DDD):1
  • Analytische Mogelijkheden:1
  • Technisch Behulpzaam: 3

TDD: Beyond the Intro Part One & Two

De tweeledige talk "TDD: Beyond the Intro" van Romeu Moura suggereerde een verdieping in Test-Driven Development, en dat kregen we ook.

Moura startte met de basisprincipes van TDD, maar ging al snel verder dan de "red-green-refactor"-cyclus. Hij beschouwde TDD als een socratische dialoog, een manier van redeneren met het gebruik van tests als “field notes”. Zijn verhaal was diepgaand en duidelijk, al lag het tempo aan de lage kant, waardoor het bij momenten moeilijk was om aandachtig te blijven.

Ondanks de DDD-context van de conferentie besteedde Moura weinig tot geen aandacht aan Domain-Driven Design. De focus lag meer op de algemene principes van TDD en hoe deze in de praktijk kunnen worden toegepast.

De talk bevatte ook een live coding gedeelte, waarin Moura een eenvoudige fizzbuzz applicatie bouwde met behulp van TDD. Dat was een nuttige illustratie van de besproken principes, maar niet per se noodzakelijk om de talk te begrijpen.

 Algemeen was dit een waardevolle talk voor mensen met een technisch profiel die meer willen leren over TDD: diepgaand, duidelijk en praktisch toepasbaar. Hoewel ook deze talk weinig verwijzingen naar DDD bevatte, kon dat de pret niet drukken.

🎥 Link naar de video (Part One)

🎥 Link naar de video (Part Two)

Scorekaart (1-5):

  • Inspiratie: 4
  • Link naar DDD: 1
  • Analyse technieken: 1
  • Technisch behulpzaam: 4

Refactoring to a really small but useful model island

De spreker van deze sessie, Yves Lorphelin, is een ervaren software engineer met een passie voor Domain-Driven Design. Hij deelde zijn enthousiasme en expertise op een inspirerende manier. De talk was duidelijk en goed gestructureerd, met concrete voorbeelden en illustraties. Lorphelin beantwoordde vragen van het publiek met kennis van zaken en humor.

De talk was duidelijk geworteld in de principes van Domain-Driven Design. Lorphelin toonde hoe het refactoren naar een klein modeleiland kan helpen om de complexiteit van een softwareproject te verminderen en de code beter te organiseren rond de kern domeinmodellen.

Lorphelin besprak een aantal analysetechnieken die gebruikt kunnen worden om de kerndomeinmodellen te identificeren. Deze technieken omvatten onder andere:

  • Bounded context analysis: Het identificeren van gebieden van de applicatie met een eigen domeinlogica.
  • Ubiquitous language: Het ontwikkelen van een gemeenschappelijke taal die door alle stakeholders gedeeld wordt.
  • Event storming: Het modelleren van de domeinlogica door middel van events.

De talk was gericht op software developers en architecten met een basiskennis van Domain-Driven Design. Lorphelin ging in op de technische details van het refactoren naar een klein modeleiland, maar hij bleef ook op een abstract niveau om de talk toegankelijk te houden voor een breed publiek.

Scorekaart (1-5):

  • Inspiratie: 3
  •  Link naar DDD: 3
  • Analyse technieken: 4
  • Technisch behulpzaam: 3

Living in your own bubble - Jacob Duijzer: From legacy to Domain Driven Design

In deze sessie lichtte agile coach Jacob Duijzer toe hoe hij omging met Legacy code voor een project binnen het domein landbouw. Hij gaf meer inzicht in het domein aan de hand van de Domain Storytelling techniek. Hij schetste de nieuwe richtlijnen die toepasbaar zijn op het bestaande systeem. Dat systeem was niet alleen complex en verouderd, maar er was ook weinig tot geen documentatie, geen unit tests, en een groot verloop van domein experts.

Jacob Duijzer toonde hoe hij domeinexperts het domein liet uitleggen aan de hand van voorbeelden (= ‘specification by example’). Hierna lichtte hij ‘the bubble context’ toe en hoe je het kan gebruiken om nieuwe bedrijfsregels toe te passen, zonder te raken aan het bestaande systeem. Tot slot zette hij de voor- en nadelen van een bubbelcontext op een rij.

🎥 Link naar de video

Scorekaart (1-5):

  • Inspiratie: 3
  • Link naar DDD: 5
  • Analyse technieken: 4
  • Technisch behulpzaam: 3

Functional Domain Modelling - Marco Emrich and Ferdinand Ade

Deze presentatie bracht een stukje theater naar DDD 2023, met in de hoofdrol Marco (als de developer) en Ferdi (als de klant/Product Owner). Het verhaal ging als volgt …

Ferdi is actief in de wijnsector en wil graag een applicatie laten bouwen om zijn klanten de beste wijn aan te raden, naar hun eigen smaak. Het was leuk om te zien hoe Ferdi hardop nadenkt over zijn verwachtingen. Marco probeerde dit meteen om te zetten in code aan de hand van ‘types’. Terwijl Ferdi stap voor stap vertelde hoe een ‘proeverij’ verloopt, codeerde Marco dit meteen in de taal van Ferdi. Zo koos Marco eerst voor de term ‘wijnaanbod’, om dit later aan te passen naar ‘wijnkelder’. Ferdi bleef immers spreken over hun wijnkelder, niet over hun aanbod.

Ferdi keek voortdurend mee over de schouder van Marco. Zo vulden ze samen aan, schrapten en hernoemden ze. Wat niet duidelijk was, werd uitgesteld. Er ontstond gaandeweg een gemeenschappelijke taal tussen de ontwikkelaar en de klant.

Uit deze vermakelijke sessie onthouden we dat het goed is om samen met de klant te modelleren aan de hand van event storming of domain storytelling, maar dat de uitkomst abstract kan zijn. ’Functional Domain Modelling’ kan de kers op de taart zijn. Het resultaat is dan expliciet, specifiek en vormt een goed uitgangspunt om te starten met de implementatie.

🎥 Link naar de video

Scorekaart (1-5):

  • Inspiratie: 3
  • Link naar DDD: 3
  • Analyse technieken: 4
  • Technisch behulpzaam: 3

Conclusie

Na de Foundations Day van DDD Europe 2023 keerden onze vier collega’s naar huis met heel wat nieuwe inzichten, die ze ook in de praktijk zullen toepassen.  

Het thema live coding was voor developers de uitgelezen kans om meer inzicht te krijgen in DDD-principes. Daarnaast kwamen er veel gerelateerde technieken aan bod, zoals Test-Driven Development.

Niet elke sessie had een duidelijke link met DDD, wat vooral voor analisten een minpuntje was. Desondanks was de sfeer gedurende de hele dag bijzonder positief en inspirerend. Het Meervaart-theater bleek voor de aanwezigen het ideale kader om voor en na de sessies te netwerken en ervaringen uit te wisselen.

Wij kijken al uit naar de volgende editie van DDD Europe!