1. Wprowadzenie do diagramów przepływu danych
Diagram przepływu danych (DFD) to graficzna reprezentacja sposobu, w jaki dane przemieszczają się przez system informacyjny. Pokazuje:
- Skąd pochodzą dane i dokąd są kierowane
- Jak dane są przetwarzane
- Gdzie dane są przechowywane
- Kto lub co oddziałuje z systemem

2. Kluczowe pojęcia
Podstawowe elementy
| Element | Symbol | Znaczenie |
|---|---|---|
| Podmiot zewnętrzny | Prostokąt | Osoba, organizacja lub system wysyłający/odbierający dane |
| Proces | Koło/Elipsa | Przekształca dane przychodzące w dane wychodzące |
| Magazyn danych | Otwarty prostokąt | Magazyn do trwałego przechowywania danych |
| Przepływ danych | Strzałka | Pokazuje kierunek przepływu danych |
Poziomy DFD
- Diagram kontekstowy (Poziom 0): Najwyższy poziom, pokazuje granice systemu i główne podmioty zewnętrzne
- Poziom 1: Rozkłada główny proces na główne podprocesy
- Poziom 2+: Dalsza dekompozycja pokazująca szczegółowe procesy
3. DFD logiczne vs DFD fizyczne
DFD logiczne

A DFD logiczne (zwany również „modelem podstawowym”) koncentruje się na:
- CO robi system
- Działania biznesowe i wymagania informacyjne
- Niezależny od technologii implementacji
Cechy:
- Pokazuje operacje i procesy biznesowe
- Brak szczegółów specyficznych dla technologii
- Bardziej abstrakcyjne i skupione na użytkowniku
- Pomaga zrozumieć wymagania biznesowe
DFD fizyczne

A DFD fizyczne (zwany również „modelem implementacji”) koncentruje się na:
- JAK system zostanie zaimplementowany
- Szczegóły techniczne i ograniczenia
- Konkretne technologie i systemy
Cechy:
- Pokazuje rzeczywisty sprzęt, oprogramowanie i ludzi
- Zawiera szczegóły implementacji
- Bardziej konkretne i skupione na deweloperach
- Pomaga w projektowaniu i wdrażaniu systemu
Tabela porównawcza
| Aspekt | Logiczny diagram przepływu danych | Fizyczny diagram przepływu danych |
|---|---|---|
| Skupienie | Potrzeby biznesowe | Wdrożenie |
| Kto | Analitycy biznesowi, użytkownicy | Projektanci systemów, programiści |
| Poziom | Wysokopoziomowy, abstrakcyjny | Szczegółowy, konkretny |
| Komponenty | Procesy biznesowe | Procesy techniczne |
| Zbiory danych | Entitie koncepcyjne | Pliki/fizyczne bazy danych |
| Entitety | Role biznesowe | Rzeczywiste systemy/urządzenia |
4. Komponenty diagramu przepływu danych

Entitety zewnętrzne
- Źródła i miejsca przeznaczenia danych
- Poza granicami systemu
- Nazwane rzeczownikami
Procesy
- Przekształcają dane z wejścia na wyjście
- Nazwane czasownikiem + rzeczownikiem
- Oznaczone numerami identyfikacyjnymi
Zbiory danych
- Trwałe repozytoria danych
- Nazwane rzeczownikami
- Numeracja D1, D2, D3…
Przepływy danych
- Pokazują ruch danych
- Nazwane opisowymi etykietami
- Kierunek wskazuje przepływ
5. Przykłady praktyczne z użyciem Graphviz
Przykład 1: System zarządzania hotelem (logiczny DFD)

digraph HotelMIS_DFD_Logical {
// --- GRAPH STYLE ---
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.6
ranksep = 1.0
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- NODE STYLES ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// External Entities
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Guest;
Staff;
// --- SYSTEM BOUNDARY ---
subgraph cluster_SystemBoundary {
label = "Hotel MIS System Boundary";
fontname = "Helvetica,Arial,sans-serif";
fontcolor = "#757575";
fontsize = 14;
color = "#757575";
style = "dashed,rounded";
bgcolor = "#FAFAFA";
margin = 20;
// Processes
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.3]
P1 [label="1.0nManagenReservations"];
P2 [label="2.0nCheck-In/nOut"];
P3 [label="3.0nManagenInventory"];
// Data Stores
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
ReservationsDS [label="{ <id> D1 | ReservationsnDatabase }"];
RoomsDS [label="{ <id> D2 | Room StatusnDatabase }"];
InventoryDS [label="{ <id> D3 | InventorynDatabase }"];
}
// --- EDGE STYLES ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- DATA FLOWS ---
// Guest Interactions
Guest -> P1 [label="Booking Request"];
P1 -> Guest [label="Confirmation"];
Guest -> P2 [label="Arrival"];
P2 -> Guest [label="Room Key/Receipt"];
// Staff Interactions
Staff -> P3 [label="Update Inventory"];
P3 -> Staff [label="Alerts/Reports"];
// Process to Data Store
P1 -> ReservationsDS [label="New Reservation"];
ReservationsDS -> P1 [label="Check Availability"];
P1 -> RoomsDS [label="Room Details Request"];
RoomsDS -> P1 [label="Available Rooms"];
P2 -> RoomsDS [label="Room Status Update"];
RoomsDS -> P2 [label="Room Information"];
P2 -> P3 [label="Stay Details"];
P3 -> InventoryDS [label="Stock Update"];
InventoryDS -> P3 [label="Stock Levels"];
} Przykład 2: Logiczny DFD – System zarządzania biblioteką

digraph LibrarySystem_Logical {
// --- GRAPH STYLE ---
graph [
rankdir = TB
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- NODE STYLES ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// External Entities
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Member;
Librarian;
// --- SYSTEM BOUNDARY ---
subgraph cluster_LibrarySystem {
label = "Library System (Logical)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Processes
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nManagenCatalog"];
P2 [label="2.0nProcessnBorrowing"];
P3 [label="3.0nHandlenReturns"];
// Data Stores
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
CatalogDS [label="{ <id> D1 | BooknCatalog }"];
TransactionsDS [label="{ <id> D2 | BorrowingnRecords }"];
MemberDS [label="{ <id> D3 | MembernDatabase }"];
}
// --- EDGE STYLES ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- DATA FLOWS ---
// Member Interactions
Member -> P1 [label="Search Books"];
P1 -> Member [label="Search Results"];
Member -> P2 [label="Borrow Request"];
P2 -> Member [label="Borrow Confirmation"];
Member -> P3 [label="Return Books"];
P3 -> Member [label="Return Receipt"];
// Librarian Interactions
Librarian -> P1 [label="Add/Update Books"];
P1 -> Librarian [label="Catalog Update Confirmation"];
Librarian -> P3 [label="Process Overdue"];
P3 -> Librarian [label="Overdue Report"];
// Data Flows
P1 -> CatalogDS [label="Book Updates"];
CatalogDS -> P1 [label="Catalog Data"];
P2 -> CatalogDS [label="Check Availability"];
CatalogDS -> P2 [label="Book Status"];
P2 -> MemberDS [label="Check Member Status"];
MemberDS -> P2 [label="Member Info"];
P2 -> TransactionsDS [label="Create Borrow Record"];
TransactionsDS -> P2 [label="Borrowing History"];
P3 -> TransactionsDS [label="Update Return"];
TransactionsDS -> P3 [label="Borrow Records"];
P3 -> MemberDS [label="Update Member Status"];
MemberDS -> P3 [label="Member Info"];
} Przykład 3: Fizyczny DFD – System zarządzania biblioteką

digraph LibrarySystem_Physical {
// --- GRAPH STYLE ---
graph [
rankdir = TB
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- NODE STYLES ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// External Entities (Physical)
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
"Library Member" [label="LibrarynMember"];
"Librarian" [label="LibrariannStaff"];
"Email System" [label="EmailnSystem"];
"Payment Gateway" [label="PaymentnGateway"];
// --- SYSTEM BOUNDARY ---
subgraph cluster_LibrarySystem_Physical {
label = "Library Management System (Physical Implementation)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Physical Processes (with technology details)
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nWeb Catalogn(HTML, JS)"];
P2 [label="2.0nBorrowingnAPIn(Python/REST)"];
P3 [label="3.0nReturnnProcessorn(Java)"];
// Physical Data Stores (with technology details)
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
CatalogDS [label="{ <id> D1 | PostgreSQLnBook Catalog }"];
TransactionsDS [label="{ <id> D2 | MongoDBnBorrow Records }"];
MemberDS [label="{ <id> D3 | OraclenMember DB }"];
// Additional physical components
node [shape = box, style = "filled", fillcolor = "#F3E5F5", color = "#8E24AA"]
"Cache Server" [label="RedisnCache"];
"Message Queue" [label="RabbitMQnQueue"];
}
// --- EDGE STYLES ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- DATA FLOWS (Physical) ---
// Physical Member Interactions
"Library Member" -> P1 [label="HTTP GETnBook Search"];
P1 -> "Library Member" [label="HTML/JSONnResults"];
"Library Member" -> P2 [label="REST APInBorrow Request"];
P2 -> "Library Member" [label="JSONnConfirmation"];
"Library Member" -> P3 [label="REST APInReturn"];
P3 -> "Library Member" [label="JSONnReceipt"];
// Physical Librarian Interactions
"Librarian" -> P1 [label="HTTPSnCatalog Mgmt"];
P1 -> "Librarian" [label="HTMLnConfirmation"];
"Librarian" -> P3 [label="REST APInOverdue Process"];
P3 -> "Librarian" [label="PDF Report"];
// External System Interactions
P2 -> "Email System" [label="SMTPnNotification"];
P3 -> "Payment Gateway" [label="HTTPSnFine Payment"];
// Data Flows (Physical)
P1 -> CatalogDS [label="SQL UPDATE"];
CatalogDS -> P1 [label="SQL SELECT"];
P1 -> "Cache Server" [label="Cache Update"];
"Cache Server" -> P1 [label="Cache Hit"];
P2 -> CatalogDS [label="SQL SELECT"];
CatalogDS -> P2 [label="SQL RESULT"];
P2 -> MemberDS [label="SQL SELECT"];
MemberDS -> P2 [label="SQL RESULT"];
P2 -> TransactionsDS [label="INSERT"];
TransactionsDS -> P2 [label="SELECT"];
P2 -> "Message Queue" [label="PublishnBorrow Event"];
P3 -> TransactionsDS [label="UPDATE"];
TransactionsDS -> P3 [label="SELECT"];
P3 -> MemberDS [label="UPDATE"];
MemberDS -> P3 [label="SELECT"];
P3 -> "Message Queue" [label="PublishnReturn Event"];
} Przykład 4: Obsługa zamówień w handlu elektronicznym (Logiczny DFD)

digraph ECommerce_Logical {
// --- STYLE WYKRESU ---
graph [
rankdir = LR
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- STYLE WĘZŁÓW ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// Podmioty zewnętrzne
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Customer;
Supplier;
"Payment Processor" [label="PaymentnProcessor"];
// --- GRANICA SYSTEMU ---
subgraph cluster_ECommerce {
label = "System Handlu Elektronicznego (Logiczny)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Procesy
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nObsługanZamówienia"];
P2 [label="2.0nZarządzanienZapasami"];
P3 [label="3.0nObsługanWysyłki"];
// Magazyny danych
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
OrderDS [label="{ <id> D1 | Zamówienia }"];
InventoryDS [label="{ <id> D2 | Zapasy }"];
ShipmentDS [label="{ <id> D3 | Wysyłki }"];
}
// --- STYLE KRAWĘDZI ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- PRZEPŁYWY DANYCH ---
// Interakcje z klientem
Customer -> P1 [label="Szczegóły zamówienia"];
P1 -> Customer [label="Potwierdzenie zamówienia"];
Customer -> P3 [label="Śledzenie zamówienia"];
P3 -> Customer [label="Informacje o śledzeniu"];
// Procesor płatności
"Payment Processor" -> P1 [label="Odpowiedź płatności"];
P1 -> "Payment Processor" [label="Żądanie płatności"];
// Dostawca
Supplier -> P2 [label="Aktualizacja zapasów"];
P2 -> Supplier [label="Żądanie ponownego zamówienia"];
// Przepływy danych procesów
P1 -> OrderDS [label="Zapisz zamówienie"];
OrderDS -> P1 [label="Historia zamówień"];
P1 -> InventoryDS [label="Sprawdź zapasy"];
InventoryDS -> P1 [label="Dostępność"];
P1 -> P3 [label="Szczegóły wysyłki"];
P2 -> InventoryDS [label="Aktualizuj zapasy"];
InventoryDS -> P2 [label="Aktualne zapasy"];
P3 -> OrderDS [label="Aktualizuj status"];
OrderDS -> P3 [label="Informacje o zamówieniu"];
P3 -> ShipmentDS [label="Utwórz wysyłkę"];
ShipmentDS -> P3 [label="Szczegóły wysyłki"];
}
6. Najlepsze praktyki
Dla logicznych DFD
- Skup się na procesach biznesowych, a nie na technologii
- Używaj terminologii biznesowej zrozumiałej dla interesariuszy
- Utrzymuj procesy na spójnym poziomie abstrakcji
- Weryfikuj z użytkownikami biznesowymi pod kątem dokładności
- Pokaż wszystkie główne przepływy danych między komponentami
Dla fizycznych DFD
- Dołącz szczegóły specyficzne dla technologii
- Uwzględnij wydajność i skalowalność
- Dokumentuj interfejsy systemu wyraźnie
- Dołącz obsługę błędów i procesy odzyskiwania
- Dostosuj do rzeczywistej architektury systemu
Ogólne najlepsze praktyki
- Zacznij od diagramu kontekstowego
- Numeruj procesy hierarchicznie
- Używaj znaczących nazw dla wszystkich komponentów
- Unikaj przecinania się przepływów danych
- Regularnie weryfikuj z interesariuszami
7. Typowe błędy

Błąd 1: Mieszanie modeli logicznego i fizycznego
❌ Źle: Dodawanie nazw technologii bazodanowych w logicznym DFD
✅ Dobrze: Zachowaj logiczny DFD niezależny od technologii
Błąd 2: Brakujące przepływy danych
❌ Źle: Pokazywanie tylko jednego kierunku między encjami
✅ Dobrze: Uwzględnij przepływy dwukierunkowe tam, gdzie jest to stosowne
Błąd 3: Zbyt duża złożoność
❌ Źle: Umieszczanie 20+ procesów na jednym diagramie
✅ Dobrze: Rozłóż na wiele skoncentrowanych diagramów
Błąd 4: Nieprawidłowe oznaczanie przepływów danych
❌ Błędnie: „Dane” jako etykieta
✅ Prawidłowo: Opisowe etykiety, takie jak „Szczegóły zamówienia klienta”
Pułapka 5: Nieprawidłowe granice procesów
❌ Błędnie: Jeden proces wykonujący wiele niezwiązanych ze sobą funkcji
✅ Prawidłowo: Osobne procesy dla odrębnych funkcji
Podsumowanie
Diagramy przepływu danych (DFD) są niezbędnymi narzędziami do analizy i projektowania systemów. Zrozumienie różnicy między logicznymi a fizycznymi DFD pomaga w skutecznej komunikacji z różnymi stronami zainteresowanymi na różnych etapach cyklu życia oprogramowania.
- Logiczne DFD łączą wymagania biznesowe z rozwiązaniami technicznymi
- Fizyczne DFD kierują decyzjami dotyczącymi wdrożenia i wdrożenia
Użyj podanych przykładów jako szablonów dla własnych DFD, dostosowując je do specyficznych wymagań swojego systemu, jednocześnie przestrzegając powyższych najlepszych praktyk.
Dodatkowe zasoby
- Generator DFD Gane’a i Sarsona z wykorzystaniem AI od Visual Paradigm: Wyjaśnia, jak narzędzia AI Visual Paradigm mogą generować diagramy DFD Gane’a i Sarsona na podstawie opisów tekstowych.
- Przewodnik krok po kroku tworzenia diagramów przepływu danych z Visual Paradigm: Zawiera tutorial tworzenia DFD za pomocą narzędzia online Visual Paradigm, od rejestracji po udostępnianie.
- Jak stworzyć diagram przepływu danych (DFD)?: Przewodnik omawiający, czym jest DFD, jego cel oraz główne typy (fizyczne i logiczne).
- Przewodnik dla początkujących dotyczący diagramów DFD w stylu SSADM z Visual Paradigm Online: Wstępny przewodnik dotyczący tworzenia diagramów przepływu danych w stylu SSADM przy użyciu Visual Paradigm Online.
- Kompleksowy przewodnik po diagramach przepływu danych (DFD): Rozszyfrowywanie przepływu informacji: Przegląd DFD, szczegółowo opisujący ich elementy oraz wyjaśniający, dlaczego Visual Paradigm jest odpowiednim narzędziem do ich tworzenia.
- Opanowanie diagramów przepływu danych z Visual Paradigm: Przewodnik krok po kroku: Praktyczny przewodnik wykorzystujący przykłady i szablony do nauki tworzenia DFD, z case study takimi jak systemy zakupów online.
- Zrozumienie różnicy między DFD logicznym a fizycznym: Kiedy i dlaczego są nam potrzebne: Wyjaśnia różnice, cele i odpowiednie przypadki użycia dla diagramów przepływu danych logicznych i fizycznych.
- Przewodnik dla początkujących do diagramów przepływu danych (DFD) z Visual Paradigm Online: Przyjazny dla początkujących tutorial prowadzący przez kroki tworzenia DFD z Visual Paradigm Online.
- Archiwum DFD – Przewodniki Visual Paradigm: Kolekcja artykułów na tematy DFD, w tym generatory AI, walidacja, równoważenie i poziomy.
- Przewodnik początkującego do diagramów przepływu danych (DFD) z Visual Paradigm Online: Szczegółowo opisuje krok po kroku proces tworzenia DFD, w tym jego kluczowe komponenty i sposób używania szablonów.
- Rysuj DFD z najlepszym narzędziem DFD: Omawia graficzną reprezentację przepływu danych, szczegółowo opisuje DFD logiczne vs. fizyczne i analizuje korzyści każdego typu.
-
Przewodnik dla początkujących do diagramów przepływu danych (DFD) z Visual Paradigm Online: Przewodnik dla początkujących w języku indonezyjskim do DFD, przedstawiający komponenty i krok po kroku proces tworzenia w Visual Paradigm Online.
Ten przewodnik dostarcza podstaw do tworzenia skutecznych DFD. Pamiętaj, że dobre diagramy ewoluują poprzez iteracje i feedback od interesariuszy.
Ten post dostępny jest również w Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文












