fbpx

Event Storming co to jest?

Event Storming co to jest?

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.

Główne cele Event Stormingu

Event Storming ma wiele celów, ale można je podzielić na kilka głównych kategorii. Oto najważniejsze z nich:

  1. Tworzenie big picture
    Głównym celem jest wizualizacja pełnego obrazu działania systemu lub procesu biznesowego, co pozwala na identyfikację zależności, problemów i obszarów do poprawy.
  2. Łączenie wiedzy technicznej i biznesowej
    Warsztaty mają na celu ułatwienie współpracy między zespołami technicznymi i biznesowymi poprzez stworzenie wspólnego języka i kontekstu.
  3. Identyfikacja problemów i wąskich gardeł
    Event Storming pomaga zauważyć słabe punkty systemu, nieefektywności oraz potencjalne błędy, które mogą negatywnie wpływać na działanie procesów.
  4. Usprawnienie komunikacji w zespole
    Metoda ta sprzyja wymianie wiedzy i pomysłów między różnymi działami, co prowadzi do lepszego zrozumienia problemów i skuteczniejszego ich rozwiązywania.
  5. Budowanie fundamentów pod Domain-Driven Design (DDD)
    Event Storming umożliwia identyfikację zdarzeń domenowych, które stanowią podstawę do dalszego projektowania systemu zgodnie z zasadami DDD.

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.

Na czym polega Event Storming?

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.

Event Storming warsztaty

Jak przebiegają warsztaty?

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.

Rozwój analizy podczas warsztatów

Zdarzenia domenowe stanowią punkt wyjścia do dalszej analizy procesów i identyfikacji kluczowych elementów systemu:

  • Komendy (Commands): Są to działania, które wywołują określone zdarzenia, np. „Utwórz konto użytkownika”. Uczestnicy zastanawiają się, co musi się wydarzyć, aby wywołać dane zdarzenie, i identyfikują źródło komendy.
  • Aktorzy (Actors): To osoby lub systemy odpowiedzialne za wywołanie komend, np. użytkownik rejestrujący swoje konto lub zewnętrzny system generujący dane.
  • Agregaty (Aggregates): Na dalszym etapie warsztatu powiązane elementy są grupowane, co pozwala na wyodrębnienie kluczowych jednostek logicznych w systemie, takich jak agregaty.

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.

Event Storming podstawy

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.

Kto bierze udział?

W warsztatach Event Stormingu zazwyczaj uczestniczą trzy główne grupy osób:

  1. Eksperci techniczni
    To osoby odpowiedzialne za tworzenie i utrzymanie oprogramowania, takie jak programiści, analitycy systemowi, architekci, a także właściciele produktu (Product Owners). Ich zadaniem jest wniesienie wiedzy na temat technicznej strony systemu, propozycje rozwiązań oraz analizowanie technicznych konsekwencji zidentyfikowanych zdarzeń.
  2. Eksperci domenowi
    To przedstawiciele klienta lub biznesu, którzy najlepiej rozumieją procesy zachodzące w domenie. Mogą to być menedżerowie operacyjni, specjaliści w danym obszarze biznesowym, czy osoby odpowiedzialne za strategię. Wnoszą oni szczegółową wiedzę o procesach, interakcjach oraz wymaganiach biznesowych.
  3. Facilitator
    To osoba zaznajomiona z techniką Event Stormingu, która prowadzi warsztaty, moderuje dyskusje i pilnuje ich efektywnego przebiegu. Facilitator zapewnia, że wszyscy uczestnicy są zaangażowani i mają możliwość wypowiedzenia się, a jednocześnie kieruje warsztatami w taki sposób, aby osiągnąć zakładane cele.

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.

Cele Event Stormingu. Co daje nam Event Storming?

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.

Jak rozpocząć warsztat Event Stormingu?

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.

Krok 1: Zdarzenia domenowe

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.

Krok 2: Komendy

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.

Krok 3: Aktorzy

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ń.

Krok 4: Agregaty

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.

Krok 5: Bounded Context

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.

Widok końcowy

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.

Przykład praktycznego zastosowania Event Stormingu

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 a Domain-Driven Design

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.

Jak Event Storming wspiera DDD?

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.

Rola zdarzeń w kontekście modelu domenowego

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:

  • definiowania zachowania systemu,
  • identyfikowania zależności między różnymi elementami domeny,
  • projektowania komunikacji między Bounded Contextami.

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.

Przykłady wykorzystania wyników warsztatów w procesie projektowania systemu

  1. Tworzenie modeli domenowych
    Wyniki warsztatów Event Stormingu, takie jak zidentyfikowane zdarzenia, komendy, aktorzy i agregaty, są bezpośrednio wykorzystywane w procesie tworzenia modelu domenowego. Agregaty stają się klasami w kodzie, a komendy i zdarzenia są podstawą implementacji logiki biznesowej.
  2. Wyznaczanie granic Bounded Contextów
    Zidentyfikowane podczas warsztatów zależności i powiązania między zdarzeniami pomagają określić, które elementy domeny należą do tego samego kontekstu. Na przykład w domenie e-commerce procesy sprzedaży, płatności i magazynowania mogą zostać rozdzielone na odrębne Bounded Contexty, co ułatwia zarządzanie złożonością systemu.
  3. Projektowanie mikroserwisów
    W środowiskach zorientowanych na mikroserwisy zdarzenia domenowe zidentyfikowane podczas Event Stormingu pomagają określić granice serwisów oraz sposób ich komunikacji. Na przykład zdarzenie „Zamówienie zostało opłacone” może wywoływać różne akcje w serwisach obsługujących wysyłkę i fakturowanie.
  4. Poprawa istniejących systemów
    Warsztaty Event Stormingu można wykorzystać do analizy istniejących systemów w celu lepszego zrozumienia ich działania, identyfikacji problemów i usprawnienia ich architektury zgodnie z zasadami DDD.

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.

Event Storming wskazówki i dobre praktyki

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.

Jak unikać najczęstszych błędów podczas warsztatów?

  1. Unikaj zbyt dużych grup uczestników: Warsztaty zbyt liczne mogą stać się chaotyczne i trudne do moderowania. Optymalna liczba uczestników to około 5-10 osób.
  2. Nie wchodź zbyt wcześnie w szczegóły techniczne: Skupianie się na implementacji lub dyskusji o kodzie może odciągnąć uwagę od głównego celu – modelowania procesów biznesowych.
  3. Dbaj o odpowiednią reprezentację domenową: Upewnij się, że w warsztatach biorą udział zarówno eksperci techniczni, jak i biznesowi. Brak którejś z tych grup może prowadzić do niepełnego modelu.
  4. Nie ignoruj konfliktów lub różnic w zrozumieniu domeny: Warsztaty są doskonałą okazją do wyjaśnienia niejasności i rozwiewania wątpliwości. Nie należy unikać trudnych pytań.

Co robić, aby warsztaty były efektywne?

  1. Przygotuj przestrzeń i materiały: Upewnij się, że masz dużą powierzchnię roboczą (tablica, ściana, papier elektrostatyczny) oraz wystarczającą ilość kolorowych karteczek i markerów.
  2. Zdefiniuj jasny cel warsztatu: Na początku spotkania poinformuj uczestników, co chcesz osiągnąć (np. identyfikacja zdarzeń domenowych, optymalizacja konkretnego procesu).
  3. Ustal rolę facylitatora: Facylitator powinien moderować dyskusje, pilnować agendy i zapewnić, że wszyscy uczestnicy są zaangażowani.
  4. Dbaj o dynamikę warsztatu: Praca na stojąco sprzyja aktywności i zaangażowaniu uczestników. Regularne przerwy pomagają utrzymać skupienie.
  5. Weryfikuj wyniki w czasie rzeczywistym: Po ukończeniu każdego etapu (np. identyfikacji zdarzeń) weryfikuj wyniki z uczestnikami, aby upewnić się, że są zgodne z rzeczywistością domenową.

Narzędzia wspierające Event Storming

  1. Tablice i karteczki: Tradycyjne narzędzia, takie jak tablice suchościeralne, papier elektrostatyczny i kolorowe karteczki, są niezastąpione podczas warsztatów w biurze.
  2. Oprogramowanie online: W przypadku zdalnych warsztatów świetnie sprawdzają się narzędzia takie jak:
    • Miro: Umożliwia tworzenie cyfrowych tablic z karteczkami w czasie rzeczywistym.
    • MURAL: Alternatywa dla Miro, idealna do współpracy z dużymi zespołami.
    • Lucidchart: Narzędzie do tworzenia diagramów i wizualizacji procesów.
  3. Kamery i mikrofony wysokiej jakości: Przy zdalnych warsztatach ważne jest, aby zapewnić płynną komunikację między uczestnikami.
  4. Szablony Event Stormingu: Dostępne w Miro lub MURAL gotowe szablony mogą przyspieszyć rozpoczęcie 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.

Event Storming lista zasobów

Narzędzia online wykorzystywane w warsztatach:

  • Miro: Narzędzie do zdalnych warsztatów z szablonami Event Stormingu.
  • MURAL: Alternatywa dla Miro, przyjazna dla zespołów pracujących na odległość.
  • Lucidchart: Narzędzie do tworzenia diagramów i wizualizacji zidentyfikowanych procesów.

Bibliografia

  • Brandolini, A. (2013). Introducing Event Storming.
  • Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software.
  • Vernon, V. (2013). Implementing Domain-Driven Design.
  • Maziarka, R. (2018). Na czym polega Event Storming? Wprowadzenie dla początkujących.
  • Bartyzel, M. (2017). Event Storming: Dlaczego zdarzenia są ważne?.