de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Panduan praktis untuk 14 jenis diagram UML menggunakan Alat VPasCode

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