Unified Modeling Language

**Unified Modeling Language** (**UML**) adalah bahasa spesifikasi baku untuk mendokumentasikan, menspesifikasikan, dan membangun sistem perangkat lunak.

## Sejarah

### Latar Belakang

Pada 1994, lebih dari 50 metode diperkenalkan untuk mendukung pengembangan perangkat lunak berorientasi objek. Keberagaman ini menimbulkan masalah tersendiri bagi para praktisinya, khususnya tidak ada satupun yang dapat memenuhi seluruh kebutuhan pengembangan dan perbedaan notasi, proses, dan alat pendukung setiap metode.

Hanya segelintir metode yang mendapat perhatian, khususnya Object-Oriented Design (OOD), Object Modeling Technique (OMT), dan Object-Oriented Software Engineering (OOSE). OOD dikembangkan oleh Grady Booch, OMT dikembangkan oleh James Rumbaugh, dan OOSE dikembangkan oleh Ivar Jacobson—ketiganya dikenal sebagai "three Amigos".

### Pengembangan
Pada Oktober 1994, demi mengakhiri perbedaan metode, Booch dan Rumbaugh berkolaborasi untuk menyatukan metode OOD dan OMT. Kolaborasi tersebut menghasilkan **Unified Method** versi 0.8, dirilis terbuka sebagai draf pada Oktober 1995. Pada tahun yang sama, Jacobson bergabung dengan mereka dan memperlebar lingkup Unified Method dengan metodenya sendiri, khususnya ide kasus penggunaan (*use case*).

Menyadari bahwa hasilnya lebih cocok untuk membuat bahasa pemodelan, mereka membagi Unified Method menjadi dua buah: notasi Unified Modeling Language (UML) yang mereka lanjutkan, dan proses Rational Unified Process yang dilanjutkan oleh rekan-rekannya. Mereka melanjutkan UML, sementara RUP dilanjutkan oleh rekan-rekannya. Pada Juni 1996, UML mencapai versi 0.9.

## Pendahuluan
Unified Modeling Language (UML) adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat *[[tool]]* untuk mendukung pengembangan sistem tersebut. UML mulai diperkenalkan oleh *[[Object Management Group]]*, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980-an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP. UML merupakan dasar bagi perangkat (*tool*) desain berorientasi objek dari IBM.

UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun, dan mendokumentasikan suatu sistem informasi. UML dikembangkan sebagai suatu alat untuk analisis dan desain berorientasi objek oleh Grady Booch, Jim Rumbaugh, dan Ivar Jacobson. Namun demikian UML dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi. Penggunaan UML dalam industri terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri peranti lunak dan pengembangan sistem.

## UML
Sampai era tahun 1990 puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya adalah: metodologi booch, metodologi coad, metodologi OOSe, metodologi OMT, metodologi shlaer-mellor, metodologi wirfs-brock, dsb. Masa itu terkenal dengan masa perang metodologi (*method war*) dalam pendesainan berorientasi objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan kelompok/perusahaan lain yang menggunakan metodologi yang berlainan.

Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang merupakan tiga tokoh yang boleh dikata metodologinya banyak digunakan mempelopori usaha untuk penyatuan metodologi pendesainan berorientasi objek. Pada tahun 1995 direlease draft pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG).

## Diagram UML
UML menyediakan 10 macam diagram untuk memodelkan aplikasi berorientasi objek, yaitu:

* *Use Case Diagram* untuk memodelkan proses bisnis.
* *Conceptual Diagram* untuk memodelkan konsep-konsep yang ada di dalam aplikasi.
* *Sequence Diagram* untuk memodelkan pengiriman pesan (*message*) antar *objects*.
* *Collaboration Diagram* untuk memodelkan interaksi antar *objects*.
* *State Diagram* untuk memodelkan perilaku *objects* di dalam sistem.
* *[[Diagram Aktivitas|Activity Diagram]]* untuk memodelkan perilaku *Use Cases* dan *objects* di dalam *system*.
* *[[Class Diagram]]* untuk memodelkan struktur kelas.
* *Object Diagram* untuk memodelkan struktur *object*.
* *[[Diagram komponen|Component Diagram]]* untuk memodelkan komponen *object*.
* *Deployment Diagram* untuk memodelkan distribusi aplikasi.

Berikut akan dijelaskan 4 macam diagram yang paling sering digunakan dalam pembangunan aplikasi berorientasi object, yaitu *use case diagram, sequence diagram, collaboration diagram, dan class diagram*.

### ''Use Case Diagram''
*Use case diagram* digunakan untuk memodelkan semua bisnis proses berdasarkan perspektif pengguna sistem. Use case diagram terdiri atas diagram untuk use case dan *actor*. *Actor* merepresentasikan orang yang akan mengoperasikan atau orang yang berinteraksi dengan sistem aplikasi.

Use case merepresentasikan operasi-operasi yang dilakukan oleh *actor*. Use case digambarkan berbentuk elips dengan nama operasi dituliskan di dalamnya.*Actor* yang melakukan operasi dihubungkan dengan garis lurus ke use case.

### ''Sequence Diagram''
*Sequence Diagram* merupakan gabungan dari Diagram Class dan diagram Object yang memiliki suatu gambaran model statis.Namun ada juga yang bersifat dinamis, seperti Diagram Interaction.Diagram sequence merupakan salah satu diagram Interaction yang menjelaskan bagaimana suatu operasi itu dilakukan; *message* (pesan) apa yang dikirimdan kapan pelaksanaannya. Diagram ini diatur berdasarkan waktu. Objek-objek yang berkaitan dengan proses berjalannya operasi diurutkan dari kiri ke kanan berdasarkan waktu terjadinya dalam pesan yang terurut.

### ''Collaboration Diagram''
*Collaboration diagram* dipakai untuk memodelkan interaksi antar object di dalam sistem. Berbeda dengan sequence diagram yang lebih menonjolkan kronologis dari operasi-operasi yang dilakukan, collaboration diagram lebih fokus pada pemahaman atas keseluruhan operasi yang dilakukan oleh object.

### ''Class diagram''
*Class diagram* menggambarkan struktur statis class di dalam sistem. class merepresentasikan sesuatu yang ditangani oleh sistem. class dapat berhubungan dengan yang lain melalui berbagai cara: *associated* (terhubung satu sama lain), *dependent* (satu class tergantung/menggunakan class yang lain), *specialed* (satu class merupakan spesialisasi dari class lainnya), atau *package* (group bersama sebagai satu unit). sebuah sistem biasanya mempunyai beberapa class diagram.

## Referensi

## Daftar pustaka
* 
* 
* 

## Pranala luar
* Situs resmi UML
* Situs resmi Object Management Group
* https://web.archive.org/web/20160527160225/https://www.infoq.com/interviews/Ivar_Jacobson/
* https://dl.acm.org/doi/10.1145/317665.317673
* https://www.e-booksdirectory.com/details.php?ebook=6499