Klaar voor de toekomst met Domain Driven Design

domain driven design
Introductie

Wij geloven in de Agile principes, waarbij je software iteratief ontwikkelt en stap voor stap beter maakt. Maar als je met complexe werkprocessen te maken hebt of een organisatie met meerdere businessunits, eventueel verspreid over meerdere landen, is het beter eerst de basis goed op de orde te krijgen voordat je aan user stories en user experience begint te denken. Daarvoor is Domain Driven Design.

Wat is Domain Driven Design?

Domain Driven Design helpt je software te maken die nauw aansluit bij je business of een verbeterde versie daarvan. Hiervoor beschrijven business experts en software developers samen de werkprocessen met alle ex- en impliciete regels en problemen die kenmerkend zijn voor een domein. Dit leidt uiteindelijk tot een conceptuele beschrijving van een domein, met afspraken over gebruikte termen. Dit domeinmodel staat op zich los van de software (database en code), maar zal wel vaak als basis daarvoor worden gebruikt. Het domeinmodel is ook basis voor de verdere communicatie over het domein, zoals het opstellen van requirements.

Het begint met de business

Domain Driven Design is niet zozeer een technische aanpak, maar vooral een procesmatige. Het begint allemaal met luisteren naar, discussiëren over en begrijpen van de manier waarop de business werkt of wil werken. De business en softwareontwikkelaars moeten elkaar precies leren begrijpen, net als de medewerkers binnen de organisaties. Door met elkaar de problemen te bespreken waartegen de business aanloopt, krijg je stap voor stap een eenduidig gezamenlijk beeld.

Ubiquitous language

Het is belangrijk dat alle medewerkers, stakeholders, programmeurs, projectmanagers, etc., dezelfde woorden voor dezelfde zaken gaan gebruiken. Daarom ontwikkel je bij Domain Driven Design samen een taal die iedereen begrijpt en waarmee iedereen hetzelfde bedoelt. De term hiervoor is 'ubiquitous language'. Dit leidt tot een conceptueel schema, met alle woorden die specifiek zijn voor een domein en de beschrijving van entiteiten en hun relaties en regels. Het is de bedoeling dat voor alle vormen van communicatie (user stories, meetings, e-mails, technische documentatie, planning, etc.) die woorden worden gebruikt.

Van woordenboek naar code

De termen en definities uit het woordenboek worden ook gebruikt in de code voor het domeinmodel. In deze laag van de software vertaal je de businessconcepten en de businessregels naar entities, value objects, aggregates, gedrag, services etc. Hierop kun je dan later de front-endoplossingen bouwen. Deze front-endoplossingen zullen door deze manier van werken en basisstructuur consistenter, stabieler en beter te onderhouden zijn. Bovendien staan alle businessregels bij elkaar, wat erg nuttig is als je later zaken wilt veranderen.

Benieuwd naar Domain Driven Design in de praktijk?

Voor De Lage Landen (DLL) ontwikkelde Iquality een platform waardoor assets slimmer verkocht kunnen worden. Domain Driven Design wordt in dit project als fundering gebruikt.

Naar de DLL case

Meerdere modellen voor grotere organisaties

Grotere organisaties hebben vaak meerdere domeinen. Ook dan is Domain Driven Design goed toepasbaar, want je kunt als dat nodig is voor de verschillende domeinen binnen een organisatie verschillende modellen maken. Die modellen en daarmee ontwikkelde applicaties hebben dan ieder hun eigen focus en eigen taal. In DDD wordt dit “bounded context” genoemd. Via API’s kun je die applicaties vervolgens extern en intern integreren. Op deze manier zorg je dat je applicaties allemaal goed passen bij de domeinen die ze primair moeten ondersteunen.

Wanneer wel en niet

Uiteraard kost het tijd en geld om eerst met zijn allen te onderzoeken hoe de business werkt. Domain Driven Design is dan ook vooral nuttig als de business processen complex zijn of als ze dit waarschijnlijk gaan worden. Ook als de business veel veranderingen verwacht, maar nog niet weet welke precies, leg je met Domain Driven Design een goede basis voor toekomstige oplossingen. In die gevallen betaalt de inspanning die je levert aan het begin van het traject zich later terug. Software die niet doet wat de business wil of niet goed met veranderingen kan meegroeien, kost vaak nog veel meer geld.

"Domain Driven Design is vooral geschikt voor de cruciale onderdelen van de business."

Afbeelding
Dmitry Gerashchenko
Naam
Dmitry Gerashchenko
Rol
Software Engineer

"Het gaat om applicaties waarvan je wilt dat ze lang meegaan en die niet gemakkelijk zijn te vervangen. Verder moet de aanpak het beeld van de business overzichtelijker maken en daarmee de ontwikkeling van de applicatie versimpelen. Als Domain Driven Design de ontwikkeling complexer maakt, is het niet de juiste aanpak."

Contact foto John van Beek.

Samen maken we jou slimmer

MAAK KENNIS MET JOHN

Ik ben benieuwd naar jouw verhaal. Laten we samen ontdekken wat digitale technologie voor je kan betekenen.

Wij worden geïnspireerd door nieuwsgierige mensen

First you, then coding: wij ontwerpen, ontwikkelen, optimaliseren en ondersteunen digitale oplossingen voor jouw verhaal.

John van Beek

Laat hier je bericht achter

Curious information
Hoe kunnen we u helpen?
Mogen wij jouw contactgegevens opslaan voor toekomstig contact?

Lees meer over ons privacy statement.

Bedankt voor je bericht

We nemen zo spoedig mogelijk contact met je op.

Oeps, daar ging iets mis

Probeer het later nogmaals.