Na trzecim spotkaniu projektu MediFlow - sieci 12 przychodni wdrażającej rejestrację online - kierownik IT i kierownik rejestracji pokłócili się o jedno zdanie: „Skierowanie trafia do systemu". Kierownik IT rozumiał to tak, że skierowanie wpada do bazy danych i tam zostaje. Kierowniczka rejestracji - że skierowanie idzie najpierw do weryfikacji w NFZ, potem do rozliczeń, a kopia wraca do pacjenta SMS-em. Tę samą frazę czytali na dwa zupełnie różne sposoby. Spór trwałby godzinami, gdyby analityk nie wstał i nie narysował tego na tablicy: prostokąt „Pacjent", kółko „Zweryfikuj skierowanie", strzałki, magazyn „Baza skierowań". Po pięciu minutach było jasne, gdzie leży nieporozumienie.
To jest cała moc Data Flow Diagrams (DFD) - diagramów przepływu danych. Nie pokazują, jak coś jest zbudowane (od tego są diagramy UML), tylko co dzieje się z danymi: skąd przychodzą, co je przetwarza, gdzie się zatrzymują i dokąd trafiają. To mapa drogowa informacji w systemie. W tym artykule pokażę Ci cztery elementy, z których składa się każdy DFD, trzy poziomy szczegółowości (0, 1, 2), pełny przykład krok po kroku na systemie MediFlow oraz błędy, które robią początkujący.
Cztery elementy DFD - alfabet diagramu
DFD ma tylko cztery symbole. To zaleta, nie ograniczenie - dzięki temu rozumie go nawet interesariusz, który widzi diagram pierwszy raz w życiu.
| Element | Co oznacza | Symbol | Przykład z MediFlow |
|---|---|---|---|
| Encja zewnętrzna (external entity) | Źródło lub odbiorca danych spoza systemu - człowiek lub inny system | Prostokąt | Pacjent, Lekarz, System NFZ (eWUŚ) |
| Proces (process) | Czynność, która przekształca dane wejściowe w wyjściowe | Kółko lub prostokąt z zaokrąglonymi rogami | Zweryfikuj skierowanie, Zarezerwuj slot, Wyślij potwierdzenie |
| Magazyn danych (data store) | Miejsce, gdzie dane spoczywają - baza, plik, rejestr | Dwie równoległe linie (lub otwarty prostokąt) | Baza pacjentów, Grafik lekarzy, Rejestr wizyt |
| Przepływ danych (data flow) | Ruch konkretnej porcji danych między elementami | Strzałka z etykietą | Dane rezerwacji, Potwierdzenie wizyty, Status uprawnień |
Najważniejsza zasada, o której zaraz przypomnę przy błędach: każdy przepływ ma nazwę rzeczownikową (co płynie), a każdy proces ma nazwę czasownikową (co robi). „Dane rezerwacji" to przepływ. „Zarezerwuj slot" to proces. Nigdy odwrotnie.
Poziomy DFD: od ogółu do szczegółu
Nie rysuje się jednego ogromnego diagramu. DFD buduje się warstwami - od lotu ptaka po szczegół. To pozwala rozmawiać z każdym interesariuszem na odpowiednim poziomie: z zarządem o poziomie 0, z deweloperem o poziomie 2.
Poziom 0 - diagram kontekstowy
System jako jeden proces (jedno kółko) i jego encje zewnętrzne dookoła. Pokazuje granice systemu: co jest w środku, co na zewnątrz, jakie dane przekraczają tę granicę. To zdjęcie satelitarne - widać miasto i drogi do niego, nie widać ulic. Encja typu „System NFZ/eWUŚ" prędzej czy później zamienia się w konkretną integrację - co wtedy trzeba ustalić, opisuję w tekście o REST API od strony analityka.
MediFlow, poziom 0: jeden proces „System rejestracji MediFlow". Wokół encje: Pacjent (wysyła: dane rezerwacji; odbiera: potwierdzenie), Lekarz (wysyła: dostępność grafiku; odbiera: lista wizyt), System NFZ/eWUŚ (odbiera: zapytanie o uprawnienia; wysyła: status uprawnień).
Poziom 1 - główne procesy
Ten jeden proces z poziomu 0 rozbija się na kilka głównych procesów (zwykle 3-7) i pojawiają się magazyny danych. To mapa miasta z dzielnicami i głównymi ulicami.
MediFlow, poziom 1 rozbija system na: 1. Uwierzytelnij pacjenta, 2. Wyszukaj dostępne sloty, 3. Zweryfikuj uprawnienia NFZ, 4. Zarezerwuj wizytę, 5. Wyślij potwierdzenie. Magazyny: Baza pacjentów, Grafik lekarzy, Rejestr wizyt.
Poziom 2 - rozwinięcie wybranego procesu
Bierzesz jeden proces z poziomu 1 i rozkładasz go na podprocesy. Nie rozwijasz wszystkich - tylko te, które są na tyle złożone, że wymagają zoomu. To plan jednej dzielnicy z budynkami.
MediFlow, poziom 2 dla procesu „3. Zweryfikuj uprawnienia NFZ": 3.1 Pobierz PESEL z danych rezerwacji, 3.2 Wyślij zapytanie do eWUŚ, 3.3 Zinterpretuj odpowiedź, 3.4 Oznacz wizytę jako refundowaną lub komercyjną. Przy braku odpowiedzi z eWUŚ - przepływ do podprocesu „Oznacz do ręcznej weryfikacji".
W praktyce 2-3 poziomy wystarczają dla większości systemów. Schodzenie głębiej rzadko ma sens - diagram staje się drobiazgowy i traci funkcję komunikacyjną.
Zasada równowagi - najważniejsza reguła spójności
Tu kryje się błąd, który psuje większość amatorskich DFD. Obowiązuje zasada równowagi (balancing): przepływy wchodzące i wychodzące z procesu na poziomie wyższym muszą się zgadzać z przepływami na jego rozwinięciu poziom niżej.
Jeśli na poziomie 1 do procesu „Zweryfikuj uprawnienia NFZ" wchodzi „dane rezerwacji", a wychodzi „status uprawnień", to na poziomie 2 te same dwa przepływy muszą przekraczać granicę rozwiniętego diagramu - ani jednego więcej, ani jednego mniej. Jeśli nagle na poziomie 2 pojawia się przepływ, który znikąd przychodzi i nigdzie z poziomu 1 nie wynika, masz niespójność. Diagramy „nie domykają się".
Jak narysować DFD krok po kroku
- Wyznacz granice systemu. Co jest w środku, co na zewnątrz? W MediFlow rezerwacja i weryfikacja NFZ są w środku, ale fizyczna wizyta u lekarza i sama usługa NFZ - na zewnątrz.
- Zidentyfikuj encje zewnętrzne. Kto/co dostarcza dane i kto/co je odbiera. Pacjent, Lekarz, NFZ.
- Narysuj poziom 0. Jeden proces, encje dookoła, nazwane przepływy między nimi.
- Wyłoń główne procesy i magazyny. Zapytaj: jakie główne czynności dzieją się z danymi? Gdzie dane spoczywają?
- Narysuj poziom 1. Rozbij jeden proces na kilka, podłącz magazyny, zachowaj zgodność przepływów z poziomem 0.
- Rozwiń złożone procesy na poziomie 2. Tylko te, które tego potrzebują. Pilnuj zasady równowagi.
- Zweryfikuj. Sprawdź, czy każdy proces ma wejście i wyjście (proces bez wejścia to „cud", bez wyjścia to „czarna dziura"), czy magazyny mają i zapis, i odczyt, czy nazwy są jednoznaczne. Poproś interesariusza o przeczytanie diagramu na głos.
Do narysowania nie potrzebujesz drogiego narzędzia. Zacznij od tablicy i karteczek - najszybciej wyłapiesz nieporozumienia jak to z „skierowanie trafia do systemu". Potem przepisz do draw.io, Lucidchart lub Visio. Na platformie Analify masz wbudowany edytor diagramów, w którym możesz złożyć DFD bez instalowania niczego.
DFD a inne notacje - kiedy co
| Notacja | Co modeluje | Kiedy użyć |
|---|---|---|
| DFD | Przepływ danych: skąd-dokąd, co się z nimi dzieje | Gdy chcesz zrozumieć, jak informacja krąży w systemie i gdzie są wąskie gardła danych |
| BPMN | Przepływ procesu biznesowego: kto, w jakiej kolejności, z bramkami decyzyjnymi | Gdy modelujesz proces z udziałem ludzi, ról, decyzji i zdarzeń |
| Diagram klas UML | Strukturę danych: klasy, atrybuty, relacje | Gdy projektujesz model dziedziny dla deweloperów |
| ERD | Strukturę bazy danych: encje, atrybuty, klucze, kardynalność | Gdy projektujesz schemat bazy |
W praktyce te notacje się uzupełniają. DFD pokazuje, że „dane rezerwacji" płyną do procesu, a diagram ERD pokazuje, z jakich pól ta rezerwacja się składa i jak łączy się z pacjentem. Z kolei jeśli interesuje Cię kolejność czynności i kto je wykonuje, sięgnij po BPMN. DFD i BPMN bywają mylone, bo oba mają strzałki - ale BPMN śledzi proces, a DFD śledzi dane.
Częste błędy przy tworzeniu DFD
- Mylenie przepływu danych z przepływem sterowania. DFD pokazuje, jakie dane płyną, a nie „co dzieje się najpierw". Strzałka „pacjent klika przycisk" jest błędna - to akcja, nie dane. Poprawnie: „dane rezerwacji".
- Proces-cud i proces-czarna dziura. Proces, który ma wyjście, ale nie ma wejścia (skąd wziął dane?), albo wejście bez wyjścia (gdzie zniknęły?). Każdy proces przekształca coś w coś.
- Magazyn bez zapisu albo bez odczytu. Jeśli do magazynu nic nie wpływa, skąd wzięły się dane? Jeśli nic nie wypływa - po co ten magazyn istnieje?
- Przepływ danych prosto z encji do magazynu. Dane z encji zewnętrznej muszą przejść przez proces, zanim trafią do magazynu - ktoś musi je przyjąć i zwalidować. Strzałka „Pacjent → Baza pacjentów" z pominięciem procesu to częsty błąd.
- Złamana zasada równowagi. Przepływy na poziomie 2 nie zgadzają się z poziomem 1. Diagramy przestają tworzyć spójną całość.
- Nadmiar szczegółu. Diagram z czterdziestoma elementami, którego nikt nie ogarnia. Jeśli nie mieści się na jednym ekranie i nie da się go opowiedzieć w minutę - zejdź poziom wyżej albo podziel.
- Niejednoznaczne nazwy. Przepływ „XDR" albo proces „Obsłuż". Co obsłuż? Nazwy muszą być zrozumiałe dla osoby spoza zespołu.
FAQ - Data Flow Diagrams
Czym różni się DFD od BPMN?
DFD modeluje przepływ danych - co dzieje się z informacją, skąd przychodzi i dokąd trafia. BPMN modeluje przepływ procesu - kolejność czynności, role wykonawców, decyzje i zdarzenia. DFD odpowiada na pytanie „gdzie płyną dane", BPMN na „kto, co i w jakiej kolejności robi".
Ile poziomów DFD powinienem narysować?
Najczęściej 2-3: poziom 0 (kontekst), poziom 1 (główne procesy), poziom 2 (rozwinięcie najbardziej złożonych procesów). Schodzenie głębiej zwykle nie ma sensu - diagram traci czytelność i funkcję komunikacyjną.
Co to jest zasada równowagi (balancing) w DFD?
To reguła spójności: przepływy danych wchodzące i wychodzące z procesu na poziomie wyższym muszą dokładnie odpowiadać przepływom przekraczającym granicę jego rozwinięcia na poziomie niższym. Dzięki temu diagramy z różnych poziomów tworzą spójną całość.
Czy DFD nadaje się do projektów zwinnych?
Tak, jako lekkie narzędzie komunikacyjne. Nie musisz tworzyć kompletnej, wielopoziomowej dokumentacji - często wystarczy szybki DFD na tablicy, by wyjaśnić zespołowi, jak dane krążą w jednej funkcji. Wartość tkwi w rozmowie, którą diagram wywołuje, nie w samym pliku.
Jakim narzędziem narysować DFD?
Na start - kartka lub tablica z karteczkami. Do wersji cyfrowej: draw.io (darmowe), Lucidchart, Microsoft Visio, lub wbudowany edytor diagramów na platformie Analify. Narzędzie jest drugorzędne - liczy się poprawność elementów i spójność poziomów.
Podsumowanie
Data Flow Diagram to jedno z najprostszych, a zarazem najpotężniejszych narzędzi analityka. Cztery symbole, trzy poziomy szczegółowości i jedna żelazna zasada równowagi - to wszystko, czego potrzebujesz, żeby zamienić mglistą frazę „dane trafiają do systemu" w jednoznaczny obraz, na który wszyscy patrzą tak samo.
DFD nie zastępuje innych notacji - współpracuje z nimi. Pokazuje, gdzie płyną dane, podczas gdy BPMN śledzi proces, a ERD opisuje strukturę. Najlepsi analitycy dobierają notację do pytania, na które właśnie odpowiadają.
Chcesz przećwiczyć modelowanie na realnym przypadku? Złóż DFD systemu rejestracji w edytorze diagramów na platformie Analify, a potem zestaw go z diagramem ERD tej samej dziedziny - zobaczysz, jak dwie notacje opowiadają tę samą historię z różnych stron.