Modelowanie wymagań ze świata rzeczywistego przy użyciu UML – Praktyczny przewodnik
1. Wstęp
We współczesnej inżynierii oprogramowania,diagramy przypadków użyciasą podstawowym narzędziem do przechwytywania wymagań funkcjonalnych z perspektywy użytkownika. Niniejsze studium przypadku przedstawia szczegółową analizęrealistycznego diagramu przypadków użyciadladostaw żywności, wykorzystującskładnię PlantUML jako język modelowania. Celem jest wykazanie nie tylkojakich elementów jest używanych w diagramie, ale takżedlaczego zostały wybrane — podkreślającpraktyczne decyzje modelowania, konwencje orazczęste pułapki.
Niniejsze studium przypadku służy zarównopoczątkującym uczącym się UML jak ipraktykom doskonalącym swoje praktyki modelowaniaRozkłada każdy element diagramu na czynniki pierwsze, wyjaśnia jego cel i omawia implikacje ze świata rzeczywistego.
2. Przegląd systemu
Platformadostaw żywności to cyfrowa platforma rynkowa łącząca:
- Klientów(osoby zamawiające jedzenie),
- Restauracji(dostawcy posiłków),
- Kierowców(personel dostawczy),
- Zewnętrznych Bram Płatności(systemy stron trzecich obsługujące transakcje).
Platforma umożliwia użytkownikom przeglądanie restauracji, składanie zamówień, śledzenie dostaw, zarządzanie płatnościami oraz stosowanie promocji. System integruje się z zewnętrznymi usługami, takimi jak procesory płatności, i nie obsługuje logiki płatności wewnętrznie.
Kod PlantUML:
@startuml
skinparam monochrome true
skinparam shadowing false
left to right direction
' Wszyscy aktorzy są zdefiniowani poza prostokątem
actor Klient
actor "Zarejestrowany Klient" jako RegKlient
actor "Personel Restauracji" jako Restauracja
actor Kierowca
actor "Procesor Płatności" jako BramkaPłat
rectangle "Platforma Dostaw Jedzenia" {
(Przeglądaj Restauracje)
(Złóż Zamówienie)
(Śledź Zamówienie)
(Zarządzaj Menu)
(Akceptuj / Przygotuj Zamówienie)
(Dostarcz Zamówienie)
(Przetwórz Płatność)
(Wydaj Zwrot)
(Zastosuj Kod Promocyjny)
(Użyj Portfela)
(Płatność Kartą)
(Płatność Cyfrowym Portfelem)
' Asocjacje – strzałki przekraczają granicę
Klient --> (Przeglądaj Restauracje)
RegKlient --> (Złóż Zamówienie)
RegKlient --> (Śledź Zamówienie)
Restauracja --> (Zarządzaj Menu)
Restauracja --> (Akceptuj / Przygotuj Zamówienie)
Kierowca --> (Dostarcz Zamówienie)
BramkaPłat --> (Przetwórz Płatność)
BramkaPłat --> (Wydaj Zwrot)
' include
(Złóż Zamówienie) ..> (Przetwórz Płatność) : <<include>>
' extend
(Złóż Zamówienie) <.. (Zastosuj Kod Promocyjny) : <<extend>>
(Przetwórz Płatność) <.. (Użyj Portfela) : <<extend>>
' generalizacja
(Przetwórz Płatność) <|-- (Płatność Kartą)
(Przetwórz Płatność) <|-- (Płatność Cyfrowym Portfelem)
}
' Generalizacja aktorów (również poza)
Klient <|-- RegKlient
note right of BramkaPłat
Zewnętrzna bramka płatności
(Stripe, PayPal, Adyen, ...)
end note
note bottom of (Zastosuj Kod Promocyjny)
Opcjonalne – tylko przy wprowadzeniu poprawnego kodu
end note
@enduml ✅ Kluczowa uwaga: Diagram koncentruje się na interakcjach zewnętrznych — pokazuje, co system robidla swoich użytkowników i systemów, a nie jak jest zaimplementowany.
3. Elementy diagramu: Szczegółowa analiza z praktycznym znaczeniem
Poniżej znajduje się kompleksowe omówienie każdego elementu UML użytego w diagramie wraz z interpretacją z życia wziętą i uzasadnieniem modelowania.
| # | Element | Notacja | Znaczenie i Cel | Decyzja Modelowania / Komentarz |
|---|---|---|---|---|
| 1 | Granica systemu | prostokąt "Platforma dostaw żywności" |
Określa zakreszakresmodelowanego systemu. Wszystkie przypadki użycia wewnątrz należą do tego systemu. | Nazwa jest zwięzła, ale opisowa. W kontekstach przedsiębiorstw mogą być używane dłuższe nazwy (np. “System zarządzania zamówieniami klientów”). |
| 2 | Podstawowy aktor ludzki | aktor Klient, aktor Kierowca |
Reprezentujezewnętrzne rolektóre inicjują lub biorą udział w przypadkach użycia. | Nazwy są proste i intuicyjne. Unika niepotrzebnych stereotypów takich jak<<osoba>>chyba że są wymagane w dużych modelach. |
| 3 | Aktor z aliasem | aktor "Personel restauracji" jako Restauracja |
Umożliwia skrócenie dłuższej, opisowej nazwy aktora dla jasności w połączeniach. | Bardzo skuteczne, gdy nazwy aktorów zawierają spacje lub są zbyt długie. Zmniejsza chaos i poprawia czytelność. |
| 4 | Aktor systemu zewnętrznego | aktor "Procesor płatności" jako PaymentGW |
Modelujesystemy stron trzecichz którymi platforma się komunikuje. | Brak stereotypu«system» jest używane — akceptowalne w lekkich diagramach. Jednak dodanie “«system» może wyjaśniać intencje w złożonych systemach. |
| 5 | Uogólnienie aktora | `Klient < | — ZarejestrowanyKlient` | Wskazuje, że zarejestrowany klient jest specjalizowaną wersją gościa-klienta. |
| 6 | Zwykłe skojarzenie | Klient --> (Przeglądanie restauracji) |
Pokazuje, że aktor inicjuje lub uczestniczy w przypadku użycia. | Ciągła linia = komunikacja. Kierunek jest domyślnie od aktora do przypadku użycia (nie jest potrzebna strzałka). |
| 7 | Relacja «include» | (Złożenie zamówienia) ..> (Przetworzenie płatności) : <<include>> |
Przetworzenie płatności jest zawsze wymagane podczas składania zamówienia. |
Strzałka wskazuje od zawierającego → do zawartego. To jest krytyczne: Złóż zamówienie zawiera Przetwórz płatność jako obowiązkowy krok. |
| 8 | Relacja «extend» | (Złóż zamówienie) <.. (Zastosuj kod promocyjny) : <<extend>> |
Zastosowanie kodu promocyjnego jest opcjonalne i występuje tylko w określonych warunkach. | Strzałka wskazuje od rozszerzenia → baza. Podstawowy przypadek użycia (Złóż zamówienie) może być rozszerzony warunkowo. |
| 9 | Uogólnienie przypadku użycia | `(Przetwórz płatność) < | — (Płatność kartą)<br>(Przetwórz płatność) < |
— (Płatność portfelem cyfrowym)` |
| 10 | Uwaga | uwaga po prawej stronie PaymentGWuwaga pod (Zastosuj kod promocyjny) |
Zapewnia wyjaśnienie kontekstowedotyczące implementacji lub zasad biznesowych. | Notatki są niedoceniane, ale niezwykle cenne. Zapobiegają nieporozumieniom (np. wyjaśniając, że PaymentGW jest zewnętrzny). |
| 11 | Aktorzy poza granicą | Wszystkie aktorówdeklaracje poprzedzają prostokąt |
Podkreśla, że żaden aktor nie jest częścią systemu— jasne oddzielenie obowiązków. | Jeden z dwóch standardowych układów. Preferowany, gdy aktorów jest wielu lub są zewnętrzni. |
| 12 | Kierunek diagramu | kierunek z lewej na prawą |
Poprawia układ, gdy wielu aktorów znajduje się po lewej stronie. | Zwiększa czytelność. Szczególnie skuteczny przy 4–8 aktorach. Alternatywa: układ od góry do dołu dla mniejszej liczby aktorów. |
4. Kluczowe decyzje modelowania i ich uzasadnienie
✅ Dlaczego aktorzy są poza granicą systemu
- Najlepsza praktyka: Aktorzy reprezentują role pozasystemu.
- Dlaczego to ma znaczenie: Zapobiega pomyłce między komponentami systemu a podmiotami zewnętrznymi.
- Przykład:
Kierowcanie jest modułem platformy — są to role zewnętrzne z nią współpracujące.
📌 Wskazówka: Gdyby wszyscy aktorzy znajdowali się wewnątrz granicy, oznaczałoby to, że system ich obejmuje — co wprowadza w błąd.
✅ Dlaczego stosować Klient <|-- KlientZarejestrowany zamiast duplikować połączenia
- Bez uogólnienia musiałbyś narysować:
PlantUML Edit PlantUML in VPasCode
Klient --> (Przeglądaj restauracje) KlientZarejestrowany --> (Przeglądaj restauracje) KlientZarejestrowany --> (Złóż zamówienie) - Przy użyciu uogólnienia wystarczy:
PlantUML Edit PlantUML in VPasCode
Klient <|-- KlientZarejestrowany Klient --> (Przeglądaj restauracje) KlientZarejestrowany --> (Złóż zamówienie) - Wynik: Czystszy, łatwiejszy w utrzymaniu diagram.
📌 Najlepsza praktyka: Stosuj uogólnienie aktorów, gdy wyspecjalizowany aktor dziedziczy wszystkie zachowania aktora bardziej ogólnego.
✅ Dlaczego <<include>> oraz <<extend>> są używane poprawnie
| Relacja | Cel | Kierunek | Przykład |
|---|---|---|---|
<<włączyć>> |
Obowiązkowy podpotok | Z w tym → włączony | Złóż zamówienie musi włączyć Przetwórz płatność |
<<rozszerzyć>> |
Opcjonalne rozszerzenie | Z rozszerzenie → baza | Zastosuj kod promocyjny rozszerza Złóż zamówienie tylko jeśli kod jest ważny |
❗ Pospolity błąd: Odwrócenie kierunku strzałki. Zawsze pamiętaj:
włączyć:Baza ..> Włączonyrozszerz:Rozszerzenie <.. Podstawa
✅ Dlaczego Przetwarzanie płatności ma uogólnienia
Płatność kartąiPłatność portfelem cyfrowymsą specjalistycznymi formamiPrzetwarzanie płatności.- To pokazuje, że platforma obsługuje wiele metod płatności, ale wszystkie podążają tym samym podstawowym przepływem.
- Uogólnienie umożliwia wspólne zachowanie i przyszłą rozszerzalność.
📌 Scenariusz użycia: Dodanie nowej metody płatności (np. Apple Pay) byłoby kolejnym uogólnieniem
Przetwarzanie płatności.
5. Interpretacje z życia wzięte i odpowiedzi na pytania
Ten diagram nie jest tylko pomocą wizualną — odpowiada na kluczowe pytania biznesowe i techniczne:
| Pytanie | Odpowiedź z diagramu |
|---|---|
| Kim są główni użytkownicy? | Klienci, Zarejestrowani klienci, Personel restauracji, Kierowcy, Bramka płatności |
| Czy niezarejestrowani użytkownicy mogą składać zamówienia? | ❌ Nie — tylko Zarejestrowany klient może Złóż zamówienie. Klient może tylko Przeglądaj restauracje. |
| Czy płatność jest zawsze wymagana? | ✅ Tak — Złóż zamówienie zawiera Przetwórz płatność. Obowiązkowe. |
| Czy klienci mogą stosować kody promocyjne? | ✅ Tak — ale tylko opcjonalnie poprzez <<rozszerzenie>>. Tylko jeśli zostanie wprowadzony poprawny kod. |
| Jakie metody płatności są obsługiwane? | Karta i portfel cyfrowy (poprzez uogólnienie). Rzeczywistą obsługę przeprowadza zewnętrzny system. |
| Kto obsługuje płatność? | Zewnętrzny PaymentGW — nie jest częścią platformy. |
| Czy restauracje mogą zarządzać swoimi menu? | ✅ Tak — Restauracja aktor interakcji z Zarządzaj menu i Przyjmij / Przygotuj zamówienie. |
✅ Wartość biznesowa: Diagram jasno komunikuje co robi system, kto go używa, oraz jakie zachowania są obowiązkowe, a jakie opcjonalne.
6. Zastosowane wspólne wytyczne modelowania
Diagram ilustruje kilka najlepszych praktyk w modelowaniu przypadków użycia UML:
| Wytyczna | Jak jest stosowana |
|---|---|
| Używaj nazw przypadków użycia zorientowanych na cel | Złóż zamówienie, Śledź zamówienie, Zastosuj kod promocyjny — wszystkie zaczynają się od czasownika i opisują cel użytkownika. |
| Zachowaj czytelność diagramu | Tylko 10 przypadków użycia jest przedstawionych — jest to idealne dla większości domen biznesowych (zaleca się 5–12). |
| Zewnętrzne systemy jako aktorzy | PaymentGW jest modelowany jako aktor, a nie przypadek użycia. Poprawnie oddziela obszary odpowiedzialności. |
| Używaj notatek do wyjaśnienia niejasności | Notatki wyjaśniają, że PaymentGW jest zewnętrzny, a kod promocyjny jest opcjonalny — jest to kluczowe dla uniknięcia nieporozumień. |
| Używaj uogólniania aktorów, aby zmniejszyć chaos | `Klient < |
Użyj include oraz extend poprawnie |
Jasne rozróżnienie między zachowaniem obowiązkowym a opcjonalnym. |
📌 Ostrzeżenie: Wiele diagramów błędnie wykorzystuje
<<extend>>w znaczeniu „opcjonalny” bez zrozumienia warunkowego charakteru rozszerzeń. Ten diagram unika tego błędu.
7. Potencjalne ulepszenia i krytyka
Mimo że diagram jest solidny, oto konstruktywne sugestie do dopracowania:
🔧 1. Dodaj stereotypy dla jasności
actor "Payment Processor" as PaymentGW <<system>>
- Dlaczego: Wyraźnie wskazuje, że jest to system zewnętrzny, a nie rola ludzka.
- Korzyść: Zmniejsza niejednoznaczność, szczególnie w dużych modelach.
🔧 2. Ujawnij Zastosuj kod promocyjnyWarunek rozszerzenia
Obecnie:
note bottom of (Apply Promo Code)
Optional – only when a valid code is entered
end note
- Lepiej: Użyj notacji warunku lub warunku strażniczego w
<<extend>>strzałce:
(Złóż zamówienie) <.. (Zastosuj kod promocyjny) : <<extend>> [ważny kod promocyjny]
- Dlaczego: Bardziej precyzyjne niż notatka — bezpośrednio łączy rozszerzenie z warunkiem.
🔧 3. Rozważ dodanie Zobacz historię zamówień przypadku użycia
- Obecnie brakujące, ale prawdopodobnie ważne zarówno dla klientów, jak i restauracji.
- Można dodać jako
Zarejestrowany klientprzypadku użycia.
🔧 4. Grupuj powiązane przypadki użycia (opcjonalnie)
Dla większych diagramów grupuj przypadki użycia w pakiety:
package "Zarządzanie zamówieniami" {
(Złóż zamówienie)
(Śledź zamówienie)
(Zastosuj kod promocyjny)
}
package "Płatności" {
(Przetwórz płatność)
(Użyj portfela)
(Płatność kartą)
(Płatność cyfrowym portfelem)
}
- Korzyść: Poprawia skalowalność i czytelność.
8. Co dalej?
Ten przypadek badawczy pokazał, jak dobrze ustrukturyzowany diagram przypadków użyciamoże w sposób jasny i zwięzły oddać złożoną logikę biznesową. Aby pogłębić swoją wiedzę, oto sugerowane kolejne kroki:
🔄 Opcja 1: Widok skoncentrowany na restauracji
Zamodeluj ten sam obszar z perspektywy restauracji:
- Skup się na
Zarządzaj menu,Przyjmij / Przygotuj zamówienie,Zobacz zamówienia,Zaktualizuj status. - Pokaż
Restauracjajako głównego aktora. - Dołącz
Klientjako aktora drugorzędnego (np.Klientwysyła zamówienie →Restauracjaje otrzymuje).
✅ Korzyść: Ujawnia różne cele systemu i role aktorów.
🔄 Opcja 2: Dodaj więcej punktów rozszerzeń
Ulepsz Złóż zamówienie z:
Zastosuj kupon(jeśli kod promocyjny jest nieprawidłowy →<<rozszerz>>z komunikatem błędu)Poproś o specjalne instrukcje(opcjonalne)Zaplanuj zamówienie(na przyszłą dostawę)
🔄 Opcja 3: Porównaj uwzględnij vs rozszerz z przykładami
| Przypadek użycia | <<uwzględnij>> |
<<rozszerz>> |
|---|---|---|
Złóż zamówienie → Przetwórz płatność |
✅ Wymagane | ❌ Nie jest opcjonalne |
Złóż zamówienie → Zastosuj kod promocyjny |
❌ Nie jest wymagane | ✅ Warunkowe |
Zaloguj się → Zweryfikuj tożsamość |
✅ Zawsze wymagane | ❌ Nie dotyczy |
Zakończ zakup → Zastosuj rabat |
✅ Zawsze | ✅ Tylko jeśli istnieje rabat |
📌 Zasada ogólna:
- Użyj
<<include>>gdy zachowanie musi nastąpić.- Użyj
<<extend>>gdy zachowanie może nastąpić pod pewnymi warunkami.
🔄 Opcja 4: Przekształć na diagramy sekwencji lub aktywności
Do głębszej analizy:
- Diagram sekwencji: Pokaż przepływ
Złóż zamówienie→Przetwórz płatność→Dostarcz zamówieniez wiadomościami między aktorami a systemem. - Diagram aktywności: Modeluj punkty decyzyjne w
Przetwórz płatność(np. karta odrzucona → ponów próbę lub przełącz się na portfel).
9. Podsumowanie
Ten przypadek badawczy pokazuje, żestarannie opracowany diagram przypadków użyciato znacznie więcej niż wizualny szkic — tostrategiczne narzędzie komunikacjiktóre:
- Ujasnia zakres systemu,
- Uchwyta reguły biznesowe,
- Kieruje rozwojem,
- Zapobiega nieporozumieniom.
DiagramPlatformy Dostaw Żywnościjestmocnym przykłademczego:
- Właściwe użycie notacji UML,
- Zdrowe decyzje modelowania,
- Jasne oddzielenie obowiązków,
- Skuteczne użycie notatek i uogólnień.
Przestrzegając zasad przedstawionych tutaj —nazewnictwo zorientowane na cele, prawidłowe użyciezawiera/rozszerza, uogólnienie aktora, a także strategiczne wykorzystanie notatek — możesz tworzyć diagramy przypadków użycia, które są zarówno dokładne i działalne.
✅ Podsumowanie
| Zasada | Zastosowana tutaj? | Dlaczego to ma znaczenie |
|---|---|---|
| Używaj nazw przypadków użycia zorientowanych na cele | ✅ Tak | Poprawia przejrzystość i skupienie na użytkowniku |
| Utrzymuj rozmiar diagramu w granicach zarządnych | ✅ Tak (10 przypadków użycia) | Zapobiega przeciążeniu poznawczemu |
| Zewnętrzne systemy jako aktorzy | ✅ Tak | Prawidłowe oddzielenie obowiązków |
| Używaj notatek do kontekstu | ✅ Tak | Zapobiega błędnemu zrozumieniu |
| Używaj uogólnienia, aby zmniejszyć redundancję | ✅ Tak | Uczyni diagram skalowalnym i łatwym w utrzymaniu |
Poprawny<<include>> i <<extend>> kierunek |
✅ Tak | Gwarantuje dokładne modelowanie zachowania |






