Das komplette Eventmodeling Tutorial

So entwickeln wir heutzutage Softwaresysteme.
Einfach, wartbar und ohne den typischen Microservice Overhead.

In diesem Tutorial lernst du kostenlos, die wie du komplexe Informationssysteme modellierst und entwickelst.

In diesem Tutorial folgen wir einem fiktiven Scrum Team bei der Planung & Entwicklung eines neues Softwaresystems. Ziel des Systems ist es, Self-Service für Kunden in Coffee-Shops zu ermöglichen. Der Kunde soll über eine digitale Oberfläche bestellen und anschließend den fertigen Kaffee möglichst ohne Wartezeit an der Theken abholen können.

Die Herausforderung bei der Entwicklung ist (wie immer) die Integration in die umliegenden Systeme. Wir haben ein Bestandssystem (Backoffice), das die Produktkonfigurationen bereitstellt. Zusätzlich ist die Integration eines Payment-Providers geplant. Der Kunde soll idealerweise digital bezahlen.
Zunächst aber betrachten wir die Anforderungen an unser System isoliert.

Um die Anforderungen und das System besser zu verstehen schlägt Markus, der Scrum Master einen Eventmodeling Workshop vor. Keiner der Entwickler hat bisher von dieser Technik gehört. Markus hat über einen bekannten Architekten davon erfahren und nur Gutes darüber gehört.

Der Workshop kann komplett Remote abgehalten werden und so lässt sich das Team auf das Experiment ein. Der Workshop startet direkt am nächsten Tag. Markus konnte sogar kurzfristig einen externen Berater mit dazuholen, um den Workshop besser zu koordinieren.

Markus verschickt noch am Abend den Artikel Software dokumentieren mit Eventmodeling an jeden Teilnehmer, damit sich jeder ein wenig auf den Workshop vorbereiten kann. Zusätzlich gibt es die kostenlose Anleitung zur Durchführung von Workshops, die Markus auch gleich mit anhängt.

Events sammeln

Im Workshop wird mit einem einfachen Miro-Board gearbeitet. Im ersten Schritt sammelt das Team alle Events. Am Workshop nimmt nicht nur das Entwicklungs-Team, sondern auf Tipp des Beraters sogar jeder vom Fachbereich teil, der kurzfristig Zeit hat.

Im Video siehst du den ersten Teil des Workshops

"Das Eventmodell erstellen."

Durch Eventmodeling zerteilt das Team die Software in die kleinstmöglichen vertikalen Funktionsblöcke. Wir nennen diese Blöcke "Slices".

Slices bestehen aus Commands (Blau), Events (Gelb) und Read Modellen (Reports) (Grün). Das Team bringt die ersten Events in eine grobe Reihenfolge und definiert direkt den ersten Slice für die Anmeldung des Benutzers

"Der erste Slice."

Was jeden erstaunt - der Workshop ist äusserst produktiv und es werden genau die richtigen Diskussionen zwischen den Teilnehmern geführt.

Was ist die Reihenfolge der Events?
Was muss im Screen zu sehen sein?
Was sind die Schritte, die nacheinander gemacht werden müssen?
Wo kommen die Daten her?

Das Team benötigt lediglich 5 Minuten um produktiv zu arbeiten. Das Format ist quasi selbsterklärend.

Modellvalidierung

Was dem Team extrem hilft ist die Echtzeitvalidierung des Modells. Fehlerhafte oder fehlende Daten werden direkt rot markiert. So ist sofort klar, welches Slice direkt fertig ist und wo noch weitergearbeitet werden muss.

"Modell Validierung."

Im Workshop selber kommen immer wieder Fragen auf, die der Berater kurz und knapp beantwortet. Ansonsten hält sich dieser meist im Hintergrund und stellt nur Fragen, wenn Diskussionen ins Stocken geraten.

Eine Frage, die beispielsweise mehrfach gestellt wurde ist "Wie gehen wir mit generierten Werten wie beispielsweise einer SessionId um?" Den Vorschlag des Beraters siehst du im Video.

"Generierte Werte."

Der erste Aha-Moment

Read Modelle (oder auch Reports) sind die Art und Weise wie Daten zwischen Slices weitergereicht werden. Die Read Modelle sind im Event-Modell grün markiert. Die Daten werden aus den zuvor gespeicherten Events befüllt.

Der erste Aha-Moment

Hier kommen die ersten wirklichen Aha-Momente. Moritz dem Architekten wird in diesem Moment klar, was durch diese Art der Modellierung wirklich erreicht wird. Der "Registrierungs-Slice" ist ein in sich geschlossesenes Feature.

Das Team hat für dieses Feature klare Eingangs- und Ausgangsparameter definiert. Das Feature könnte jetzt bereits implementiert werden, da keinerlei unbekannte Abhängigkeiten existieren.

Durch die Modellierungen hat das Team einen eingebaute Daten-Komplett-Check.. Es kann nicht passieren, dass auf Daten zugegriffen wird, die nicht vorhanden sind. Es gibt keinerlei Annahmen, sondern nur Fakten.

"Read Modell (Report)."

Der Berater erklärt immer wieder, dass aus den Screens in den Slices eigentlich jeder dynamische Wert ersichtlich sein muss. Es sollte für einen Entwickler auf den ersten Blick ersichtlich sein, wo die Dynamik im Screen ist.

"Dynamic Screens."

Nachträgliche Anpassung von Features

Jens, ein Teilnehmer und Entwickler stellt eine wichtige Frage.

Haben wir nicht was vergessen? Wo kommt der Titel der Produkte her?

Jeder ist kurz verblüfft. Tatsächlich ist das bisher niemandem aufgefallen. Das Modell lässt sich natürlich problemlos jederzeit erweitern.

Die Änderung ist meistens auf einen Slice begrenzt. Das Team muss lediglich sicherstellen, dass die notwendigen Daten verfügbar sind. Die Modellvalidierung hilft dabei enorm.

"Screen Extension."

Das Team geht jetzt Schritt für Schritt durch die einzelnen Slices. Es finden wichtige Diskussionen statt. Schritt für Schritt wird klar, welche Daten in welchem Schritt der Software benötigt werden.

Das Team trifft zu keiner Zeit Annahmen, sondern arbeit alleine auf Fakten und Daten.

"Commands & Events."

Order Screen erstellen

Während ein Teil des Teams noch die Daten für die Events und Commands definiert, kann ein weiterer Teil bereits das Screendesign für den nächsten Screen erstellen.

Die Arbeit ist komplett parallelisierbar (hier in der Modellierung, aber auch später in der Implementierung).

"Order Screen."

Daten aus unterschiedlichen Events

Für jeden Slice untersucht das Team, wo die Daten definiert sind, die für die Umsetzung gebraucht werden. Die Schnittstelle vom "Backend" zum "Screen" ist das Read-Modell.

Das Modell kann problemlos aus unterschiedlichen Events befüllt werden. Die Daten-Validierung des Modells stellt zu jeder Zeit sicher, dass die Slices umsetzbar sind. Wenn das Team alles richtig gemacht hat, sind die Daten für jeden Slice immer verfügbar.

"Order Page."

Lego Slices - das vorerst letzte Feature.

Slices können zusammengesteckt werden wie Lego-Bausteine. Das Team entscheidet sich, zunächst nicht die gesamte Software zu modellieren. Alle Teilnehmer einigen sich auf eine Menge von Slices, die in einem Sprint umgesetzt werden kann.

Das Team kann zu jeder Zeit mit der Modellierung fortfahren, ohne dass Information verloren geht.

"Order Submit."

Swimlanes

Im letzten Schritt definiert das Team die ersten Swimlanes. Durch Swimlanes bekommen wir eine Zuordnung der Events und Daten zu den Kontexten unserer Software. Swimlanes entsprechen im Domain Driven Design in etwa den Bounded Kontexten. Eine Swimlane kann einen eigenen Service, ein Modul oder nur einen eigenständigen fachlichen Bereich repräsentieren.

"Swimlanes."

State View / State Change

Bevor wir in die Implementierung gehen zerlegen wir die Slices jetzt in _State View_ und _State Changes_. Damit definieren wir unabhängige Arbeitspakete, die in beliebiger Reihenfolge implementiert werden können.

"State View / State Change."

Das Miro Tooling verwenden

Es ist kostenlos

Das Plugin hilft dir, schnell die wichtigen Bestandteile deiner Software zu modellieren.

Zum Eventmodeling Tooling

Was machst du als nächstes?

Lass dich beraten

Lass uns über dein Vorhaben sprechen.
Wir helfen bei der Planung und Entwicklung komplexer Softwaresysteme
mit Eventmodeling, mit Eventsourcing und mit maximal flexibler Beauftragung.

Kostenloses Beratungsgespräch vereinbaren.

Planung ist die halbe Software (oder mehr)

Wir planen dein System - Eventmodeling Workshop
Jedes System sollte vor der ersten Zeile Code modelliert werden.
Wir führen mit euch Eventmodeling-Workshops durch und planen euer System.
Wir nutzen für den Workshop natürlich alle Werkzeuge aus dem Nebulit Werkzeugkasten.

Schule dein Team

Ich würde mich freuen, wenn wir dein Team mit unserer Expertise unterstützen dürfen.

Warum funktioniert diese moderne Art Software zu entwickeln eigentlich so gut?

Die Hintergründe erfährst du in diesem Video.