Projektowanie oprogramowania wymaga nie tylko znajomości technologii, ale przede wszystkim zrozumienia domeny biznesowej, dla której jest ono tworzone. Event Storming to metoda, która pomaga zespołom technicznym i biznesowym w odkrywaniu oraz analizowaniu procesów zachodzących w systemie. Dzięki niej można szybko zbudować wspólne zrozumienie domeny oraz zidentyfikować kluczowe wyzwania i obszary do poprawy. Metoda ta jest również doskonałym punktem wyjścia do wdrożenia podejścia Domain-Driven Design (DDD).
Event Storming to warsztatowa technika modelowania procesów biznesowych, która koncentruje się na zdarzeniach domenowych, odzwierciedlających rzeczywiste interakcje i zmiany w systemie. Zdarzenia te, nazywane w języku metody „eventami”, są kluczowymi punktami w procesie biznesowym, które reprezentują konkretne akcje lub rezultaty działań, np. „złożenie zamówienia” czy „zatwierdzenie płatności”. Dzięki tej metodzie zespoły mogą szybko zrozumieć, jakie procesy zachodzą w systemie, jakie role w nich uczestniczą i jakie dane są przetwarzane.
Event Storming został opracowany przez Alberto Brandoliniego, włoskiego eksperta w dziedzinie Domain-Driven Design (DDD), jako narzędzie mające pomóc zespołom w przełamaniu barier komunikacyjnych i lepszym zrozumieniu złożonych systemów. Kluczowym założeniem tej metody jest prostota, w przeciwieństwie do bardziej formalnych technik modelowania, Event Storming jest intuicyjny i wymaga minimalnego przygotowania.
Event Storming ma wiele celów, ale można je podzielić na kilka głównych kategorii. Oto najważniejsze z nich:
Te cele mogą być dostosowywane w zależności od kontekstu i specyfiki projektu, ale każdorazowo metoda koncentruje się na poprawie zrozumienia systemu i efektywności pracy zespołu.
Event Storming w ramach warsztatu modelujemy procesy biznesowe, czyli w prosty i intuicyjny sposób pomagamy zespołom czy uczestnikom na zrozumienie działania systemu oraz jego domeny. Podstawą tej techniki jest wspólne odkrywanie kluczowych zdarzeń, jakie zachodzą w systemie, oraz ich powiązań z innymi elementami, takimi jak komendy, aktorzy czy agregaty.
Forma warsztatu jest bardzo prosta i wymaga jedynie dużej powierzchni roboczej, takiej jak tablica lub ściana, oraz różnokolorowych karteczek samoprzylepnych. Uczestnicy identyfikują zdarzenia domenowe (Domain Events), które zapisują na karteczkach i umieszczają na tablicy. Przykłady takich zdarzeń mogą obejmować „Utworzono konto użytkownika”, „Zamówiono towar” czy „Wygenerowano fakturę”. Zdarzenia są zapisywane w języku prostym, zrozumiałym dla wszystkich uczestników, niezależnie od ich wiedzy technicznej, aby ułatwić komunikację i wymianę informacji między różnymi grupami.
Zdarzenia domenowe stanowią punkt wyjścia do dalszej analizy procesów i identyfikacji kluczowych elementów systemu:
Proces Event Stormingu odbywa się w sposób iteracyjny. Z każdą nową informacją tablica staje się coraz bardziej zapełniona karteczkami, które odzwierciedlają strukturę i dynamikę działania systemu. Uczestnicy przechodzą od ogólnych zdarzeń do bardziej szczegółowych zagadnień, takich jak powiązania między zdarzeniami, ich zależności oraz identyfikacja potencjalnych problemów.
Sukces Event Stormingu zależy od zaangażowania odpowiednich osób i ich wiedzy na temat procesu biznesowego lub systemu. Kluczowym elementem tych warsztatów jest multidyscyplinarność zespołu, co pozwala na efektywną wymianę informacji i stworzenie całościowego obrazu domeny.
W warsztatach Event Stormingu zazwyczaj uczestniczą trzy główne grupy osób:
Dzięki udziałowi tych trzech grup warsztaty Event Storming są nie tylko skuteczne, ale również pozwalają na budowanie wspólnego języka i porozumienia między zespołami technicznymi i biznesowymi.
Event Storming to forma warsztatowej współpracy, która integruje specjalistów IT i ekspertów biznesowych, umożliwiając wspólne odkrywanie oraz analizę procesów zachodzących w systemach i domenach biznesowych. Jest to dynamiczny sposób pracy, który skupia się na identyfikowaniu kluczowych zdarzeń i powiązań w celu wypracowania wspólnego zrozumienia oraz usprawnienia procesów projektowych.
Zrozumienie domeny
Event Storming pozwala na stworzenie wspólnej przestrzeni do wymiany wiedzy pomiędzy ekspertami technicznymi a biznesowymi. Podczas warsztatów uczestnicy rezygnują z technicznego żargonu na rzecz terminologii domenowej, co umożliwia wszystkim stronom pełne zrozumienie procesów. W rezultacie specjaliści IT lepiej poznają realia biznesowe, a eksperci biznesowi zyskują wgląd w techniczne aspekty systemu.
Wspólny język
Warsztaty pomagają stworzyć ujednolicony język zrozumiały dla wszystkich stron zaangażowanych w projekt. Taka wspólna terminologia eliminuje nieporozumienia i stanowi solidną podstawę do projektowania zgodnie z zasadami Domain-Driven Design. Dzięki temu komunikacja w zespole staje się bardziej efektywna, a decyzje projektowe precyzyjniejsze.
Szybkość działania
Event Storming to szybka i skuteczna alternatywa dla długotrwałych procesów planowania. Zebranie kluczowych osób zaangażowanych w projekt na jednym warsztacie pozwala w ciągu kilku godzin odkryć najważniejsze wymagania, zależności i cele. Szczególnie w przypadku nowych projektów, warsztaty te pomagają uniknąć późniejszych problemów wynikających z niejasności lub błędnych założeń.
Dystrybucja wiedzy
Warsztaty umożliwiają równomierne rozłożenie wiedzy między uczestnikami, zarówno wewnątrz zespołów, jak i pomiędzy nimi. Taki sposób pracy przeciwdziała tworzeniu „silosów wiedzy” i zapewnia płynność projektu, nawet w przypadku zmian personalnych. Specjaliści techniczni zyskują głębsze zrozumienie kontekstu biznesowego, a eksperci biznesowi lepiej rozumieją, jak technologia wspiera ich cele.
Zapewnienie jakości
Event Storming umożliwia dogłębną analizę zależności pomiędzy funkcjonalnościami systemu, co prowadzi do projektowania produktów wysokiej jakości. Pełna świadomość procesów zachodzących w domenie oraz ich powiązań pozwala na tworzenie systemów precyzyjnie odpowiadających na potrzeby biznesowe.
Identyfikacja problemów
W projektach istniejących Event Storming pozwala na identyfikację problematycznych obszarów, takich jak wąskie gardła czy błędne założenia procesowe. Tego typu analiza prowadzi do skutecznego eliminowania problemów i optymalizacji działania systemu.
Integracja zespołu
Warsztaty Event Storming sprzyjają integracji zespołów dzięki wspólnej pracy nad procesami i wzajemnemu uczeniu się. Dla nowych członków zespołu warsztaty te są również doskonałym sposobem na szybkie wdrożenie w specyfikę projektu. Wspólne zrozumienie i zaangażowanie budują atmosferę współpracy, co przekłada się na efektywniejszą realizację celów projektowych.
Warsztaty Event Stormingu rozpoczynają się od przygotowania przestrzeni roboczej oraz narzędzi potrzebnych do pracy. Kluczowe jest zapewnienie dużej powierzchni, takiej jak ściana lub tablica, papieru elektrostatycznego oraz różnokolorowych karteczek samoprzylepnych. Warsztaty prowadzone są na stojąco, co sprzyja zaangażowaniu uczestników. Dla naszego zespołu warsztat był początkiem projektowania aplikacji w domenie Handlu Detalicznego, której modelowanie oprogramowania dopiero się rozpoczynało.
Podstawowym elementem warsztatów są zdarzenia domenowe, definiujące kluczowe czynności zachodzące w trakcie działania oprogramowania. Zdarzenia muszą być wyrażone w czasie przeszłym i istotne z punktu widzenia ekspertów domenowych. Każdy uczestnik warsztatów proponuje zdarzenia, które są zapisywane na pomarańczowych karteczkach i umieszczane na tablicy w kolejności ich występowania, tworząc swoistą „oś czasu”. Po zakończeniu tego etapu przeprowadzana jest weryfikacja wsteczna, aby upewnić się, że wszystkie istotne zdarzenia zostały uwzględnione.
W kolejnym kroku uczestnicy określają, jakie czynności prowadzą do wystąpienia zdarzeń. Każdej komendzie przypisywana jest niebieska karteczka, którą łączy się ze związanym z nią zdarzeniem. Często komendy są zbliżone do zdarzeń, np. „Zautoryzowano użytkownika” i „Autoryzuj użytkownika”. Na tym etapie ważne jest, aby nie koncentrować się na implementacji, lecz na logicznym połączeniu komend ze zdarzeniami.
Kolejnym krokiem jest identyfikacja aktorów, czyli osób lub systemów odpowiedzialnych za inicjowanie komend. W prostych przypadkach aktorem jest użytkownik, ale mogą to być także systemy zewnętrzne, inne zdarzenia domenowe lub nawet upływ czasu. Aktorzy są zaznaczani na tablicy obok przypisanych im komend. Analiza aktorów prowadzi często do głębszego zrozumienia procesów biznesowych i ich wymagań.
Po zbudowaniu osi czasu następuje grupowanie powiązanych elementów – zdarzeń, komend i aktorów – w logiczne jednostki, czyli agregaty. Każdy agregat reprezentuje główną jednostkę domenową, np. „Użytkownik” czy „Rozliczenie”. Proces ten często wymaga przeorganizowania wcześniej utworzonej osi czasu, aby uwzględnić logiczne powiązania między elementami.
Ostatnim krokiem jest wyznaczenie granic kontekstów (Bounded Contexts), zgodnie z zasadami Domain-Driven Design. Każdy kontekst odzwierciedla obszar domeny, w którym stosowany jest wspólny język. Przykładowo, w domenie Handlu Detalicznego konteksty mogą obejmować różne aspekty działania systemu, takie jak sprzedaż czy magazynowanie. Dla każdej grupy zdarzeń i agregatów określa się przynależność do jednego kontekstu, co pomaga zidentyfikować różne perspektywy i wymagania w systemie.
Po zakończeniu warsztatów na ścianie pojawia się kompletny model zawierający zdarzenia, komendy, aktorów, agregaty i wyznaczone konteksty. Taki wynik stanowi doskonałą podstawę do dalszych prac projektowych, w szczególności w zgodzie z podejściem Domain-Driven Design.
Firma z branży e-commerce postanowiła zorganizować warsztat Event Storming, aby przeanalizować i zoptymalizować proces obsługi zamówień. W warsztatach wzięli udział przedstawiciele zespołu IT, specjaliści odpowiedzialni za logistykę oraz eksperci biznesowi związani ze sprzedażą i obsługą klienta. Celem było zidentyfikowanie problemów w istniejącym procesie oraz znalezienie możliwości jego usprawnienia.
Podczas warsztatu uczestnicy wspólnie określili kluczowe zdarzenia domenowe. Na tablicy pojawiły się karteczki reprezentujące zdarzenia, takie jak „złożenie zamówienia”, „weryfikacja płatności”, „przygotowanie do wysyłki” oraz „wysyłka towaru”. Kolejnym krokiem było przypisanie komend do zdarzeń, np. „Zweryfikuj płatność” czy „Przygotuj towar do wysyłki”. Na podstawie tych informacji zidentyfikowano aktorów odpowiedzialnych za inicjowanie komend – od klientów po systemy zewnętrzne.
Analiza przebiegu procesu wykazała, że etap „weryfikacji płatności” generował znaczące opóźnienia. Dzięki warsztatowej formie pracy i wspólnej wymianie pomysłów ustalono, że problem wynikał z manualnego sprawdzania płatności przez pracowników. Zespół zaproponował wdrożenie automatyzacji weryfikacji płatności za pomocą integracji z systemem płatności zewnętrznych. Dodatkowo wprowadzono mechanizm powiadamiania o błędach w czasie rzeczywistym, co pozwoliło na szybsze rozwiązywanie problemów.
Efektem warsztatu było znaczne skrócenie czasu obsługi zamówień oraz poprawa doświadczenia klientów. Firma nie tylko usprawniła swoje procesy, ale również wypracowała lepsze zrozumienie działania całego systemu, co przełożyło się na większą efektywność zespołu w kolejnych projektach.
Event Storming i Domain-Driven Design (DDD) to komplementarne podejścia, które wspólnie wspierają proces tworzenia oprogramowania zorientowanego na domenę biznesową. Warsztaty Event Stormingu stanowią fundament dla wdrożenia DDD, pomagając zrozumieć złożoność domeny i określić kluczowe elementy systemu.
Event Storming umożliwia zespołom technicznym i biznesowym wspólne modelowanie domeny w sposób wizualny i iteracyjny. Dzięki identyfikacji zdarzeń domenowych (Domain Events), komend (Commands), aktorów (Actors) i agregatów (Aggregates), uczestnicy warsztatów zyskują jasny obraz procesów zachodzących w systemie. Takie podejście sprzyja odkrywaniu Bounded Contextów – kluczowego pojęcia w DDD, które definiuje granice logiczne w domenie.
Warsztaty pozwalają także na budowanie wspólnego języka (Ubiquitous Language), który jest podstawą skutecznego projektowania systemów zgodnych z DDD. Język ten, bazujący na pojęciach domenowych, eliminuje nieporozumienia i ułatwia komunikację między zespołami technicznymi i biznesowymi.
Zdarzenia domenowe odgrywają centralną rolę w modelu domenowym. Są one zapisami kluczowych zmian w stanie systemu, wynikających z działań w domenie. W kontekście DDD zdarzenia te są używane do:
Na przykład zdarzenie „Zamówienie zostało złożone” może być używane zarówno w kontekście sprzedaży, aby rozpocząć proces weryfikacji płatności, jak i w kontekście magazynowym, aby zainicjować rezerwację towarów. Dzięki temu zdarzenia pełnią funkcję „języka” łączącego różne części systemu.
Dzięki integracji Event Stormingu z Domain-Driven Design, zespoły mogą projektować oprogramowanie w sposób, który lepiej odpowiada rzeczywistym potrzebom biznesowym, jednocześnie dbając o skalowalność i utrzymanie systemu.
Warsztaty Event Stormingu to potężne narzędzie do odkrywania i modelowania procesów, ale ich sukces zależy od właściwego podejścia i unikania typowych błędów. Oto kluczowe wskazówki i dobre praktyki, które pomogą w pełni wykorzystać potencjał tej formy współpracy.
Stosując te wskazówki i narzędzia, warsztaty Event Stormingu mogą stać się efektywnym i angażującym sposobem na zrozumienie procesów domenowych oraz optymalizację pracy zespołu.