Hier geben wir Einblicke in das Unternehmen, Gedanken, How-Tos, Wissenswertes und News, die sich aus der Programmierung und Projekten ergeben. Auch unsere Open Source Aktivitäten begleiten wir hier.

Corporate Blog der prooph software GmbH

Domain-Driven Design Erfahrungen

Domain-Driven Design Buch

Lesenswert: "Implementing Domain-Driven Design" von Vaughn Vernon

Mein PHP DDD Cargo Sample nimmt langsam Form an. Die ersten vier Kapitel sind umgesetzt und geben einen tieferen Einblick in die Domain-Driven Design Welt. Diese kurze Zusammenfassung beschreibt meine bisherige Arbeit, meine persönlichen Domain-Driven Design Erfahrungen und gibt einen Ausblick auf die nächsten Milestones.

DDD Lernkurve

Als ich letztes Jahr begonnen habe, mich mit Domain-Driven Design zu beschäftigen, habe ich noch nicht geahnt, wie schwierig es wird die Lernkurve zu meistern. Am Anfang schienen die Konzepte klar. Es gibt Entities, die eine Identität haben, ValueObjects, die sich nur über ihre Werte definieren, Aggregate, die mehrere Entities und ValueObjects gruppieren und DomainServices, die verschiedene Aggregate miteinander synchronisieren. Dass es doch nicht ganz so einfach ist, haben mir viele Diskussionen über DDD gezeigt. Der Teufel steckt natürlich im Detail und bei DDD vor allem in der Ubiquitous Language. Ich habe anfangs, wie viele andere auch, einfach viel zu technisch gedacht. Sich von bekannten Vorgehensmodellen zu lösen (z.B. einfach CRUD Routinen für Entities zu programmieren) war mitunter der schwierigste Schritt. Viel geholfen dabei, DDD wirklich zu verstehen, hat mir das Buch Implementing Domain-Driven Design von Vaughn Vernon. Das soll nicht heißen, dass es sich nicht lohnt Eric Evans Buch zu lesen. Vielmehr baut "Implementing Domain-Driven Design" darauf auf, geht aber mehr in die Praxis und stellt neuere Vorgehensmodelle wie CQRS und EventSourcing vor, die auf DDD aufbauen und somit erst nach dem Erscheinen von Eric Evans "Domain Driven Design: Tackling Complexity in the Heart of Software" ihren Siegeszug angetreten haben.

Domain-Driven Design Step by Step

Die Vielzahl an Patterns und Libraries, die einem im Zusammenhang mit DDD begegnen, machen es schwer, sich erstmal auf die Grundprinzipien zu konzentrieren und diese richtig zu verstehen. Das ist etwa vergleichbar, wie wenn ein PHP Entwickler, der sich noch nie mit MVC beschäftigt hat, direkt mit Symfony2 oder ZF2 beginnt. Ohne ein grundsätzliches Verständnis von MVC wird er sich kaum zurechtfinden. Aus diesem Grund versuche ich meine Version des DDD Cargo Samples schrittweise zu implementieren. Jeder Teilschritt ist ein eigenes Kapitel und wird am Ende mit einer Zusammenfassung der Neuerungen und Erkenntnisse versehen. Immer wieder stoße ich auf gute Artikel über Domain-Driven Design, die ich versuche, in die Zusammenfassungen mit einfließen zu lassen. Auch eine Sammlung von >empfehlenswerten DDD Tools und Libraries gehört mittlerweile zum Umfang meines Cargo Beispiels.

DDD in PHP Google Group

Empfehlenswert für Neueinsteiger und erfahrene DDD Enthusiasten ist auch die PHPinDDD Google Group. Dort finden sich sehr gute Antworten auf viele Fragen, auf die man zwangsläufig stößt, wenn man sich intensiv mit Domain-Driven Design und die Anwendung in PHP beschäftigt.

Milestones

Mein Ziel ist es natürlich, die Konzepte des Original Cargo Samples vollständig nach PHP zu portieren und dabei weiter iterativ vorzugehen. Es sollen aber auch neuere Themen wie Hexagonale Architekturen, CQRS und EventSourcing einfließen, um das Bild abzurunden. Ich hoffe, euch gefällt das PHP DDD Cargo Sample und hilft euch dabei, die Welt von Domain-Driven Design zu erforschen.

Sie suchen einen Software Dienstleister für Ihr Projekt: Projektanfrage stellen

Blog Artikel mit ähnlichen Themen