Pemodelan Kebutuhan Dunia Nyata dengan UML – Panduan Praktis
1. Pendahuluan
Dalam pengembangan perangkat lunak modern, diagram use casemerupakan alat dasar untuk menangkap persyaratan fungsional dari perspektif pengguna. Studi kasus ini menyajikan analisis mendetail tentang sebuah diagram use case yang realistisuntuk sebuah Pengiriman Makanan, menggunakan sintaks PlantUMLsebagai bahasa pemodelan. Tujuannya adalah untuk tidak hanya mendemonstrasikan apaelemen yang digunakan dalam diagram, tetapi juga mengapaelemen-elemen tersebut dipilih — dengan menyoroti keputusan pemodelan yang praktis, konvensi, dan jebakan umum.
Studi kasus ini bermanfaat bagi pemula yang mempelajari UMLdan praktisi yang menyempurnakan praktik pemodelan mereka. Studi ini menguraikan setiap elemen diagram, menjelaskan tujuannya, dan membahas implikasi dunia nyata.
2. Gambaran Sistem
Platform Pengiriman Makanan adalah pasar digital yang menghubungkan:
- Pelanggan(individu yang memesan makanan),
- Restoran(penyedia makanan),
- Pengemudi(personel pengiriman),
- Gerbang Pembayaran Eksternal(sistem pihak ketiga yang menangani transaksi).
Platform ini memungkinkan pengguna untuk menjelajahi restoran, memesan makanan, melacak pengiriman, mengelola pembayaran, dan menerapkan promosi. Sistem ini terintegrasi dengan layanan eksternal seperti pemroses pembayaran dan tidak menangani logika pembayaran secara internal.
Kode PlantUML:
@startuml
skinparam monochrome true
skinparam shadowing false
left to right direction
' Semua aktor didefinisikan di luar persegi panjang
actor Customer
actor "Pelanggan Terdaftar" as RegCustomer
actor "Staf Restoran" as Restaurant
actor Driver
actor "Pemroses Pembayaran" as PaymentGW
rectangle "Platform Pengiriman Makanan" {
(Jelajahi Restoran)
(Pesan Makanan)
(Lacak Pesanan)
(Kelola Menu)
(Terima / Siapkan Pesanan)
(Kirim Pesanan)
(Proses Pembayaran)
(Terbitkan Pengembalian Dana)
(Terapkan Kode Promo)
(Gunakan Dompet)
(Pembayaran Kartu)
(Pembayaran Dompet Digital)
' Asosiasi – panah melintasi batas
Customer --> (Jelajahi Restoran)
RegCustomer --> (Pesan Makanan)
RegCustomer --> (Lacak Pesanan)
Restaurant --> (Kelola Menu)
Restaurant --> (Terima / Siapkan Pesanan)
Driver --> (Kirim Pesanan)
PaymentGW --> (Proses Pembayaran)
PaymentGW --> (Terbitkan Pengembalian Dana)
' include
(Pesan Makanan) ..> (Proses Pembayaran) : <<include>>
' extend
(Pesan Makanan) <.. (Terapkan Kode Promo) : <<extend>>
(Proses Pembayaran) <.. (Gunakan Dompet) : <<extend>>
' generalisasi
(Proses Pembayaran) <|-- (Pembayaran Kartu)
(Proses Pembayaran) <|-- (Pembayaran Dompet Digital)
}
' Generalisasi aktor (juga di luar)
Customer <|-- RegCustomer
note right of PaymentGW
Gerbang pembayaran eksternal
(Stripe, PayPal, Adyen, ...)
end note
note bottom of (Terapkan Kode Promo)
Opsional – hanya ketika kode yang valid dimasukkan
end note
@enduml ✅ Wawasan Utama: Diagram ini berfokus pada interaksi eksternal — diagram ini menunjukkan apa yang dilakukan sistem untuk pengguna dan sistemnya, bukan bagaimana sistem tersebut diimplementasikan.
3. Elemen Diagram: Penjelasan Mendalam dengan Makna Praktis
Di bawah ini adalah uraian komprehensif dari setiap elemen UML yang digunakan dalam diagram, bersama dengan interpretasi dunia nyata dan alasan pemodelan.
| # | Elemen | Notasi | Makna & Tujuan | Keputusan Pemodelan / Komentar |
|---|---|---|---|---|
| 1 | Batas Sistem | persegi panjang "Platform Pengiriman Makanan" |
Mendefinisikan ruang lingkup dari sistem yang dimodelkan. Semua kasus penggunaan di dalamnya merupakan bagian dari sistem ini. | Nama tersebut ringkas namun deskriptif. Dalam konteks perusahaan, nama yang lebih panjang (misalnya, “Sistem Manajemen Pesanan Pelanggan”) dapat digunakan. |
| 2 | Aktor Manusia Utama | aktor Pelanggan, aktor Pengemudi |
Mewakili peran eksternal yang memulai atau berpartisipasi dalam kasus penggunaan. | Nama-nama sederhana dan intuitif. Menghindari stereotip yang tidak perlu seperti <<orang>> kecuali diperlukan untuk model besar. |
| 3 | Aktor dengan Alias | aktor "Staf Restoran" sebagai Restoran |
Memungkinkan nama aktor yang lebih panjang dan deskriptif disingkat untuk kejelasan dalam koneksi. | Sangat efektif ketika nama aktor mengandung spasi atau terlalu panjang. Mengurangi kerumitan dan meningkatkan keterbacaan. |
| 4 | Aktor Sistem Eksternal | aktor "Pemroses Pembayaran" sebagai PaymentGW |
Memodelkan sistem pihak ketiga yang berinteraksi dengan platform. | Tidak ada stereotip «sistem» digunakan — dapat diterima dalam diagram ringan. Namun, menambahkan “«sistem» dapat memperjelas maksud dalam sistem yang kompleks. |
| 5 | Generalisasi Aktor | `Pelanggan < | — PelangganTerdaftar` | Menunjukkan bahwa seorang pelanggan terdaftar adalah versi khusus dari seorang pelanggan tamu. |
| 6 | Asosiasi Biasa | Pelanggan --> (Jelajahi Restoran) |
Menunjukkan bahwa aktor memulai atau berpartisipasi dalam kasus penggunaan. | Garis solid = komunikasi. Arah tersirat dari aktor ke kasus penggunaan (tidak perlu kepala panah). |
| 7 | Hubungan «include» | (Tempel Pesanan) ..> (Proses Pembayaran) : <<include>> |
Proses Pembayaran adalah selalu diperlukan saat memesan. |
Panah menunjuk dari yang termasuk → yang termasuk. Ini sangat kritis: Tempatkan Pesanan memuat Proses Pembayaran sebagai langkah wajib. |
| 8 | Relasi «extend» | (Tempatkan Pesanan) <.. (Terapkan Kode Promo) : <<extend>> |
Menerapkan kode promo adalah opsional dan hanya terjadi dalam kondisi tertentu. | Panah menunjuk dari ekstensi → dasar. Kasus penggunaan dasar (Tempatkan Pesanan) dapat diperluas secara kondisional. |
| 9 | Generalisasi Kasus Penggunaan | `(Proses Pembayaran) < | — (Pembayaran Kartu)<br>(Proses Pembayaran) < |
— (Pembayaran Dompet Digital)` |
| 10 | Catatan | catatan di sebelah kanan PaymentGWcatatan di bawah (Terapkan Kode Promo) |
Menyediakan penjelasan kontekstual tentang implementasi atau aturan bisnis. | Catatan jarang digunakan tetapi sangat berharga. Catatan mencegah kesalahpahaman (misalnya, memperjelas bahwa PaymentGW bersifat eksternal). |
| 11 | Aktor di Luar Batas | Semua aktor deklarasi mendahului persegi panjang |
Menekankan bahwa tidak ada aktor yang merupakan bagian dari sistem — pemisahan kekhawatiran yang jelas. | Salah satu dari dua tata letak standar. Lebih disukai ketika aktor banyak atau eksternal. |
| 12 | Arah Diagram | arah dari kiri ke kanan |
Meningkatkan tata letak ketika beberapa aktor berada di sebelah kiri. | Meningkatkan keterbacaan. Terutama efektif dengan 4–8 aktor. Alternatif: tata letak dari atas ke bawah untuk aktor yang lebih sedikit. |
4. Keputusan Pemodelan Utama & Rasionalnya
✅ Mengapa aktor berada di luar batas sistem
- Praktik Terbaik: Aktor mewakili peran di luar sistem.
- Mengapa hal ini penting: Mencegah kebingungan antara komponen sistem dan entitas eksternal.
- Contoh:
Pengemudibukan modul dari platform — mereka adalah peran pihak ketiga yang berinteraksi dengannya.
📌 Tips Pro: Jika semua aktor berada di dalam batas, itu akan menyiratkan bahwa sistem mencakup mereka — yang menyesatkan.
✅ Mengapa menggunakan Customer <|-- RegCustomer daripada menduplikasi tautan
- Tanpa generalisasi, Anda harus menggambar:
PlantUML Edit PlantUML in VPasCode
Customer --> (Jelajahi Restoran) RegCustomer --> (Jelajahi Restoran) RegCustomer --> (Pesan Pesanan) - Dengan generalisasi, Anda hanya perlu:
PlantUML Edit PlantUML in VPasCode
Customer <|-- RegCustomer Customer --> (Jelajahi Restoran) RegCustomer --> (Pesan Pesanan) - Hasil: Diagram yang lebih bersih dan lebih mudah dipelihara.
📌 Praktik Terbaik: Gunakan generalisasi aktor setiap kali aktor khusus mewarisi semua perilaku dari aktor yang lebih umum.
✅ Mengapa <<include>> dan <<extend>> digunakan dengan benar
| Hubungan | Tujuan | Arah | Contoh |
|---|---|---|---|
<<include>> |
Sub-alur wajib | Dari termasuk → termasuk | Tempatkan Pesanan harus include Proses Pembayaran |
<<extend>> |
Ekstensi opsional | Dari ekstensi → dasar | Terapkan Kode Promo memperluas Tempatkan Pesananhanya jika kode valid |
❗ Kesalahan Umum: Membalik arah panah. Selalu ingat:
include:Dasar ..> Termasukperluas:Ekstensi <.. Basis
✅ Mengapa Proses Pembayaran memiliki generalisasi
Pembayaran KartudanPembayaran Dompet Digitaladalah bentuk khusus dariProses Pembayaran.- Ini menunjukkan bahwa platform mendukung berbagai metode pembayaran, tetapi semuanya mengikuti alur inti yang sama.
- Generalisasi memungkinkan perilaku bersama dan ekstensibilitas di masa depan.
📌 Kasus Penggunaan: Menambahkan metode pembayaran baru (misalnya, Apple Pay) hanyalah generalisasi lain dari
Proses Pembayaran.
5. Interpretasi Dunia Nyata & Pertanyaan yang Dijawab
Diagram ini bukan sekadar bantuan visual — diagram ini menjawab pertanyaan bisnis dan teknis yang kritis:
| Pertanyaan | Jawaban dari Diagram |
|---|---|
| Siapa pengguna utamanya? | Pelanggan, Pelanggan Terdaftar, Staf Restoran, Pengemudi, Gerbang Pembayaran |
| Apakah pengguna yang tidak terdaftar dapat melakukan pemesanan? | ❌ Tidak — hanya PelangganTerdaftar dapat Lakukan Pemesanan. Pelanggan hanya dapat Jelajahi Restoran. |
| Apakah pembayaran selalu diperlukan? | ✅ Ya — Lakukan Pemesanan meliputi Proses Pembayaran. Wajib. |
| Apakah pelanggan dapat menggunakan kode promo? | ✅ Ya — tetapi hanya secara opsional melalui <<perluasan>>. Hanya jika kode yang valid dimasukkan. |
| Metode pembayaran apa yang didukung? | Kartu dan Dompet Digital (melalui generalisasi). Sistem eksternal menangani pemrosesan aktual. |
| Siapa yang menangani pembayaran? | Eksternal PaymentGW — bukan bagian dari platform. |
| Apakah restoran dapat mengelola menu mereka? | ✅ Ya — Restoran aktor berinteraksi dengan Kelola Menu dan Terima / Siapkan Pesanan. |
✅ Nilai Bisnis: Diagram ini dengan jelas mengkomunikasikan apa yang dilakukan sistem, siapa yang menggunakannya, dan perilaku mana yang wajib vs. opsional.
6. Pedoman Pemodelan Umum yang Ditunjukkan
Diagram ini mengilustrasikan beberapa praktik terbaik dalam pemodelan kasus penggunaan UML:
| Pedoman | Bagaimana Ini Diterapkan |
|---|---|
| Gunakan nama kasus penggunaan yang berorientasi tujuan | Tempatkan Pesanan, Lacak Pesanan, Terapkan Kode Promo — semuanya dimulai dengan kata kerja dan menggambarkan tujuan pengguna. |
| Jaga agar diagram tetap mudah dibaca | Hanya 10 kasus penggunaan ditampilkan — ideal untuk sebagian besar domain bisnis (5–12 direkomendasikan). |
| Sistem eksternal sebagai aktor | PaymentGW dimodelkan sebagai aktor, bukan kasus penggunaan. Dengan benar memisahkan kekhawatiran. |
| Gunakan catatan untuk memperjelas ambiguitas | Catatan menjelaskan bahwa PaymentGW bersifat eksternal dan bahwa kode promo bersifat opsional — hal ini krusial untuk menghindari kesalahpahaman. |
| Gunakan generalisasi aktor untuk mengurangi kerumitan | `Pelanggan < |
Gunakan include dan extend dengan benar |
Pembedaan yang jelas antara perilaku wajib dan opsional. |
📌 Peringatan: Banyak diagram menyalahgunakan
<<extend>>untuk berarti “opsional” tanpa memahami sifat bersyarat dari ekstensi. Diagram ini menghindari kesalahan tersebut.
7. Potensi Perbaikan & Kritik
Meskipun diagram ini kuat, berikut adalah saran konstruktif untuk penyempurnaan:
🔧 1. Tambahkan Stereotipe untuk Kejelasan
actor "Payment Processor" as PaymentGW <<system>>
- Mengapa: Membuat jelas bahwa ini adalah sistem eksternal, bukan peran manusia.
- Manfaat: Mengurangi ambiguitas, terutama dalam model besar.
🔧 2. Perjelas Terapkan Kode PromoKondisi Ekstensi
Saat ini:
note bottom of (Terapkan Kode Promo)
Opsional – hanya ketika kode yang valid dimasukkan
end note
- Lebih Baik: Gunakan notasi kondisi atau guard pada
<<extend>>panah:
(Pesan Pesanan) <.. (Terapkan Kode Promo) : <<extend>> [kode promo valid]
- Mengapa: Lebih tepat daripada catatan — secara langsung mengaitkan ekstensi dengan kondisi.
🔧 3. Pertimbangkan Menambahkan Lihat Riwayat Pesanan Kasus Penggunaan
- Saat ini belum ada, tetapi kemungkinan besar penting bagi pelanggan dan restoran.
- Dapat ditambahkan sebagai
Pelanggan Terdaftarkasus penggunaan.
🔧 4. Kelompokkan Kasus Penggunaan yang Terkait (Opsional)
Untuk diagram yang lebih besar, kelompokkan kasus penggunaan ke dalam paket:
package "Manajemen Pesanan" {
(Pesan Pesanan)
(Lacak Pesanan)
(Terapkan Kode Promo)
}
package "Pembayaran" {
(Proses Pembayaran)
(Gunakan Dompet)
(Pembayaran Kartu)
(Pembayaran Dompet Digital)
}
- Manfaat: Meningkatkan skalabilitas dan keterbacaan.
8. Apa Selanjutnya?
Studi kasus ini telah menunjukkan bagaimana diagram kasus penggunaan yang terstruktur dengan baik dapat menangkap logika bisnis yang kompleks dengan jelas dan ringkas. Untuk memperdalam pemahaman Anda, berikut adalah langkah selanjutnya yang disarankan:
🔄 Opsi 1: Pandangan Berpusat pada Restoran
Pemodelan domain yang sama dari perspektif restoran:
- Fokus pada
Kelola Menu,Terima / Siapkan Pesanan,Lihat Pesanan,Perbarui Status. - Tampilkan
Restoransebagai aktor utama. - Sertakan
Pelanggansebagai aktor sekunder (misalnya,Pelangganmengirim pesanan →Restoranmenerimanya).
✅ Manfaat: Mengungkapkan tujuan sistem dan peran aktor yang berbeda.
🔄 Opsi 2: Tambahkan Lebih Banyak Titik Ekstensi
Perkuat Tempatkan Pesanan dengan:
Terapkan Kupon(jika kode promosi tidak valid →<<perluas>>dengan pesan kesalahan)Minta Instruksi Khusus(opsional)Jadwalkan Pesanan(untuk pengiriman di masa depan)
🔄 Opsi 3: Bandingkan sertakan vs perluas dengan Contoh
| Kasus Penggunaan | <<sertakan>> |
<<perluas>> |
|---|---|---|
Tempatkan Pesanan → Proses Pembayaran |
✅ Wajib | ❌ Tidak opsional |
Tempatkan Pesanan → Terapkan Kode Promosi |
❌ Tidak wajib | ✅ Bersyarat |
Masuk → Verifikasi Identitas |
✅ Selalu diperlukan | ❌ Tidak berlaku |
Cek Keluar → Terapkan Diskon |
✅ Selalu | ✅ Hanya jika diskon ada |
📌 Aturan Umum:
- Gunakan
<<include>>ketika perilaku harus terjadi.- Gunakan
<<extend>>ketika perilaku mungkin terjadi dalam kondisi tertentu.
🔄 Opsi 4: Konversi ke Diagram Urutan atau Diagram Aktivitas
Untuk analisis yang lebih mendalam:
- Diagram Urutan: Menunjukkan alur
Tempatkan Pesanan→Proses Pembayaran→Serahkan Pesanandengan pesan antara aktor dan sistem. - Diagram Aktivitas: Pemodelan titik keputusan dalam
Proses Pembayaran(misalnya, kartu ditolak → coba lagi atau beralih ke dompet digital).
9. Kesimpulan
Studi kasus ini menunjukkan bahwa diagram kasus penggunaan yang dirancang dengan baikjauh lebih dari sekadar sketsa visual — ini adalah alat komunikasi strategisyang:
- Memperjelas ruang lingkup sistem,
- Menangkap aturan bisnis,
- Memandu pengembangan,
- Mencegah kesalahpahaman.
Diagram Platform Pengiriman Makananmerupakan contoh yang kuatdari:
- Penggunaan notasi UML yang tepat,
- Keputusan pemodelan yang tepat,
- Pemisahan kekhawatiran yang jelas,
- Pemanfaatan catatan dan generalisasi yang efektif.
Dengan mengikuti prinsip-prinsip yang ditunjukkan di sini — penamaan yang berorientasi pada tujuan, penggunaan yang tepat dari termasuk/memperluas, generalisasi aktor, dan penggunaan catatan secara strategis — Anda dapat membuat diagram kasus penggunaan yang sekaligus akurat dan dapat ditindaklanjuti.
✅ Poin Penting Akhir
| Prinsip | Diterapkan di Sini? | Mengapa Ini Penting |
|---|---|---|
| Gunakan nama kasus penggunaan yang berorientasi tujuan | ✅ Ya | Meningkatkan kejelasan dan fokus pengguna |
| Jaga ukuran diagram agar tetap dapat dikelola | ✅ Ya (10 kasus penggunaan) | Mencegah kelebihan beban kognitif |
| Sistem eksternal sebagai aktor | ✅ Ya | Pemisahan kepentingan yang benar |
| Gunakan catatan untuk konteks | ✅ Ya | Mencegah kesalahpahaman |
| Gunakan generalisasi untuk mengurangi redundansi | ✅ Ya | Membuat diagram dapat diskalakan dan mudah dipelihara |
Benar<<include>> dan <<extend>> arah |
✅ Ya | Memastikan pemodelan perilaku yang akurat |






