Domain-driven Design

Vom Post-it zum Test: Event Storming aus der Sicht eines Testers

Event Storming ist im Domain-driven Design eine gute Methode, ein gemeinschaftliches Verständnis aller Projektbeteiligter bezüglich der Anwendungsdomäne zu erlangen und dabei ein Prozessmodell zu erstellen. Oft wird dabei aber außer Acht gelassen, dass die dabei entwickelten Informationen nur mit wenig Aufwand direkt in automatisierbare Testfälle transformiert werden können. Daher soll hier die Frage beantwortet werden, wie die verschiedenen Modellierungspattern des Event Stormings in sinnhafte Behavior-driven-Design-Testfälle umgesetzt werden können.

Event-basiert und evolvierbar: Appentwicklung mit Axon Stack

Obgleich das Zielbild sowohl ein Monolith als auch eine Microservices-Architektur sein kann – das Axon Framework offeriert einen leichtgewichtigen Ansatz zur Implementierung Event-basierter Anwendungen. Dabei stützt sich das Framework auf gängige Muster aus dem Domain-driven Design (DDD) [1] und begünstigt die Umsetzung einer Anwendung nach dem Architekturprinzip Command Query Responsibility Segregation (CQRS) [2] und der Persistenzstrategie Event Sourcing [3]. Durch diese Flexibilität und die Tatsache, dass das Axon Framework bestens mit dem Spring Framework integriert ist und damit ein quasistandardisiertes Programmiermodell unterstützt, ist es für den modernen Java-Entwickler einen Blick wert.

Kubernetes, Quarkus 1.0 & IntelliJ IDEA 2019.3 – Unsere Top-Themen der Woche

Mit Siebenmeilenstiefeln eilen wir auf das Jahresende zu! Dass die Zeit wie im Flug vergeht, liegt sicherlich auch den spannenden Themen. In der vergangenen Woche sorgte unter anderem ein Artikel zu CI/CD-Systemen für Kubernetes für Aufmerksamkeit. Zudem wurde die IntelliJ IDEA in Version 2019.3 veröffentlicht und Quarkus 1.0 ist erschienen. Kurz vor dem Quarkus-Release sprachen wir mit Alex Soto (Red Hat) über Zielrichtung und Eigenschaften des Projektes.

1969 bis 2039: Zeitlose Designprinzipien

Die Welt der Softwareentwicklung ist im steten Wandel. Technologien kommen und gehen, neue Programmiersprachen werden jedes Jahr geboren und immer mehr Menschen werden als Entwickler Teil dieser Welt. Das bedeutet allerdings nicht, dass bestimmte Richtlinien und Grundsätze sich ebenfalls dauernd ändern. In seiner Session von der JAX 2019 spricht Jason Gorman, Codemanship, über Designprinzipien, die seit Jahrzehnten valide sind und ihre Bedeutung auch in Zukunft nicht verlieren werden.

DDD-Artikelserie: Ubiquitous Language – Warum ist Sprache so wichtig?

Ein Element, das in der gesamten Domain-driven-Design-Literatur querschnittlich präsent ist, ist die Ubiquitous Language, die allgegenwärtige Sprache. Allgegenwärtig bezieht sich darauf, dass es sich hierbei um eine Sprache handelt, die von Softwareentwickler*innen und Fachexpert*innen gemeinsam gesprochen wird. Diese Sprache soll dann auch die Basis für die Entwicklung des Softwaremodells sein. Im Rahmen dieses Artikels gehen wir erst auf die Motivation für die Etablierung einer Ubiquitous Language ein, bevor schließlich das Potenzial und die Möglichkeiten für die Arbeit mit einer solchen Sprache vorgestellt werden. Weiterhin werden noch kurz die Vorgehensweisen zur Herleitung einer Ubiquitous Language erläutert.

DDD-Artikelserie: Strategic Design – Umfassend und ganzheitlich

Domain-driven Design bietet uns mit dem sogenannten Strategischen Design eine Anleitung, wie eine Domain und damit der Problemraum fachlich erfasst und aufgeteilt werden kann. Diese Aufteilung lässt sich dann auf den Lösungsraum – die Software – übertragen. Die Fachbegriffe aus DDD, die dabei eine Rolle spielen, sind: Domain, Subdomain, Bounded Context und schließlich die Context Map für das Zusammenspiel der Bounded Contexts. In diesem Artikel werden wir diese Begriffe und unser Verständnis davon vorstellen.

Strategic Domain-driven Design: So erstellt man wartbare Architekturen mit Angular und Monorepos

Mit Monorepos können große Anwendungen in kleine, übersichtliche Teile zerlegt werden. Dabei handelt es sich jedoch nur um eine Seite der Medaille: Zuvor gilt es nämlich festzulegen, anhand welcher Kriterien die Zerlegung erfolgen soll und wie die einzelnen Bibliotheken miteinander kommunizieren dürfen. Welche das sind, expliziert Manfred Steyer in seiner Session auf der JAX 2019.

Domain-driven Design, Microservices, DevOps: Der Software-Architekt als Projektmanager

In Zeiten von Agile, DevOps und DDD verändert sich auch die Rolle des Software-Architekten. Wir haben uns im Zuge der W-JAX 2018 mit Ralf D. Müller, darüber unterhalten, wie man als Software-Architekt den richtigen Mix aus Stabilität und Flexibilität findet, welche Impulse von der DevOps-Bewegung ausgehen und wie DDD dabei hilft, wertschöpfende Software zu bauen.

Software-Architektur heute: „Es geht um Menschen, Technologien sind sekundär“

Software-Architektur galt lange als die Disziplin, um in Software-Projekten für einen kohärenten Zusammenhang zu sorgen: Stabilität, Sicherheit, Planbarkeit stand im Vordergrund. Wir haben uns mit Henning Schwentner im Zuge der W-JAX 2018 darüber unterhalten, wie sich dieses Bild verändert hat und welche Rolle Trends wie DevOps und DDD dabei spielen.

Java Magazin 12.18 erschienen: Event Storming

Die Workshop-basierte Methode Event Storming hat in den letzten Jahren mehr und mehr Beachtung erfahren. Ausschließlich anhand von Klebezetteln wird so die Domäne nach und nach entzaubert. Die Ursprünge von Event Storming sind im Domain-driven Design bzw. der entsprechenden Community begründet. Im aktuellen Java Magazin 12.18 haben wir uns ausführlich mit der Methode auseinandergesetzt.