Ścisła współpraca programistów z klientem zlecającym projekt umożliwia stworzenie najbardziej dopasowanego oprogramowania. Klient przedstawia oczekiwania do projektu, a firma programistyczna może zaproponować optymalne rozwiązania dla danego modelu biznesowego. Takie podejście umożliwia wzajemne zrozumienie obu stron oraz jasne przedstawienie oczekiwań klienta i możliwości technicznych po stronie firmy programistycznej. Jednym ze sposobów na taką współpracę jest projektowanie oparte na domenie, czyli Domain-Driven Design. Czym jest DDD? Jak zorganizować warsztat event storming, który umożliwi zastosowanie DDD? Odpowiedzi znajdziesz w artykule.
Domain-Driven Design, czyli w skrócie DDD to podejście do tworzenia oprogramowania ze szczególnym naciskiem na potrzeby biznesu i jego specyfikę. Proces projektowania systemów i aplikacji opiera się na dokładnej analizie wymagań klienta lub użytkownika końcowego. Model domenowy (czyli DDD) znajduje zastosowanie w większych, bardziej skomplikowanych projektach informatycznych.
Na czym polega Domain-Driven Design? Dla uzyskania najlepszych efektów podejście DDD zakłada ścisłą współpracę programistów z osobami związanymi z biznesem (tzw. ekspertami domenowymi). Obie strony będące specjalistami w swojej dziedzinie są zobowiązani do unikania trudnego, często niezrozumiałego słownictwa branżowego. Eksperci techniczni oraz przedstawiciele obsługiwanej branży powinni wypracować wspólny język (ubiquitous language), zrozumiały dla wszystkich uczestników projektu.
Domain-Driven Design programowanie systemu
W podejściu DDD prace należy rozpocząć od stworzenia tzw. modelu domeny. Innymi słowy, chodzi tutaj o zdefiniowanie głównych funkcji, zadań i celów oprogramowania. Gdy został już ustalony zarys systemu, kolejnym krokiem jest podzielenie projektu na części, czyli właśnie domeny.
DDD to projektowanie oparte na domenie. Osoby reprezentujące biznes, dla którego powstaje system, przekazują niezbędne informacje, aby niezwiązany z branżą zespół deweloperski mógł stworzyć jak najlepsze rozwiązanie. Zespół deweloperski oraz eksperci domenowi ściśle ze sobą współpracują w trakcie prac nad każdą domeną.
Zorganizowanie warsztatu event storming jest najlepszą drogą do zastosowania podejścia DDD w realizowanych projektach. Warsztat event storming zakłada spotkanie ekspertów domenowych (czyli osoby znające branżę, dla której powstaje system) z firmą programistyczną (czyli techniczną stroną projektu). Czym dokładnie jest event storming?
Event storming to metoda warsztatowa pomagająca w zrozumieniu potrzeb i wymagań konkretnej branży podczas tworzenia oprogramowania. Programiści pracujący nad technicznymi aspektami mogą podpowiedzieć lepsze rozwiązania w momencie, gdy rozumieją specyfikę branży, dla której tworzą program lub system. Według ogólnej definicji event storming to jedna z metod analizy projektu, przy jednoczesnym określeniu potrzeb klientów. Sprawdza się podczas tworzenia, ale też rozwijania oprogramowania.
Event storming to metoda warsztatowa, w której biorą udział eksperci techniczni, eksperci domenowi oraz osoba czuwająca nad sprawnym przebiegiem warsztatu (tzw. facilitator). Stroną techniczną są przedstawiciele IT, czyli programiści. Eksperci domenowi to strona biznesowa, czyli przedstawiciele firmy zlecającej wykonanie systemu. Spotkanie obu stron pomoże zrozumieć sposób działania aplikacji od strony technicznej (osobom z branży) oraz specyfiki branży dla programistów.
Uczestnicy warsztatu event stormingu są dobierani w taki sposób, aby podczas spotkania można było podjąć kluczowe decyzje. Metoda warsztatowa pozwala spojrzeć na dany produkt z różnych perspektyw. Każdy z uczestników ma możliwość podzielenia się swoim punktem widzenia oraz wyzwaniami i zagrożeniami, które mogą pojawić się w trakcie działania programu.
Event storming to metoda warsztatu, której przebieg można indywidualnie dobierać do tworzonego produktu. Ustalając kroki, należy przemyśleć tworzone oprogramowanie pod kątem jego wielkości i złożoności. Zazwyczaj wszystkie elementy tworzonego systemu, w tym funkcjonalności i zdarzenia, uczestnicy warsztatów zapisują na kolorowych karteczkach i umieszczają na tablicy. Dzięki temu każdy z uczestników ma wgląd do zapisanych notatek oraz ułatwia to pogrupowanie zadań w kolejnych etapach projektowania modelu. Jakie są kroki przeprowadzenia event stormingu?
Na początku warsztatów kluczowe jest określenie celu spotkania. Pierwsze spotkanie może wiązać się z koniecznością zdefiniowania modelu domeny, czyli określeniu zakresu i szacowanego czasu wdrożenia. W innym przypadku będzie to ustalenie kolejnych etapów prac realizowanego przedsięwzięcia lub elementów, które mają być poprawione w działającej aplikacji.
Uczestnicy spotkania muszą określić wszystkie zdarzenia (domain events) z punktu widzenia osób zlecających utworzenie aplikacji, strony lub systemu. Na tym etapie należy określić wszystkie zadania w projekcie. Najlepiej przejść przez cały proces działania programu i krok po kroku zapisywać zdarzenia. Określenie zdarzeń pomoże zrozumieć, jak ma działać system już na etapie projektowania oprogramowania.
Zdarzenia dotyczące tworzenia sklepu internetowego mogą dotyczyć zakładania przez użytkownika konta, dodawanie produktów do koszyka, generowanie i wysyłanie faktury do klienta. W przypadku wewnętrznego systemu może to być nadanie uprawnień użytkownikom, rozdzielanie zadań między działami, sposób komunikacji czy sposób pracy z dokumentami magazynowymi.
Na tym etapie należy dokładnie określić, co zrobi użytkownik w praktyce, żeby wywołać zdarzenie. Na przykładzie sklepu internetowego - aby otworzyła się bramka płatności, klient musi w koszyku kliknąć polecenie realizacji zamówienia. Zebranie takich informacji podczas warsztatu umożliwi prześledzenie drogi użytkownika oraz już na etapie planowania i projektowania pozwoli dostrzec miejsc, gdzie mogą pojawić się błędy lub trudności.
Kolejnym krokiem jest powiązanie zdarzeń w konkretne grupy zadań do zrealizowania przez firmę programistyczną. Dzięki temu prace będą jasno określone, a samo oprogramowanie powstanie szybciej.