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 繁體中文












