Terakhir kali menulis di blog ini mungkin suasananya masih berbeda. Mungkin waktu itu menulisnya masih bisa saya lakukan di kampus atau perpustakaan. Meskipun pandemi yang ada sekarang membuat segala hal perkuliahan menjadi dilakukan mandiri di rumah masing-masing, tentunya semangat belajarnya harus tetap tinggi ya teman-teman! Untuk postingan kali ini sesuai judulnya kita akan membahas mengenai UML. Buat yang sering berurusan dengan desain sistem pasti sudah tidak asing, maka dari itu mari langsung saja kita ulas sama-sama.

Pemodelan


Ketika mendengar kata 'model' kira-kira apa pikiran yang muncul di benak anda? Apakah Gigi Hadid? Naomi Campbhell? fashion show? tidak salah memang jika kata 'model' diasosiasikan dengan hal-hal di atas, namun model yang akan kita bahas sekarang arah pembahasannya akan sedikit berbeda.

model/mo·del/ /modél/ n 1 pola (contoh, acuan, ragam, dan sebagainya) dari sesuatu yang akan dibuat atau dihasilkan (KBBI)
Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding). Kita dapat membayangkan bahwa model piranti perangkat lunak tersebut seperti blueprint yang akan digunakan saat orang akan membuat bangunan. Blueprint akan menjadi panduan pada saat proses pembangunan berlangsung. 



Hal yang sama juga berlaku pada proses pembangunan sistem, model memegang peran yang krusial apalagi jiga sistem yangdibuat terbilang cukup kompeks. Dengan menggunakan model, diharapkan pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk faktor-faktor seperti scalability, robustness, security, dan sebagainya. Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian terkenal dengan sebuan segitiga sukses (the triangle for success). Ketiga unsur tersebut adalah metode pemodelan (notation), proses (process) dan tool yang digunakan.

Kenapa modelling penting untuk dilakukan?

Kesalahan persepsi
Distribusi pengembangan sistem

Iceberg Problem

Kesuksesan suatu proses peodelan kemudian ditentukan oleh apa yang disebut dengan "The Triangle of Succcess" . Terdapat tiga unsur, yaitu metode pemodelan (notation), proses, dan tools. Memahami notasi/ metode pemodelan tanpa mengetahui proses akan membuat proyek menjadi gagal. Lalu pemahaman terhapan notation dan proses kemudian disempurnakan dengan mengetahui tools yang tepat.


Unified Modelling Language (UML)

Unified Modelling Language (UML) adalah sebuah “bahasa” yang telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem.

Semakin kompleks bentukan sistem yang akan dibuat, maka semakin sulit komunikasi antara orang-orang yang saling terkait dalam pembuatan dan pengembangan software yang akan dibuat. Pada masa lalu, UML mempunyai peranan sebagai software blueprint (gambaran) language untuk analisis sistem, designer, dan programmer. Sedangkan pada saat ini, merupakan bagian dari software trade (bisnis software). UML memberikan jalur komunikasi dari sistem analis kemudian designer, lalu programmer mengenai rancangan software yang akan dikerjakan. 

Salah satu pemecahan masalah Object Oriented adalah dengan menggunakan UML. Oleh karena itu orang-orang yang berminat dalam mempelajari UML harus mengetahui dasar-dasar mengenai Object Oriented Solving (pemecahan masalah OO). Tahap pertama, pembentukan model. Model adalah gambaran abstrak dari suatu dasar masalah. Dan dunia nyata atau tempat dimana masalah itu timbul bisa disebut dengan domain. Model mengandung obyek-obyek yang beraktifitas dengan saling mengirimkan messages (pesan-pesan). Obyek mempunyai sesuatu yang diketahui (atribut /attributes) dan sesuatu yang dilakukan (behaviors atau operations). Attributes hanya berlaku dalam ruang lingkup obyek itu sendiri (state). Lalu “blue print” dari suatu obyek adalah Classes (kelas). Obyek merupakan bagian-bagian dari kelas.

Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C.

Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering).

Sejarah UML

Pada Oktober 1994, Dr. James Rumbaugh bergabung dengan Perusahaan Rational sotware, dimana Grady Booch sudah bekerja disana sebelumnya. Grady Booch mengembangkan Object Oriented Design (OOD) dan Dr. James Rumbaugh mengembangkan Object Modeling Technique (OMT). Duet Mereka pada Oktober 1995 menghasilkan Unified Method versi 0.8. Musim gugur 1995 Dr. Ivar Jacobson ikut pula bergabung dengan duet Rumbaugh-Booch, dengan memperkenalkan tool use case. Trio tersebut pada bulan Juni 1996 menghasilkan Unified Modeling Language (UML) versi 0.9. Sebelumnya Dr. Ivar Jacobson mengembangkan Object Oriented Software Engineering (OOSE). Trio ini mengembangkan Ratinal Unified Process (RUP) Banyak perusahaan software merasakan bagaimana pentingnya UML dalam tujuan strategis mereka, sehingga beberapa perusahaan membentuk sebuah konsorsium yang terdiri dari perusahaan-perusahaan seperti :
  • Microsoft 
  • Oracle
  • IBM
  • Hewlett-Packard
  • Intellicorp
  • I-Logix
  • DEC
  • Texas Instrumen

Pada bulan September 1997 lahirlah UML versi 1.1, dengan 8 buah diagram, yaitu  :
  • Use case diagram
  • Activity Diagram
  • Sequence diagram
  • Collaboration diagram
  • Class diagram
  • Statechart diagram
  • Component diagram
  • Deployment diagram

Pada bulan November 1997 sebuah organisasi non profit standarisasi Object Management Group (OMG) mengakui UML sebagai sebuah bahasa pemodelan standar untuk aplikasi object oriented. OMG didirikan pada bulan April 1989 oleh sebelas perusahaan software, dengan kantor pusat di Needham, MA, USA. (www.omg.org) Pada tahun 1999 lahirlah UML versi 1.3, menjadi 9 buah diagram, dengan penambahan Business use case Diagram. Pada May 2001 lahirlah UML versi 1.4, menjadi 10 buah diagram, dengan penambahan Object Diagram.

Pada tahun 2002 lahirlah UML versi 2.0, menjadi 13 buah diagram, dengan penambahan dan penggantian yaitu :
  • Use Case Diagram
  • Activity Diagram
  • Sequence Diagram
  • Communication Diagram (Collaboration diagram in versi 1.x)
  • Class Diagram
  • State Machine Diagram (Statechart diagram in versi 1.x)
  • Component Diagram
  • Deployment Diagram
  • Composite Structure Diagram
  • Interaction Overview Diagram
  • Object Diagram
  • Package Diagram 
  • Timing Diagram       

Konsep Dasar UML

Untuk dapat memahami UML membutuhkan bentuk konsep dari sebuah bahasa model, dan mempelajari 3 (tiga) elemen utama dari UML seperti building block, aturan-aturan yang menyatakan bagaimana building block diletakkan secara bersamaan, dan beberapa mekanisme umum (common).

Building Blocks 
Tiga macam yang terdapat dalam building block adalah : 

  • Benda/Things, adalah abstraksi yang pertama dalam sebuah model
  • Hubungan/Relationships, sebagai alat komunikasi dari benda-benda
  • Bagan/Diagrams, sebagai kumpulan / group dari benda-benda/things
Benda/Things 
Adalah hal yang sangat mendasar dalam model UML, juga merupakan bagian paling statik dari sebuah model, serta menjelaskan elemenelemen lainnya dari sebuah konsep dan atau fisik. Bentuk dari beberapa benda/thing adalah sebagai berikut: 

  • Classes, yang diuraikan sebagai sekelompok dari object yang mempunyai atribute, operasi, hubungan yang semantik. Sebuah kelas mengimplementasikan 1 atau lebih interfaces. Sebuah kelas dapat digambarkan sebagai sebuah persegi panjang, yang mempunyai sebuah nama, atribute, dan metoda pengoperasiannya. 
  • Interfaces, merupakan sebuah antar-muka yang menghubungkan dan melayani antar kelas dan atau elemen. ‘Interface’ / antar-muka mendefinisikan sebuah set / kelompok dari spesifikasi pengoperasian, umumnya digambarkan dengan sebuah lingkaran yang disertai dengan namanya. Sebuah antar-muka berdiri sendiri dan umumnya merupakan pelengkap dari kelas atau komponen. 
  • Collaboration, yang didefinisikan dengan interaksi dan sebuah kumpulan / kelompok dari kelas-kelas/elemen-elemen yang bekerja secara bersama-sama. Collaborations mempunyai struktur dan dimensi. Pemberian sebuah kelas memungkinkan berpartisipasi didalam beberapa collaborations dan digambarkan dengan sebuah ‘elips’ dengan garis terpotong-potong. 
  • Use cases, adalah rangkaian/uraian sekelompok yang saling terkait dan membentuk sistem secara teratur yang dilakukan atau diawasi oleh sebuah aktor. ‘use case’ digunakan untuk membentuk tingkah-laku benda/ things dalam sebuah model serta di realisasikan oleh sebuah collaboration. Umumnya ‘use case’ digambarkan dengan sebuah ‘elips’ dengan garis yang solid, biasanya mengandung nama. 
  • Nodes, merupakan fisik dari elemen-elemen yang ada pada saat dijalankannya sebuah sistem, contohnya adalaha sebuah komputer, umumnya mempunyai sedikitnya memory dan processor. Sekelompok komponen mungkin terletak pada sebuah node dan juga mungkin akan berpindah dari node satu ke node lainnya. Umumnya node ini digambarkan seperti kubus serta hanya mengandung namanya. 
Hubungan / Relationship 
Ada 4 macam hubungan didalam penggunaan UML, yaitu; 

  • Dependency, adalah hubungan semantik antara dua benda/things yang mana sebuah benda berubah mengakibatkan benda satunya akan berubah pula. Umumnya sebuah dependency digambarkan sebuah panah dengan garis terputus-putus. 
  • Association, hubungan antar benda struktural yang terhubung diantara obyek. Kesatuan obyek yang terhubung merupakan hubungan khusus, yang menggambarkan sebuah hubungan struktural diantara seluruh atau sebagian. Umumnya assosiation digambarkan dengan sebuah garis yang dilengkapi dengan sebuah label, nama, dan status hubungannya. 
  • Generalizations, adalah menggambarkan hubungan khusus dalam obyek anak/child yang menggantikan obyek parent / induk . Dalam hal ini, obyek anak memberikan pengaruhnya dalam hal struktur dan tingkah lakunya kepada obyek induk. Digambarkan dengan garis panah. 
  • Realizations, merupakan hubungan semantik antara pengelompokkan yang menjamin adanya ikatan diantaranya. Hubungan ini dapat diwujudkan diantara interface dan kelas atau elements, serta antara use cases dan collaborations. Model dari sebuah hubungan realization. 
Bagan/Diagram 
UML sendiri terdiri atas pengelompokkan diagram-diagram sistem menurut aspek atau sudut pandang tertentu. Diagram adalah yang menggambarkan permasalahan maupun solusi dari permasalahan suatu model. UML mempunyai 9 diagram, yaitu; 

  • Use Case Diagram, menggambarkan sekelompok use cases dan aktor yang disertai dengan hubungan diantaranya. Diagram use cases ini menjelaskan dan menerangkan kebutuhan / requirement yang diinginkan/ dikehendaki user/pengguna, serta sangat berguna dalam menentukan struktur organisasi dan model dari pada sebuah sistem. 
  • Class Diagram, yang memperlihatkan struktur statis dari kelas actual didalam sistem. 
  • Object Diagram, yang merupakan varian dari kelas diagram yang memperlihatkan lebih detail banyaknya obyek yang mengintantiasi (instances) kelas. 
  • State Diagram, yang memperliatkan semua keadaan (state) yang dapat dimiliki oleh kelas dan event yang dapat merubah keadaan tersebut. 
  • Sequence Diagram, yang memperlihatkan kolaborasi dinamik antara objek-objek dengan suatu urutan pesan (a sequence of message) antar objek tersebut. 
  • Collaboration Diagram, yang memperlihatkan kolaborasi dinamik antar objek tanpa memperhatikan aspek waktu. 
  • Activity Diagram, yang memperlihatkan aliran urutan aktifitas. 
  • Component Diagram, yang memperlihatkan struktur fisik dari source code dalam terminology code components. Komponen berisi informasi tentang logical class dapat berupa komponen source code, komponen biner atau komponen yang dapat dieksekusi. 
  • Deployment Diagram, yang memperlihatkan arsitektur fisik dari hardware dan software pada sistem. TEO


Kesimpulan:

UML sangat penting untuk dilakukan dalam pembuatan sebuah sistem. UML memberikan gambaran awal dari sebuah sistem yang rumit, maka dari itu dengan adanya UML proses pembuatan sistem akan lebih mudah dilakukan.

Referensi: