Erfahre Neues aus dem Blog als Erster!
Jetzt anmeldenErfahre Neues aus dem Blog als Erster!
Jetzt anmeldenIn diesem Artikel erfahren wir von Sven Richter, wie Event Storming - ein Event-basierter Ansatz - hilft, die Kommunikation zwischen Business und Entwicklung vom Beginn der Produktentwicklung an zu intensivieren - und was das alles damit zu tun hat, ein Flugzeug zu landen.
von Christian Wende, Romy Wackrow, Lesezeit: 7 Min.Die Entwicklung von Softwareprodukten hakt oft daran, dass die Fachexperten beim Beschreiben der Produktanforderungen unter sich geblieben sind. Die Fachexperten wissen zwar, wie ihr Business und dessen Prozesse funktionieren. Sie kennen genügend Stellen und Leistungsparameter, die zu verbessern wären. Oft wissen sie aber nicht, wie das technisch am besten umgesetzt werden kann und auf welche technischen Hürden ihre Wünsche möglicherweise treffen. Umgekehrt wissen die Softwareentwickler oft nicht, was das Feature bezwecken soll, das sie umsetzen. Möglicherweise wäre der Zweck viel einfacher zu erreichen. Die einen verwenden ihren fachlichen, die anderen ihre technischen Begriffe – es sind zwei Welten. Wenn man von Anfang an beide Perspektiven zusammenbringt, können Softwareentwickler und Fachexperten gemeinsam das zu lösende Problem entdecken. Sie können sich ein Vokabular und Verständnis der verwendeten Begriffe schaffen und schließlich einen Lösungsansatz entwerfen, der das fachliche Problem genau trifft.
In diesem Beitrag wollen wir Euch eine einfache und flexible Methode vorstellen, welche die fachübergreifende Kommunikation beflügelt. Sie kann vor allem in der Product Discovery eingesetzt werden, wenn sich aus einer Idee die Anforderungen für ein Softwareprodukt herausbildet, aber auch später im Entwicklungsprozess. Wir haben dazu mit Sven Richter von mind-to-matter gesprochen. Er arbeitet seit über 10 Jahren mit vielen Kunden aus den Bereichen E-Commerce, Automotive und Banken, Geschäftsideen schnellstmöglich (manchmal innerhalb von nur 6 Wochen!) in funktionierende Softwareprodukte umzusetzen. Er setzt Event Storming häufig als Werkzeug in der Produktentwicklung ein und moderiert dabei den Prozess.
Seine Antworten haben wir für Euch zusammengefasst:
Wie setzt ihr Events in der frühen Produktentwicklung ein?
Event Storming ist ein Workshop Format. Fachexperten und Softwareentwickler werden je nach Bedarf zu einem, manchmal auch zwei Tagen eingeladen. Vor Ort oder remote sind beide möglich. Wir starten mit einer Menge Post-Its und einer weißen Wand. Wir versuchen die wesentlichen fachlichen Ereignisse (Events), aus denen ein Geschäftsbereich oder -prozess besteht, in einer chronologischen Reihenfolge an die Wand zu bringen. Wir konzentrieren uns bewusst auf Ereignisse - auf das, was fachlich passiert -, um alle technischen Vorannahmen z. B. zu Systemen, Prozessen, Daten usw. zu vermeiden. Sonst bringt man schon zu viel Lösung mit ins Spiel. Vielleicht ist die Lösung aber viel einfacher. Wir wollen auch nicht alles mit komplexen Diagrammen oder Modellierungssprachen überladen.
Normalerweise arbeiten wir dabei in 3 Phasen. Ich vergleiche dies ganz gern mit dem Landeanflug in einem Flugzeug.
Phase 1 – Überflug: Wir befinden uns noch ganz weit oben und sehen Felder und Straßen.
In dieser Phase geht es darum, sich die fachliche Perspektive (Business Domäne) zu erschließen. Wie verläuft die "Geschichte" der Wertschöpfung? Die Fachexperten erklären, was nacheinander in der Domäne passiert. Die Softwareentwickler stellen Verständnisfragen und hinterfragen auch schon, warum es so gemacht wird. Um das Ganze zu vereinfachen, beginnen wir meistens mit einem einfacheren Szenario eines Geschäftsablaufs und nehmen an, dass er gelingt ("happy path"). Es werden im Wesentlichen folgende Fragen beantwortet:
Es werden folgende Fragen beantwortet:
Am Ende der Phase erhalten wir ein erstes chronologisches Bild über die fachliche Wertschöpfung – eine grobe Landkarte von (Geschäfts-)Feldern und Straßen, auf die sich alle beziehen können.
Phase 2 – Landeanflug: Felder und Straßen werden deutlicher und die größeren Zusammenhänge und Verbindungen sichtbar.
In der zweiten Phase erweitern wir unser Verständnis zu den Ereignissen: Was hat diese Ereignisse ausgelöst? (Commands) Welche Akteure spielen eine Rolle? Welche Informationen sind nötig? Welche Geschäftsregeln gibt es, die einen Einfluss auf die Ereignisse haben? Das hilft uns, Ereignisse der Domäne als zusammengehörig anzusehen und gegen andere abzugrenzen. Wir definieren Zuständigkeitsbereiche (sogenannte Bounded Contexts), weil die fachlichen Ereignisse zu ähnlichen Aufgaben im Geschäftsprozess gehören. Ein Fachbegriff hat in einem Kontext seine spezifische Bedeutung. Wir geben diesen Kontexten Namen, die ihr fachliches Verhalten und ihre Aufgabe ausdrücken, keine technischen Ausdrücke oder Systemnamen. Jeder Kontext sollte nur eine einzige Aufgabe haben und diese auch nur als einziger, damit wir später unsere Anwendung gut modularisieren können.
Wir arbeiten an Fragen wie:
Phase 3 – Auf der Landebahn: Wir erreichen die Landebahn und setzen auf der Oberfläche auf.
In der letzten Phase schließen wir die Landung ab. Das gemeinsame fachliche Verständnis hilft uns jetzt, schon in Richtung Produkt-Architektur und Objekt-Struktur zu denken. Die Abgrenzung in Module und das Verständnis der Verhaltensweisen einzelner Objekte werden verfeinert. Die gemeinsam gefundenen Begriffe finden sich im Code wieder. Diese Phase kann oft auch ohne Fachexperten stattfinden. Die Konzepte, die wir hier verwenden (z. B. Aggregat, Value Object), kommen aus dem Domain-Driven Design. Diese Fragen sind zum Beispiel:
Über die drei Phasen des Landeanflugs haben wir dieselbe Region aus unterschiedlichen Zoomstufen betrachtet und sind allmählich von der fachlichen Perspektive zur technischen übergegangen. Die begriffliche Grundlage ist aber immer dieselbe geblieben und wird es über die weitere Produktentwicklung bleiben, auch wenn sie sich weiterentwickelt. Fachexperten und Softwareentwickler wissen anhand des Bildes der Geschäftslogik, worüber sie sprechen. Sie können schnell auf den Punkt kommen und erfassen, was die jeweils andere Seite möchte. Beim Event Storming geht es also um das Erarbeiten eines geteilten mentalen Modells („Landkarte“) und das Etablieren einer gemeinsamen Sprache. Das Modell grenzt fachliche Zuständigkeiten deutlich ab - diese fachliche Abgrenzung wird sich auch in der Architektur wiederfinden.
Was ist aus Deiner Sicht das zentrale Problem, das gelöst wird?
Wann kann oder sollten wir Event Storming einsetzen?
Da gibt es verschiedene Anlässe:
Wie wirkt sich Event Storming auf spätere Phasen der Produktentwicklung aus?
Von Anfang an haben wir auf eine Abgrenzung der Komponenten aufgrund von fachlichen Aufgaben geachtet, dadurch verfügen wir jetzt über eine wartbare Architektur, die leichter angepasst werden kann. Gut fachlich abgegrenzte Domänen vermeiden Kopplung. Die gemeinsame Diskussion der Wissensträger macht sehr früh die kritischen Punkte der Geschäftslogik und der Umsetzung deutlich. Das vermeidet spätere und dadurch teurere Anpassungen. Die Erleichterung der Kommunikation und Vermeidung von Missverständnissen haben wir ja schon besprochen.
Das klingt super! Wie kann ich denn morgen damit starten?
Und dann kannst Du schon loslegen!
Wir hoffen, Euch hat dieser Einblick in Event Storming anregt, gemeinsam mit Kunden oder Fachexperten frühzeitig ein gemeinsames Modell und Vokabular zu finden, um so erfolgreiche Softwareprodukte zu entwickeln.
Sven hat noch eine ganze Menge Expertentipps, wie ihr Euch die Anwendung von Event Storming leichter macht. Event Storming ist auch erst der Anfang. Das Arbeiten mit Events ist auch in späteren Phasen der Produktentwicklung wahnsinnig hilfreich. So setzen Methoden wie Event Modeling nahtlos an und treiben das technische Design von Softwareprodukten. Event-getriebene Implementierungsstacks erlauben höchst skalierbare und erweiterbare Produktimplementierungen. Aber dazu mehr in späteren Beiträgen. Wer jetzt schon Fragen hat, kann sich auch gern direkt mit Fragen an uns wenden oder Themen zur Vertiefung vorschlagen.