Studium przypadku: Diagram przypadków użycia dla platformy dostaw żywności

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 PaymentGW
uwaga 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: Kierowca nie 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

📌 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 tymwłączony Złóż zamówienie musi włączyć Przetwórz płatność
<<rozszerzyć>> Opcjonalne rozszerzenie Z rozszerzeniebaza 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łączony
  • rozszerz: Rozszerzenie <.. Podstawa

Dlaczego Przetwarzanie płatności ma uogólnienia

  • Płatność kartą i Płatność portfelem cyfrowymspecjalistycznymi formami Przetwarzanie 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

  • 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 klient przypadku 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ż Restauracja jako głównego aktora.
  • Dołącz Klient jako aktora drugorzędnego (np. Klient wysyła zamówienie → Restauracja je 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ówieniePrzetwórz płatność ✅ Wymagane ❌ Nie jest opcjonalne
Złóż zamówienieZastosuj kod promocyjny ❌ Nie jest wymagane ✅ Warunkowe
Zaloguj sięZweryfikuj tożsamość ✅ Zawsze wymagane ❌ Nie dotyczy
Zakończ zakupZastosuj 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ówieniePrzetwórz płatnośćDostarcz zamówieniez wiadomościami między aktorami a systemem.
  • Diagram aktywności: Modeluj punkty decyzyjne wPrzetwó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