de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Praktyczny przewodnik po 14 typach diagramów UML przy użyciu narzędzia VPasCode

Diagramy UML są zazwyczaj grupowane wstrukturalne diagramy, które opisują, z czego składa się system, orazbehawioralne diagramy, które opisują, co system robi. Poniższe przykłady wykorzystują jeden scenariusz sklepu internetowego, aby można je było porównać i dostosować. UML 2.5.1 to formalna specyfikacja, na którą się tutaj powołujemy.

PlantUML renderuje wiele notacji UML bezpośrednio. Kilka specjalistycznych typów diagramów – zwłaszcza profilu, struktury złożonej, komunikacji i przeglądu interakcji – może być wyrażone za pomocą praktycznego przybliżenia PlantUML zamiast dedykowanego renderera diagramów. Komentarze wskazują te przypadki.

Diagramy strukturalne

1. Diagram klas

Pokazuje klasy systemu, ich dane i operacje oraz relacje, takie jak asocjacja, dziedziczenie i kompozycja. Używaj go do omawiania modeli domenowych lub projektowania obiektowego.

@startuml
class Customer {
  +id: String
  +email: String
  +placeOrder(): Order
}

class Order {
  +number: String
  +status: OrderStatus
  +total(): Money
}

class OrderLine {
  +quantity: int
  +unitPrice: Money
}

class Product {
  +sku: String
  +name: String
}

Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml

Przeczytaj: jeden klient może złożyć wiele zamówień; zamówienie zawiera jedną lub więcej linii; każda linia odnosi się do produktu. Wypełniony romb oznacza kompozycję: zamówienie jest właścicielem swoich linii.

2. Diagram obiektów

Pokazuje konkretne instancje i połączenia w danym momencie czasu. Jest przydatny do zilustrowania przykładowych danych lub wyjaśnienia modelu klas w kontekście konkretnego scenariusza. W PlantUML używaj notacji obiektowej.

@startuml
object "alice:Customer" as alice {
  id = C104
  email = [email protected]
}

object "order:Order" as order {
  number = O9001
  status = PAID
}

object "line:OrderLine" as line {
  quantity = 2
  unitPrice = 19.99
}

object "mug:Product" as mug {
  sku = MUG-01
  name = Travel mug
}

alice -- order
order *-- line
line --> mug
@enduml

3. Diagram komponentów

Pokazuje wdrażalne lub wymienialne części oprogramowania i ich zależności. Używaj go do komunikowania architektury aplikacji i granic integracji.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider

web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml

4. Diagram struktury złożonej

Pokazuje wewnętrzne części klasyfikatora – takiego jak komponent lub klasa – oraz sposób, w jaki te części łączą się przez porty. Jest przydatny, gdy wewnętrzna współpraca jest ważniejsza niż architektura otaczającego systemu.

PlantUML nie zapewnia uniwersalnie wspieranego, dedykowanego składni dla struktury złożonej. Ten szkic w stylu diagramu klas przekazuje części i połączenia:

@startuml
allowmixing
skinparam componentStyle rectangle

class Car {
}

package "Car" {
  component "engine : Engine" as engine {
    portout p1
  }

  component "transmission : Transmission" as trans {
    portin p2
    portout p3
  }

  component "wheel : Wheel [4]" as wheels {
    portin p4
  }

  p1 -- p2 : drives
  p3 -- p4 : power
}

@enduml

Traktuj to jako szkic strukturalny; nie przedstawia on formalnych portów UML ani semantyki łączników.

5. Diagram wdrożenia

Mapuje artefakty oprogramowania lub usługi na węzły sprzętowe i środowiska wykonawcze. Użyj go, aby wyjaśnić, gdzie działa oprogramowanie i jak węzły czasowe wykonania komunikują się ze sobą.

@startuml
node "Urządzenie klienta" as client {
  artifact "Przeglądarka"
}

node "Chmura" {
  node "Host aplikacji" as appHost {
    artifact "API Sklepu"
  }
  database "Baza zamówień" as db
}

cloud "Zewnętrzny dostawca płatności" as pay

client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml

6. Diagram pakietów

Grupuje elementy modelu w przestrzeniach nazw lub warstwach i pokazuje zależności między tymi grupami. Użyj go, aby wyjaśnić organizację kodu i kierunek architektury.

@startuml
package "store.web" {
  class CheckoutController
}

package "store.application" {
  class PlaceOrder
}

package "store.domain" {
  class Order
  class Product
}

package "store.persistence" {
  class OrderRepository
}

CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml

7. Diagram profilu

Określa rozszerzenie UML specyficzne dla danej dziedziny za pomocą stereotypów, wartości oznaczonych znacznikami i ograniczeń. Użyj go, gdy projekt wymaga spójnego słownictwa modelowania wykraczającego poza standardowe UML.

PlantUML może wyświetlać koncepcje profilu jako szkic w stylu UML, ale nie jest to dedykowany renderer diagramów profilu.

@startuml
class "«profil» StoreProfile" as Profile
class "«stereotyp» «Usługa»" as Service
class "«stereotyp» «Repozytorium»" as Repository
class "«metaklasa» Komponent" as Component

Profile ..> Service : definiuje
Profile ..> Repository : definiuje
Service ..> Component : rozszerza
Repository ..> Component : rozszerza

note right of Service
  wartość oznaczona znacznikiem:
  właściciel: String
end note
@enduml

Diagramy behawioralne

8. Diagram przypadków użycia

Pokazuje zewnętrznych aktorów i cele systemu, z którymi wchodzą oni w interakcję. Użyj go, aby określić zakres i uchwycić wymagania funkcjonalne na wysokim poziomie.

@startuml
kierunek z lewej do prawej
aktor Klient
aktor "Dostawca płatności" jako Dostawca

prostokąt "Sklep internetowy" {
  przypadki użycia "Przeglądaj produkty" jako Przeglądaj
  przypadki użycia "Złóż zamówienie" jako Złóż
  przypadki użycia "Opłać zamówienie" jako Opłać
  przypadki użycia "Śledź zamówienie" jako Śledź
}

Klient --> Przeglądaj
Klient --> Złóż
Klient --> Śledź
Dostawca --> Opłać
Złóż ..> Opłać : <<include>>
@enduml

9. Diagram aktywności

Modeluje przepływ pracy: działania, decyzje, ścieżki równoległe i przekazania. Używaj go do procesów biznesowych, procedur operacyjnych lub przepływu sterowania algorytmem.

@startuml
start
:Wybierz produkty;
:Wprowadź dane dostawy;
:Oblicz całkowitą kwotę;

jeśli (Produkty dostępne?) wtedy (tak)
  :Autoryzuj płatność;
  jeśli (Płatność zatwierdzona?) wtedy (tak)
    :Utwórz zamówienie;
    :Wyślij potwierdzenie;
  inaczej (nie)
    :Pokaż błąd płatności;
  endif
inaczej (nie)
  :Pokaż niedostępne produkty;
endif

stop
@enduml

10. Diagram maszyn stanów

Opisuje stany, które może zajmować encja, oraz zdarzenia lub warunki powodujące przejścia. Używaj go, gdy zachowanie obiektu zależy od jego bieżącego stanu.

@startuml
[*] --> Projekt
Projekt --> OczekującaPłatność : zatwierdź
OczekującaPłatność --> Zapłacony : płatność zatwierdzona
OczekującaPłatność --> Anulowany : płatność odrzucona
OczekującaPłatność --> Anulowany : klient anuluje
Zapłacony --> Wysłany : wysyłka
Wysłany --> Dostarczony : dostawa potwierdzona
Anulowany --> [*]
Dostarczony --> [*]
@enduml

11. Diagram sekwencji

Pokazuje wiadomości wymieniane między uczestnikami w kolejności czasowej. Używaj go do opisu scenariusza, przepływu wywołań API lub interakcji między usługami.

@startuml
aktor Klient
uczestnik "Sklep internetowy" jako Web
uczestnik "Usługa zamówień" jako Zamówienia
uczestnik "Usługa płatności" jako Płatności

Klient -> Web : zatwierdź koszyk
Web -> Zamówienia : utwórz zamówienie
Zamówienia -> Płatności : autoryzuj płatność
Płatności --> Zamówienia : zatwierdzono
Zamówienia --> Web : potwierdzenie zamówienia
Web --> Klient : pokaż potwierdzenie
@enduml

12. Diagram komunikacji

Podkreśla, które obiekty współpracują i jakie są między nimi połączenia; numeracja wiadomości pokazuje kolejność interakcji. Używaj go, gdy sieć współpracujących uczestników jest ważniejsza niż oś czasu.

PlantUML nie posiada dedykowanego renderera diagramów komunikacji w swoim standardowym zestawie UML. Ten szkic połączeń obiektowych oznacza wiadomości numerami sekwencyjnymi:

@startuml
obiekt Klient
obiekt SklepInternetowy
obiekt UsługaZamówień
obiekt UsługaPłatności

Klient --> SklepInternetowy : 1: checkout()
SklepInternetowy --> UsługaZamówień : 1.1: createOrder()
UsługaZamówień --> UsługaPłatności : 1.2: authorize()
UsługaPłatności --> UsługaZamówień : 1.3: approved
UsługaZamówień --> SklepInternetowy : 1.4: confirmation
@enduml

13. Diagram przeglądowy interakcji

Dostarcza widok przepływu sterowania interakcjami na wysokim poziomie, łącząc przepływ w stylu diagramu aktywności z odwołaniami do scenariuszy interakcji. Używaj go, aby pokazać, jak kilka scenariuszy na poziomie sekwencji wpisuje się w większy proces.

Ten przykład PlantUML używa diagramu aktywności jako przeglądu, gdzie nazwy scenariuszy zastępują odwołane interakcje:

@startuml
skinparam conditionStyle InsideDiamond

tytuł: Interakcyjny diagram przeglądowy: System przetwarzania zamówień

start

:Klient składa zamówienie;

if (Czy przedmiot jest na stanie?) then (tak)
  
  partition "sd Sekwencja finalizacji" {
    :Autoryzuj płatność;
    :Odlicz stan magazynowy;
  }
  
else (nie)
  
  partition "sd Proces zamówienia zaległego" {
    :Powiadom klienta;
    :Wygeneruj żądanie do dostawcy;
  }
  
endif

fork
  partition "sd Sekwencja wysyłki" {
    :Spakuj zamówienie;
    :Wyślij na adres;
  }
fork again
  partition "sd Sekwencja rozliczeniowa" {
    :Wygeneruj fakturę;
    :Wyślij e-mail z potwierdzeniem;
  }
end fork

:Zamknij zamówienie;

stop
@enduml

Dla szczegółowych wymian wiadomości wewnątrz każdego scenariusza utwórz osobny diagram sekwencji.

14. Diagram czasowy

Pokazuje zmiany stanu lub wartości w odniesieniu do osi czasu. Używaj go dla zachowań wrażliwych na czas, protokołów, interakcji sprzętowych lub wymagań obejmujących czasy trwania i terminy końcowe.

@startuml
robust "Zamówienie" jako Zamówienie
concise "Płatność" jako Płatność

@0
Zamówienie jest w wersji roboczej
Płatność jest w stanie oczekującym

@5
Zamówienie jest oczekujące
Płatność jest przetwarzana

@10
Płatność jest zatwierdzona

@12
Zamówienie jest potwierdzone
@enduml

Wybór diagramu

Zacznij od pytania, na które diagram ma odpowiedzieć:

  • Co znajduje się w systemie?Klasa, obiekt, komponent, struktura złożona, pakiet, profil lub wdrożenie.

  • Co robi system?Scenariusz użycia, aktywność lub maszyna stanów.

  • Jak współpracują uczestnicy?Sekwencja, komunikacja, przegląd interakcji lub czas.

Utrzymuj każdy diagram skupiony na jednym celu, używaj spójnych nazw w różnych diagramach i uwzględniaj tylko tyle szczegółów, ile jest potrzebne dla odbiorców i podejmowanej decyzji. Fragmenty PlantUML to punkty wyjścia: sprawdź obsługiwany składnik w Twoim rendererze, szczególnie dla specjalistycznych typów diagramów.

Ten post dostępny jest również w Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文