šÆ Ikhtisar
Panduan ini membimbing Anda melalui desain dan pemodelan dariĀ Sistem Kontrol Panggilan TeleponĀ menggunakanĀ Diagram Mesin State UML. Ini berfokus padaĀ siklus hidup panggilan keluar, yang menggambarkan bagaimana saluran telepon berpindah antar status sebagai respons terhadap tindakan pengguna dan peristiwa jaringan.
Diagram ini menangkap keduaĀ jalur bahagiaĀ (pengaturan panggilan berhasil) danĀ jalur tidak bahagiaĀ (kesalahan, waktu habis, saluran sibuk), menekankan ketahanan, penanganan pengecualian, dan transisi status yang jelasāprinsip-prinsip utama dalam sistem komunikasi real-time.
š§© Konsep Inti dalam Mesin State UML
Sebelum mempelajari diagram ini, pahami konsep UML dasar berikut:
| Konsep | Deskripsi |
|---|---|
| Status | Kondisi di mana suatu objek memenuhi kondisi tertentu atau melakukan tindakan. |
| Transisi | Perubahan dari satu status ke status lainnya, yang dipicu oleh suatu peristiwa. |
| Peristiwa | Suatu kejadian yang menyebabkan transisi (misalnyaĀ onHook,Ā validNumber). |
| Transisi Diri | Suatu transisi yang dimulai dan berakhir pada status yang sama (misalnyaĀ digit(n)Ā saat dalamĀ Pemilihan). |
| Status Palsu | Titik kontrol khusus sepertiĀ AwalĀ atauĀ AkhirĀ yang bukan merupakan status sebenarnya. |
| Status Komposit | Status yang berisi substatus (misalnyaĀ KesalahanĀ status denganĀ BusyTone,Ā FastBusyTone,Ā PesanRekaman). |
| Kondisi Pengawas | Ekspresi Boolean yang harus benar agar transisi dapat terjadi. |
ā Ā Kiat Pro:Ā GunakanĀ
event [pengawas] / aksiĀ sintaks dalam UML untuk mendokumentasikan pemicu, kondisi, dan efek samping.
š Siklus Hidup Panggilan Keluar: Penjelasan Langkah demi Langkah
1.Ā Fase Inisiasi & Pemilihan
š¹ Keadaan Pseudo Awal ā Idle
-
Sistem dimulai dalam keadaanĀ Keadaan Pseudo Awal.
-
Belum ada aktivitas; telepon berada dalam posisi tergantung.
š¹ Idle ā DialTone (onHook)
-
Kejadian:Ā
onHookĀ (pengguna mengangkat handset) -
Transisi:Ā
onHook ā DialTone -
Aksi:Ā Hasilkan nada penelepon; siapkan untuk input digit.
šĀ Ini adalah perubahan keadaan pertama yang terlihat dalam siklus panggilan.
š¹ DialTone ā Dialing (digit(n))
-
Kejadian:Ā
digit(n)Ā (pengguna memasukkan satu digit) -
Transisi:Ā
digit(n) ā Dialing -
Keadaan:Ā Masuk keĀ
DialingĀ mode.
š¹ Transisi Diri: Dialing ā Dialing (digit(n))
-
Kejadian:Ā
digit(n)Ā (banyak digit dimasukkan) -
Pengecekan:Ā Tidak ada (selalu diizinkan)
-
Aksi:Ā Tambahkan digit ke nomor yang sedang dihubungi.
-
Tujuan:Ā Izinkan entri digit terus-menerus tanpa meninggalkanĀ
PemanggilanĀ keadaan.
š”Ā Transisi diri sangat penting untuk menangani urutan input seperti nomor telepon.
2.Ā Logika Koneksi & Penanganan Pengecualian
š¹ Pemanggilan ā Menghubungkan (nomorValid)
-
Kejadian:Ā
nomorValidĀ (nomor lengkap divalidasi) -
Transisi:Ā
nomorValid ā Menghubungkan -
Aksi:Ā Mulai proses pengaturan panggilan dengan jaringan.
š¹ Pemanggilan ā Pesan Terdokumentasi (nomorTidakValid)
-
Kejadian:Ā
nomorTidakValidĀ (contoh: panjang salah, awalan tidak valid) -
Transisi:Ā
nomorTidakValid ā Pesan Terdokumentasi -
Aksi:Ā Putar pesan yang telah direkam:Ā āNomor yang Anda hubungi tidak dalam layanan.ā
š¹ Menghubungkan ā Suara Sibuk (nomorSibuk)
-
Kejadian:Ā
nomorSibuk -
Transisi:Ā
nomorSibuk ā nadaSibuk -
Aksi:Ā Putar nada sibuk; beri tahu pengguna bahwa saluran sedang digunakan.
š¹ Terhubung ā nadaSibukCepat (trunkSibuk)
-
Kejadian:Ā
trunkSibuk -
Transisi:Ā
trunkSibuk ā nadaSibukCepat -
Aksi:Ā Putar nada sibuk cepat; menunjukkan kemacetan jaringan.
ā ļøĀ Catatan:Ā Ini adalahĀ keadaan kesalahanĀ yang mengganggu alur normal. Harus ditangani secara baik.
3.Ā Mekanisme Waktu Habis & Peringatan
š¹ Menelpon ā Peringatan (waktu habis)
-
Kejadian:Ā
waktu habisĀ setelah 30 detik tidak aktif -
Transisi:Ā
waktu habis ā Peringatan -
Aksi:Ā Putar nada peringatan; beri tahu pengguna untuk melanjutkan atau gantung.
š¹ Peringatan ā Waktu Habis (waktu habis)
-
Kejadian:Ā
waktu habislagi setelah 10 detik -
Transisi:Ā
waktu habis ā Waktu habis -
Aksi:Batalkan percobaan panggilan; kembali ke
Idle.
ā±ļøĀ Logika waktu habis mencegah menunggu tanpa batas dan meningkatkan pengalaman pengguna.
4.Ā Panggilan Aktif & Putus
š¹ Terhubung ā Berdering (dilalui)
-
Kejadian:Ā
dilaluiĀ (jaringan berhasil melalui panggilan) -
Transisi:Ā
dilalui ā Berdering -
Aksi:Ā Kirim sinyal berdering ke pihak yang dihubungi.
š¹ Berdering ā Terhubung (panggilan yang dihubungi dijawab)
-
Kejadian:Ā
panggilan yang dihubungi dijawab -
Transisi:Ā
panggilan yang dihubungi dijawab ā Terhubung -
Aksi:Ā Bangun koneksi audio; mulai rekaman panggilan (jika diaktifkan).
š¹ Terhubung ā Putus (onHook ATAU panggilan yang dihubungi terputus)
-
Dua Jalur untuk Putus:
-
Pengguna menggantung:Ā
onHook ā Putus -
Pihak lain menggantung:Ā
panggilanTeleponTerputus ā Terputus
-
šĀ Kedua transisi mengarah keĀ
TerputusĀ sebelum mencapaiĀStatus Akhir.
š¹ Terputus ā Status Akhir
-
Peristiwa:Ā Tidak ada (implisit atau melalui tindakan pembersihan)
-
Transisi:Ā
Terputus ā Akhir -
Aksi:Ā Bersihkan sumber daya, catat durasi panggilan, perbarui statistik.
ā Ā Status Akhir menandakan akhir dari siklus hidup panggilan.
šØ Prinsip Desain Visual untuk Kejelasan
Untuk membuat mesin status yang kompleks mudah dibaca dan dipelihara:
| Prinsip | Implementasi |
|---|---|
| Jalur Utama yang Normal | Jaga alur utama (Tunggu ā nadaPanggilan ā Mengetik ā Menghubungkan ā Berdering ā Terhubung) sebagai garis vertikal atau horizontal yang bersih. |
| Cabangkan ke Luar untuk Penyimpangan | Tempatkan status kesalahan (nadaSibuk, nadaSibukCepat, pesanTerrekam) sebagai cabang sampingan. |
| Kelompokkan Status yang Terkait | GunakanĀ status kompositĀ untuk kondisi kesalahan (lihat di bawah). |
| Gunakan Status Palsu Secara Bijak | AwalĀ danĀ AkhirĀ harus ditandai dengan jelas. |
| Hindari Transisi yang Berpotongan | Jaga agar panah tidak tumpang tindih; gunakan daerah ortogonal jika diperlukan. |
š§ Teknik Pemodelan Lanjutan
ā State Komposit: Pengelompokan āErrorā
Alih-alih mencantumkanĀ BusyTone,Ā FastBusyTone, danĀ RecordedMessageĀ sebagai state terpisah, kelompokkan di bawahĀ state kompositĀ yang disebutĀ Error:
[Error]
āāā BusyTone
āāā FastBusyTone
āāā RecordedMessage
-
Aksi Masuk:Ā Putar nada kesalahan atau pesan.
-
Aksi Keluar:Ā Kembali keĀ
DialToneĀ atauĀIdleĀ setelah respons pengguna.
ā Ā Manfaat:Mengurangi kekacauan visual dan meningkatkan skalabilitas.
ā Kondisi Penjaga (Peningkatan Opsional)
Tambahkan penjaga untuk menyempurnakan transisi:
digit(n) [number.length < 15] ā Menelpon
validNumber [number.isInternational] ā Terhubung
š ļø Penjaga mencegah transisi yang tidak valid dan mendukung logika bersyarat.
š Poin-Poin Utama: Praktik Terbaik untuk Mesin State yang Kompleks
| Latihan | Mengapa Ini Penting |
|---|---|
| Model Jalur Tidak Bahagia | Sistem nyata gagal. Merancang untukĀ nomorTidakValid,Ā waktuHabis,Ā saluranSibukĀ menjamin keandalan. |
| Gunakan Ekspresi Aksi | SertakanĀ / logPercobaanPanggilan()Ā atauĀ / mainkanTone()Ā untuk menunjukkan efek samping. |
| Jaga agar Acara Jelas & Berfokus pada Aksi | GunakanĀ onHook,Ā dilalui,Ā panggilanTeleponDijawabĀ sebagai ganti dariĀ e1,Ā e2. |
| Namai Status dengan Jelas | HindariĀ State1,Ā State2. GunakanĀ Menelepon,Ā Berdering,Ā Terhubung. |
| Dokumentasikan Asumsi | Misalnya, āWaktu habis setelah 30 detik tidak aktifā harus dicatat dalam komentar. |
š» Generasi Kode: PlantUML & Mermaid
Berikut adalahĀ blok kode siap pakaiĀ untuk menghasilkan diagram ini dalam format yang Anda sukai.
ā Kode PlantUML
@startuml
[*] ā> Idle
Idle ā> DialTone : onHook
DialTone ā> Menelepon : digit(n)
Menelepon ā> Menelepon : digit(n) ā Transisi diri
Menelepon ā> Menyambungkan : nomorValid
Dialing ā> RecordedMessage : nomorTidakValid
Dialing ā> Peringatan : waktuHabis
Peringatan ā> WaktuHabis : waktuHabis
Menghubungkan ā> Berdering : dialihkan
Menghubungkan ā> nadaSibuk : nomorSibuk
Menghubungkan ā> nadaSibukCepat : saluranSibuk
Berdering ā> Terhubung : teleponPanggilanDiangkat
Terhubung ā> Terputus : terlepasDariPanggilan
Terhubung ā> Terputus : teleponPanggilanTerputus
Terputus ā> [*] : bersihkan
state āKesalahanā sebagai ErrorState {
state āNadaSibukā sebagai BusyTone
state āNadaSibukCepatā sebagai FastBusyTone
state āPesanTerrekamā sebagai RecordedMessage
}
ā Aksi Internal
Idle : entry / Tunggu lepas dari panggilan
NadaPanggilan : entry / Putar nada panggilan
Menghubungkan : entry / Kumpulkan digit
Menghubungkan : entry / Arahkan panggilan
Berdering : entry / Dering telepon jarak jauh
Terhubung : entry / Bangun sesi panggilan
Terputus : entry / Hentikan sesi
@enduml
š„Ā Cara Menggunakan:Ā Tempelkan ke dalamĀ PlantUML LiveĀ atau plugin IDE Anda.
ā Kode Mermaid

stateDiagram-v2
[*] --> Idle
Idle --> DialTone : onHook
DialTone --> Dialing : digit(n)
Dialing --> Dialing : digit(n) ' Transisi diri
Dialing --> Connecting : validNumber
Dialing --> RecordedMessage : invalidNumber
Dialing --> Warning : timeout
Warning --> Timeout : timeout
Connecting --> Ringing : routed
Connecting --> BusyTone : numberBusy
Connecting --> FastBusyTone : trunkBusy
Ringing --> Connected : calledPhoneAnswers
Connected --> Disconnected : onHook
Connected --> Disconnected : calledPhoneHangsUp
Disconnected --> [*] : cleanup
state Error {
BusyTone
FastBusyTone
RecordedMessage
}
Connecting --> BusyTone : numberBusy
Connecting --> FastBusyTone : trunkBusy
Dialing --> RecordedMessage : invalidNumber
note right of BusyTone
Putar nada sibuk standar
end note
note right of FastBusyTone
Putar nada sibuk cepat (kepadatan jaringan)
end note
note right of RecordedMessage
Putar pesan rekaman: "Nomor tidak dalam layanan."
end note
note right of Timeout
Percobaan panggilan dibatalkan setelah 40 detik
end note
š„Ā Cara Menggunakan:Ā Tempelkan ke dalamĀ Editor Langsung MermaidĀ atau alat Markdown yang didukung (VS Code, Obsidian, dll.).
š Ringkasan & Kesimpulan Akhir
IniĀ Sistem Kontrol Panggilan TeleponĀ mesin status adalahĀ contoh dunia nyataĀ dari bagaimana UML dapat memodelkan sistem yang kompleks dan berbasis peristiwa dengan keandalan tinggi.
ā Apa yang Membuat Diagram Ini Efektif:
-
JelasĀ jalur utamaĀ dengan alur logis.
-
KomprehensifĀ penanganan kesalahan.
-
PenggunaanĀ transisi diri,Ā status komposit, danĀ penjaga.
-
Kesadaran visual melaluiĀ pengelompokanĀ danĀ anotasi.
š ļø Kapan Menggunakan Pola Ini:
-
Sistem telepon
-
Kontrol perangkat IoT
-
Manajemen sesi pengguna
-
Mesin kerja alir
-
Sistem tertanam dengan logika status terbatas
š Ingin Memperluas Ini?
Pertimbangkan menambahkan:
-
Perekaman PanggilanĀ status (denganĀ
mulaiRekam,ĀhentikanRekamĀ kejadian) -
Pengalihan PanggilanĀ logika (pemrosesan kondisional)
-
Tunggu PanggilanĀ dukungan (status paralel)
-
Transfer PanggilanĀ sebagai substatus dariĀ
Terhubung -
Riwayat StatusĀ (riwayat dangkal/dalam) untuk masuk kembali setelah gangguan
š Rekomendasi Akhir
Selalu model jalur sukses dan kegagalan.
Mesin status yang hanya menangani ‘jalur bahagia’ bersifat tidak lengkap dan rentan terhadap bug di produksi.
Gunakan panduan ini sebagaiĀ templatĀ untuk memodelkan sistem real-time apa pun di manaĀ transisi status,Ā kejadian, danĀ ketahanan terhadap kesalahanĀ penting.
ā
Ā Siap untuk menghasilkan, memvisualisasikan, atau memperluas?
š SalinĀ PlantUMLĀ atauĀ MermaidĀ kode di atas dan integrasikan ke dalam dokumentasi, diagram arsitektur, atau dokumen desain sistem Anda.
Beritahu saya jika Anda inginĀ versi PDF,Ā diagram interaktif, atauĀ integrasi ke dalam model sistem yang lebih besar (misalnya, dengan komponen atau diagram urutan)!
šĀ āSistem terbaik bukan hanya benarāmereka memprediksi kegagalan.ā
āĀ Merancang dengan Mesin Status UML











