DDD Europe 2023
DDD and FP Can’t Be Friends - Yet
Henning (DDD-verliebt) und Mike (seit den 80er Jahren FP-verliebt) sind sich über alle Grundlagen der Softwarearchitektur einig, aber wenn es um den Entwurf von Modellen geht, können sie scheinbar keine gemeinsame Basis finden. DDD- und FP-Anhänger beglückwünschen sich gerne dazu, wie gut sie zusammenpassen - wie FP-Modellierungstechniken DDD-Modelle ergänzen oder wie DDD-Konzepte in Wirklichkeit FP im Verborgenen sind. Es bleibt jedoch noch viel zu tun, um diese beiden Welten zu vereinen:
- DDD-Anwender verwenden gerne die allgegenwärtige konkrete Sprache der Anwendungsdomäne, während FP-Anwender Abstraktionen und die damit verbundene Terminologie bevorzugen. Die Vermischung dieser beiden Welten führt zu einem inkonsistenten oder widersprüchlichen Vokabular.
- Beide Lager bevorzugen zwar operationsreiche Modelle, aber die Ansätze zur Gestaltung dieser Operationen sind nicht kompatibel. Insbesondere der OO-Einfluss von DDD führt dazu, dass DDD-Modelle auf die OO-Idee ausgerichtet sind, dass die Objekte, die die Domäne bevölkern, gekapselt und somit isoliert sind, während in FP diese Kapselung ein emergentes (oder nicht emergentes) Phänomen ist. .
- Das taktische Design von DDD ist von Natur aus zustandsbehaftet, während FP von Natur aus zustandslos ist. Dies führt natürlich zu sehr unterschiedlichen Ansätzen beim Schnittstellendesign und, was noch wichtiger ist, bei der Verwendung von Typen und ihrer Beziehung zur allgegenwärtigen Sprache. Darüber hinaus führt dies zu grundlegenden Unterschieden in der Aufteilung zwischen Entitäten und Wertobjekten. Dies ist auch dann der Fall, wenn die taktische DDD in funktionalen Sprachen ausgedrückt wird, da sich die Ausdrucksmittel ändern, der grundlegende Ansatz aber derselbe ist.
- Noch grundlegender ist, dass sich DDD auf die Modellierung der Domäne konzentriert, während sich FP auf die menschliche Wahrnehmung der Domäne konzentriert - dies mag wie ein esoterischer Unterschied erscheinen, hat aber weitreichende praktische Auswirkungen. Um das volle Potenzial der Kombination von DDD und FP auszuschöpfen, müssen wir also zunächst die Unterschiede erkennen. Während DDD FP viel darüber lehren kann, wie man die Sprache der Domäne mit dem Code in Verbindung bringt, kann es von FP seine umfangreichen Techniken lernen, um Informationen in Daten umzuwandeln, sowie den vernünftigen Einsatz von Abstraktion. Henning und Mike werden aufzeigen, wie sich DDD- und FP-Entwurfsansätze unterscheiden, und mögliche Ansätze zur Vereinheitlichung beider Ansätze zum gegenseitigen Nutzen und zur Erkenntnis anbieten.
(In englischer Sprache)
Datum & Ort
09. Juni 2023 | 15:30 – 16:20
Amsterdam | Theater de Meervaart