Unified Modeling Languange (UML)
Published: 2023-03-30 15:31:55

**_Unified Modelling Language_ (UML)** adalah suatu alat untuk memvisualisasikan dan mendokumentasikan hasil analisa dan desain yang berisi sintak dalam memodelkan sistem secara visual. Juga merupakan satu kumpulan konvensi pemodelan yang digunakan untuk menentukan atau menggambarkan sebuah sistem software yang terkait dengan objek.

Sejarah UML sendiri terbagi dalam dua fase: sebelum dan sesudah munculnya UML. Dalam fase sebelum, UML sebenarnya sudah mulai diperkenalkan sejak tahun 1990an namun notasi yang dikembangkan oleh para ahli analisis dan desain berbeda-beda, sehingga dapat dikatakan belum memiliki standarisasi.

Fase kedua: dilandasi dengan pemikiran untuk mempersatukan metode tersebut dan dimotori oleh Object Management Group (OMG) maka pengembangan UML dimulai pada akhir tahun 1994 ketika Grady Booch dengan metode OOD (Object-Oriented Design), Jim Rumbaugh dengan metode OMT (Object Modelling Technique) mereka ini bekerja pada Rasional Software Corporation dan Ivar Jacobson dengan metode OOSE (Object-Oriented Software Engineering) yang bekerja pada perusahaan Objectory Rasional.

Saat ini sebagian besar para perancang sistem informasi dalam menggambarkan informasi dengan memanfaatkan UML diagram dengan tujuan utama untuk membantu tim proyek berkomunikasi, mengeksplorasi potensi desain, dan memvalidasi desain arsitektur perangkat lunak atau pembuat program.

---


## Diagram UML
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8c1rxi9rcc0dgxi09jhr.png)

---


## Komponen-komponen UML
UML terdiri atas tiga kategori dan memiliki 13 jenis diagram yaitu:

1. **Struktur Diagram** : 
     1. **Class Diagram.**
       Class diagram menggambarkan struktur 
       statis dari kelas dalam sistem anda dan menggambarkan 
       atribut, operasi dan hubungan antara kelas. Class 
       diagram membantu dalam memvisualisasikan struktur kelas- 
       kelas dari suatu sistem dan merupakan tipe diagram yang 
       paling banyak dipakai. Selama tahap desain, class 
       diagram berperan dalam menangkap struktur dari semua 
       kelas yang membentuk arsitektur sistem yang dibuat.
     2. **Object Diagram.**
       Object diagram menggambarkan kejelasan kelas dan warisan 
       dan kadangkadang diambil ketika merencanakan kelas, atau 
       untuk membantu pemangku kepentingan non-program yang 
       mungkin menemukan diagram kelas terlalu abstrak.
     3. **Component Diagram.**
       Component diagram menggambarkan struktur fisik dari 
       kode, pemetaan pandangan logis dari kelas proyek untuk 
       kode aktual di mana logika ini dilaksanakan.
     4. **Deployment Diagram**
       Deployment diagram memberikan gambaran dari arsitektur 
       fisik perangkat lunak, perangkat keras, dan artefak dari 
       sistem. Deployment diagram dapat dianggap sebagai ujung 
       spektrum dari kasus penggunaan, menggambarkan bentuk 
       fisik dari sistem yang bertentangan dengan gambar 
       konseptual dari pengguna dan perangkat berinteraksi 
       dengan sistem.
     5. **Composite Structure Diagram.**
       Sebuah diagram struktur komposit mirip dengan diagram 
       kelas, tetapi menggambarkan bagian individu, bukan 
       seluruh kelas. Kita dapat menambahkan konektor untuk 
       menghubungkan dua atau lebih bagian dalam atau 
       ketergantungan hubungan asosiasi.
     6. **Package Diagram.**
       Package diagram biasanya digunakan untuk menggambarkan 
       tingkat organisasi yang tinggi dari suatu proyek 
       software. Atau dengan kata lain untuk menghasilkan 
       diagram ketergantungan paket untuk setiap paket dalam 
       Pohon Model.

2. **Behavior Diagram** : 
     7. **Use case Diagram.**
       Diagram yang menggambarkan actor, use case dan relasinya 
       sebagai suatu urutan tindakan yang memberikan nilai 
       terukur untuk aktor. Sebuah use case digambarkan sebagai 
       elips horizontal dalam suatu diagram UML use case.
     8. **Activity Diagram.**
       Menggambarkan aktifitas-aktifitas, objek, state, 
       transisi state dan event. Dengan kata lain kegiatan 
       diagram alur kerja menggambarkan perilaku sistem untuk 
       aktivitas.
     9. **State Machine Diagram.**
       Menggambarkan state, transisi state dan event.

3. **Interaction diagram** : 
     10. **Communication Diagram.**
       Serupa dengan sequence diagram, tetapi diagram 
       komunikasi juga digunakan untuk memodelkan perilaku 
       dinamis dari use case. Bila dibandingkan dengan Sequence 
       diagram, diagram komunikasi lebih terfokus pada 
       menampilkan kolaborasi benda daripada urutan waktu.
     11. **Interaction Overview Diagram.**
       Interaksi overview diagram berfokus pada gambaran aliran 
       kendali interaksi dimana node adalah interaksi atau 
       kejadian interaksi.
     12. **Sequence Diagram.**
       Sequence diagram menjelaskan interaksi objek yang 
       disusun berdasarkan urutan waktu. Secara mudahnya 
       sequence diagram adalah gambaran tahap demi tahap, 
       termasuk kronologi (urutan) perubahan secara logis yang 
       seharusnya dilakukan untuk menghasilkan sesuatu sesuai 
       dengan use case diagram.
     13. **Timing diagram.**
       Timing diagram di UML didasarkan pada diagram waktu 
       hardware awalnya dikembangkan oleh para insinyur 
       listrik.

---


## KEUNTUNGAN DAN KELEMAHAN UML
Unified Modeling Language (UML) merupakan alat bantu, bahasa pemodelan yang dapat digunakan untuk rancang bangun berorientsi-objek. UML dapat digunakan untuk spesifikasi, visualisasi dan dokumentasi sistem pada fase pengembangan.

  **_Keuntungan:_**
      Bahasa pemodelan visual dalam proses pembangunannya maka 
      UML bersifat independen terhadap bahasa pemrograman 
      tertentu.

  **_Kekurangan:_**
      UML dipandang masih mempunyai kekurangan terutama dalam 
      meng-generate kode program secara komplit. Hal ini karena 
      kurangnya cara memodelkan aspek kelakuan internal 
      perangkat lunak untuk dipetakan ke dalam kode program.
      Seperti yang kita ketahui, diagram UML yang dapat 
      menghasilkan kode hanyalah diagram class, namun itupun 
      hanya sebatas kerangka kodenya saja dan tidak bisa meng- 
      generate badan program-nya.

---

## Lampiran
**Contoh Use Case Diagram pada Restoran:**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/78kig2w8i7n6ldcel9ow.png)



**Contoh Class Diagram pada Restoran:**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pl0roj6cz41u46444k2j.png)


**Contoh Activity Diagram Admin pada Restoran:**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4bdfhcgoog8qfwhpugp1.png)


**Contoh Activity Diagram Customer pada Restoran:**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nus1wxzj9mqqss6woc6c.png)

---
**Struktur Pembentukan Diagram UML**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwtvrgbocmtn6xomzp4p.png)

---