Diagram UML umumnya dikelompokkan ke dalam struktural diagram, yang menggambarkan apa yang menyusun suatu sistem, dan perilaku diagram, yang menggambarkan apa yang dilakukan sistem tersebut. Contoh di bawah ini menggunakan satu skenario toko online tunggal agar dapat dibandingkan dan disesuaikan. UML 2.5.1 adalah spesifikasi formal yang dirujuk di sini.
PlantUML merender banyak notasi UML secara langsung. Beberapa jenis diagram khusus—terutama profil, struktur komposit, komunikasi, dan ikhtisar interaksi—dapat diekspresikan menggunakan pendekatan praktis PlantUML daripada renderer diagram khusus. Komentar mengidentifikasi kasus-kasus tersebut.

Diagram struktural
1. Diagram kelas
Menampilkan kelas-kelas sistem, data dan operasi mereka, serta hubungan seperti asosiasi, pewarisan, dan komposisi. Gunakan untuk mendiskusikan model domain atau desain berorientasi objek.

@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
Baca ini: satu pelanggan dapat menempatkan banyak pesanan; sebuah pesanan berisi satu atau lebih baris; setiap baris merujuk pada sebuah produk. Berlian terisi menunjukkan komposisi: pesanan memiliki baris-barisnya.
2. Diagram objek
Menampilkan instance konkret dan tautan pada satu momen waktu. Diagram ini berguna untuk mengilustrasikan data contoh atau menjelaskan model kelas dengan skenario tertentu. Di PlantUML, gunakan notasi objek.

@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 komponen
Menampilkan bagian perangkat lunak yang dapat diimplementasikan atau diganti dan ketergantungannya. Gunakan untuk mengomunikasikan arsitektur aplikasi dan batas integrasi.

@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 struktur komposit
Menampilkan bagian internal dari sebuah classifier—seperti komponen atau kelas—dan bagaimana bagian-bagian tersebut terhubung melalui port. Diagram ini berguna ketika kolaborasi internal lebih penting daripada arsitektur sistem di sekitarnya.
PlantUML tidak menyediakan sintaks struktur komposit khusus yang didukung secara universal. Sketsa bergaya diagram kelas ini menyampaikan bagian-bagian dan koneksinya:

@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 Anggap ini sebagai sketsa struktural; ini tidak menampilkan port UML formal atau semantik konektor.
5. Diagram penempatan
Memetakan artefak perangkat lunak atau layanan ke node perangkat keras dan lingkungan eksekusi. Gunakan untuk menjelaskan di mana perangkat lunak berjalan dan bagaimana node runtime berkomunikasi.

@startuml
node "Perangkat pelanggan" sebagai client {
artifact "Browser"
}
node "Cloud" {
node "Host aplikasi" sebagai appHost {
artifact "API Toko"
}
database "Database pesanan" sebagai db
}
cloud "Penyedia pembayaran eksternal" sebagai pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
6. Diagram paket
Mengelompokkan elemen model ke dalam namespace atau lapisan dan menampilkan ketergantungan antar kelompok tersebut. Gunakan untuk menjelaskan organisasi kode dan arah arsitektur.

@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 profil
Mendefinisikan ekstensi khusus domain ke UML menggunakan stereotipe, nilai berlabel, dan batasan. Gunakan ketika proyek memerlukan kosakata pemodelan yang konsisten di luar UML standar.
PlantUML dapat menampilkan konsep profil sebagai sketsa bergaya UML, tetapi ini bukan renderer diagram profil khusus.

@startuml
class "«profil» StoreProfile" sebagai Profile
class "«stereotipe» «Layanan»" sebagai Service
class "«stereotipe» «Repositori»" sebagai Repository
class "«metakelas» Komponen" sebagai Component
Profile ..> Service : mendefinisikan
Profile ..> Repository : mendefinisikan
Service ..> Component : memperluas
Repository ..> Component : memperluas
note kanan dari Service
nilai berlabel:
owner: String
end note
@enduml Diagram perilaku
8. Diagram kasus penggunaan
Menampilkan aktor eksternal dan tujuan sistem yang mereka interaksi. Gunakan untuk menetapkan ruang lingkup dan menangkap persyaratan fungsional pada tingkat tinggi.

@startuml
arah kiri ke kanan
aktor Pelanggan
aktor "Penyedia Pembayaran" sebagai Penyedia
rectangle "Toko Online" {
usecase "Jelajahi produk" sebagai Jelajah
usecase "Tempatkan pesanan" sebagai Tempatkan
usecase "Bayar pesanan" sebagai Bayar
usecase "Lacak pesanan" sebagai Lacak
}
Pelanggan --> Jelajah
Pelanggan --> Tempatkan
Pelanggan --> Lacak
Penyedia --> Bayar
Tempatkan ..> Bayar : <<include>>
@enduml
9. Diagram aktivitas
Memodelkan alur kerja: tindakan, keputusan, jalur paralel, dan serah terima. Gunakan untuk proses bisnis, prosedur operasional, atau alur kontrol algoritma.

@startuml
mulai
:Pilih item;
:Masukkan detail pengiriman;
:Hitung total;
jika (Item tersedia?) maka (ya)
:Otorisasi pembayaran;
jika (Pembayaran disetujui?) maka (ya)
:Buat pesanan;
:Kirim konfirmasi;
else (tidak)
:Tampilkan kesalahan pembayaran;
endif
else (tidak)
:Tampilkan item yang tidak tersedia;
endif
berhenti
@enduml
10. Diagram mesin keadaan
Mendeskripsikan keadaan yang dapat ditempati oleh suatu entitas serta peristiwa atau kondisi yang menyebabkan transisi. Gunakan ketika perilaku objek bergantung pada keadaannya saat ini.

@startuml
[*] --> Draf
Draf --> MenungguPembayaran : submit
MenungguPembayaran --> Dibayar : pembayaran disetujui
MenungguPembayaran --> Dibatalkan : pembayaran ditolak
MenungguPembayaran --> Dibatalkan : pelanggan membatalkan
Dibayar --> Dikirim : dikirim
Dikirim --> Diterima : pengiriman dikonfirmasi
Dibatalkan --> [*]
Diterima --> [*]
@enduml
11. Diagram urutan
Menampilkan pesan yang dipertukarkan antar peserta secara berurutan berdasarkan waktu. Gunakan untuk mendeskripsikan skenario, alur panggilan API, atau interaksi antar layanan.

@startuml
aktor Pelanggan
partisipan "Toko Web" sebagai Web
partisipan "Layanan Pesanan" sebagai Pesanan
partisipan "Layanan Pembayaran" sebagai Pembayaran
Pelanggan -> Web : submit checkout
Web -> Pesanan : create order
Pesanan -> Pembayaran : authorize payment
Pembayaran --> Pesanan : approved
Pesanan --> Web : order confirmation
Web --> Pelanggan : show confirmation
@enduml
12. Diagram komunikasi
Menekankan objek mana yang berkolaborasi dan tautan di antara mereka; penomoran pesan menunjukkan urutan interaksi. Gunakan ketika jaringan peserta yang berkolaborasi lebih penting daripada garis waktu.
PlantUML tidak memiliki renderer khusus untuk diagram komunikasi dalam set UML standarnya. Sketsa tautan objek ini memberi label pada pesan dengan nomor urutan:

@startuml
objek Pelanggan
objek TokoWeb
objek LayananPesanan
objek LayananPembayaran
Pelanggan --> TokoWeb : 1: checkout()
TokoWeb --> LayananPesanan : 1.1: createOrder()
LayananPesanan --> LayananPembayaran : 1.2: authorize()
LayananPembayaran --> LayananPesanan : 1.3: approved
LayananPesanan --> TokoWeb : 1.4: confirmation
@enduml
13. Diagram ikhtisar interaksi
Memberikan pandangan alur kontrol tingkat tinggi dari interaksi, menggabungkan alur bergaya aktivitas dengan referensi ke skenario interaksi. Gunakan untuk menunjukkan bagaimana beberapa skenario tingkat urutan masuk ke dalam proses yang lebih besar.
Contoh PlantUML ini menggunakan diagram aktivitas sebagai ikhtisar, dengan nama skenario menggantikan interaksi yang dirujuk:

@startuml
skinparam conditionStyle InsideDiamond
title Diagram Ikhtisar Interaksi: Sistem Pemrosesan Pesanan
start
:Pelanggan melakukan pemesanan;
if (Apakah Item Tersedia?) then (ya)
partition "sd Urutan Checkout" {
:Otorisasi Pembayaran;
:Kurangi Stok;
}
else (tidak)
partition "sd Proses Backorder" {
:Beritahu Pelanggan;
:Buat Permintaan ke Pemasok;
}
endif
fork
partition "sd Urutan Pengiriman" {
:Kemas Pesanan;
:Kirim ke Alamat;
}
fork again
partition "sd Urutan Tagihan" {
:Buat Faktur;
:Kirim Email Kwitansi;
}
end fork
:Tutup Pesanan;
stop
@enduml Untuk pertukaran pesan yang rinci di dalam setiap skenario, buatlah diagram urutan terpisah.
14. Diagram waktu
Menampilkan perubahan status atau nilai terhadap sumbu waktu. Gunakan untuk perilaku yang sensitif terhadap waktu, protokol, interaksi perangkat keras, atau persyaratan yang melibatkan durasi dan tenggat waktu.

@startuml
robust "Pesanan" sebagai Order
concise "Pembayaran" sebagai Payment
@0
Order adalah Draft
Payment adalah Idle
@5
Order adalah Pending
Payment adalah Processing
@10
Payment adalah Approved
@12
Order adalah Confirmed
@enduml
Memilih diagram
Mulailah dengan pertanyaan yang perlu dijawab oleh diagram tersebut:
-
Apa yang ada dalam sistem?Kelas, objek, komponen, struktur komposit, paket, profil, atau penempatan.
-
Apa yang dilakukan sistem?Kasus penggunaan, aktivitas, atau mesin keadaan.
-
Bagaimana peserta berkolaborasi?Urutan, komunikasi, ikhtisar interaksi, atau waktu.
Jadikan setiap diagram fokus pada satu tujuan, gunakan nama yang konsisten di seluruh diagram, dan sertakan hanya cukup detail untuk audiens dan keputusan yang ada. Potongan kode PlantUML adalah titik awal: periksa sintaks yang didukung oleh renderer Anda, terutama untuk jenis diagram khusus.
This post is also available in Deutsch, English, Español, فارسی, Français, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.












