UML

Dalam bidang kejuruteraan perisian, **UML** (*Unified Modeling Language*) merupakan bahasa pemodelan yang dipiawaikan untuk pemodelan objek. UML merupakan bahasa pemodelan kegunaan-umum yang menyertakan penyampaian grafik untuk mencipta model abstrak sistem, yang dipanggil sebagai model UML. UML tidak terhad kepada pemodelan perisian sahaja. UML juga digunakan dalam pemodelan proses-proses perniagaan, pemodelan sistem-sistem kejuruteraan dan mempersembahkan struktur-struktur organisasi.

Penciptaan UML pada mulanya dirangsang oleh keinginan untuk menyeragamkan sistem dan pendekatan notasi yang berbeza dan pendekatan kepada reka bentuk perisian. Ia telah dibangunkan oleh Grady Booch, Ivar Jacobson dan James Rumbaugh di *Rational Software* (Perisian Rasional) pada 1994-1995, dengan perkembangan selanjutnya yang diterajui oleh mereka sepanjang tahun 1996.

Pada tahun 1997 UML diterima pakai sebagai piwaian oleh Kumpulan Pengurusan Objek (Object Management Group-OMG), dan telah diuruskan oleh organisasi ini sejak itu. Pada tahun 2005 UML juga diterbitkan oleh Organisasi Antarabangsa bagi Standardisasi (ISO) sebagai piawaian ISO yang diluluskan.  Sejak itu, piawaian itu telah diubah suai secara berkala untuk merangkumi semakan UML terkini.

## Sejarah

### Sebelum UML 1.x
UML telah berkembang sejak separuh kedua tahun 1990-an dan berakar umbi dalam kaedah pengaturcaraan berorientasikan objek yang dibangunkan pada akhir 1980-an dan awal 1990-an. Garis masa (lihat imej) menunjukkan kemunculan sejarah kaedah pemodelan berorientasikan objek dan notasi.

Ia pada asalnya berdasarkan pada notasi kaedah Booch, teknik pemodelan objek (OMT) dan kejuruteraan perisian berorientasikan objek (OOSE), yang mana ia telah diintegrasikan ke dalam bahasa tunggal.

Perbadanan Perisian Rasional mengupah James Rumbaugh dari General Electric pada tahun 1994 dan selepas itu syarikat itu menjadi sumber bagi dua pendekatan pemodelan berorientasikan objek yang paling popular masa kini: Teknik pemodelan objek Rumbaugh (OMT) dan kaedah Grady Booch. Mereka tidak lama kemudian dibantu dalam usaha mereka oleh Ivar Jacobson, pencipta kaedah kejuruteraan perisian berorientasikan objek (OOSE), yang menyertai mereka di Rational pada tahun 1995.

### UML 1.x
Di bawah kepimpinan teknikal ketiga-tiga mereka (Rumbaugh, Jacobson dan Booch), sebuah konsortium yang digelar Rakan UML dibentuk pada tahun 1996 untuk menyelesaikan spesifikasi Bahasa Pemodelan Bersepadu (Unified Modeling Language-UML), dan mencadangkannya kepada Kumpulan Pengurusan Objek (OMG) untuk penyeragaman. Perkongsian ini juga termasuk tambahan pihak-pihak yang berminat (contohnya HP , DEC , IBM dan Microsoft). Draft UML 1.0 Rakan UML dicadangkan oleh konsortium kepada OMG pada bulan Januari 1997. Pada bulan yang sama, Rakan Kongsi UML membentuk kumpulan, yang brtujuan untuk mentakrifkan makna sebenar pembinaan bahasa, dipengerusikan oleh Cris Kobryn dan ditadbir oleh Ed Eykholt, untuk menyelesaikan spesifikasi dan mengintegrasikannya dengan usaha penyeragaman yang lain. Hasil kerja ini, UML 1.1, telah diserahkan kepada OMG pada bulan Ogos 1997 dan diterima pakai oleh OMG pada November 1997.

Selepas pembebasan pertama pasukan petugas ditubuhkan untuk memperbaiki bahasa, yang mengeluarkan beberapa revisi kecil, 1.3, 1.4, dan 1.5.

Piawaian yang dihasilkan (dan juga piawaian asal) telah dilihat sebagai tidak jelas dan tidak konsisten.

#### Notasi kardinal
Sama seperti pangkalan data Chen, Bachman, dan rajah ISO ER , model kelas ditetapkan untuk menggunakan kardinaliti "lihat-merentas", walaupun beberapa penulis (Merise, Elmasri & Navathe  antara lain ) cenderung "sisi-sama" atau "melihat-sini" bagi peranan dan kedua-dua kardinaliti minimum dan maksimum. Penyelidik terkini (Feinerer, Dullea et alia ) telah menunjukkan bahawa teknik "melihat-silang" yang digunakan oleh gambar UML dan ER kurang berkesan dan kurang koheren apabila digunakan untuk perhubungan *n*-ary bagi susunan khusus lebih besar daripada 2.

Feinerer berkata: "Masalah timbul sekiranya kita beroperasi di bawah semantik semantik seperti yang digunakan untuk persatuan UML. Hartmann menyiasat keadaan ini dan menunjukkan bagaimana dan mengapa transformasi yang berbeza gagal.", Dan: "Seperti yang akan kita lihat pada beberapa laman hadapan, tafsiran lihat-lintang memperkenalkan beberapa masalah yang menghalang perlanjutan mekanisme mudah dari perduaan kepada kaitan *n*-ary."

### UML 2

UML 2.0 revisi utama menggantikan versi 1.5 pada tahun 2005, yang dibangunkan dengan konsortium yang diperbesar untuk meningkatkan bahasa bagi mencerminkan pengalaman baru mengenai penggunaan ciri-cirinya.

Sungguhpun UML 2.1 tidak pernah diterbitkan sebagai spesifikasi rasmi, versi 2.1.1 dan 2.1.2 muncul pada 2007, diikuti oleh UML 2.2 pada bulan Februari 2009. UML 2.3 secara rasmi dikeluarkan pada Mei 2010. UML 2.4.1 secara rasmi dikeluarkan pada bulan Ogos 2011. UML 2.5 telah dikeluarkan pada Oktober 2012 sebagai versi "Dalam proses" dan secara rasminya dikeluarkan pada bulan Jun 2015.

Terdapat empat bahagian untuk spesifikasi UML 2.x:

# Superstruktur yang mentakrifkan notasi dan semantik untuk gambar rajah dan elemen model mereka
# Infrastruktur yang mentakrifkan metamodel teras yang mana Superstructure itu berasaskan
# Objek Bahasa Objek (OCL) untuk menentukan peraturan bagi elemen model
# Pertukaran Diagram UML yang mentakrif bagaimana susunan peta UML 2 ditukar

Versi terkini piawai ini adalah: UML Superstructure versi 2.4.1, UML Infrastructure versi 2.4.1, versi OCL 2.3.1, dan UML Versi Interchange 1.0. Ia terus dikemas kini dan ditingkatkan oleh pasukan petugas semakan, yang menyelesaikan sebarang masalah dengan bahasa itu.

## Reka bentuk
UML menawarkan cara untuk memvisualisasikan pelan seni bina sistem dalam rajah, termasuk elemen seperti:

* sebarang aktiviti (pekerjaan);
* komponen individu sistem;
** dan bagaimana mereka boleh berinteraksi dengan komponen perisian lain;
* bagaimana sistem akan dilaksanakan;
* bagaimana entiti berinteraksi dengan (komponen dan antara muka) lain; 
* antara muka pengguna luaran.

Sungguhpun pada asalnya bertujuan untuk dokumentasi reka bentuk berorientasikan objek, UML telah diperluas ke set dokumentasi reka bentuk yang lebih besar (seperti yang disenaraikan di atas),  dan didapati berguna dalam banyak konteks.

### Kaedah pembangunan perisian
UML bukanlah kaedah pembangunan dengan sendirinya; Sungguhpun begitu, ia direka untuk bersesuaian dengan kaedah pembangunan perisian berorientasikan objek utama masa, contohnya OMT , kaedah Booch , Objek dan terutama RUP yang pada mulanya bertujuan untuk digunakan apabila kerja bermula di *Rational Software*.

### Pemodelan
Adalah penting untuk membezakan antara model UML dan set rajah sistem. Rajah adalah perwakilan grafik separa model sistem. Set rajah tidak perlu merangkumi model sepenuhnya dan memadam rajah tidak mengubah model. Model ini juga mungkin mengandungi dokumentasi yang memacu elemen-elemen model dan gambar rajah (seperti kes-kes penggunaan bertulis).

Rajah UML mewakili dua pandangan berbeza dari model sistem:

* Pandangan statik (atau struktur ): menekankan struktur statik sistem menggunakan objek, atribut, operasi dan perhubungan. Ia termasuk rajah kelas dan rajah struktur komposit .
* Paparan dinamik (atau tingkah laku ): menekankan tingkah laku dinamik sistem dengan menunjukkan kolaborasi di antara objek dan perubahan kepada keadaan objek dalaman. Pandangan ini termasuk gambar rajah urutan, rajah aktiviti dan keadaan mesin UML.

Model UML boleh dipertukarkan di antara alat UML dengan menggunakan format XML Metadata Interchange (XMI).

Di UML, salah satu alat penting untuk pemodelan tingkah laku adalah model kes penggunaan, yang disebabkan oleh OOSE. Penggunaan kes adalah cara menentukan penggunaan sistem yang diperlukan. Biasanya, ia digunakan untuk menentu keperluan sistem, iaitu, apa yang sistem sepatutnya lakukan.

## Diagram

UML 2 mempunyai banyak jenis diagram, yang dibahagikan kepada dua kategori. Sesetengah jenis mewakili maklumat struktur, dan selebihnya mewakili jenis kelakuan umum, termasuk beberapa yang mewakili pelbagai aspek interaksi. Gambar rajah ini boleh dikategorikan secara hierarki seperti yang ditunjukkan dalam rajah kelas berikut:

Rajah ini mungkin mengandungi komen atau nota yang menjelaskan penggunaan, kekangan, atau niat.

### Diagram struktur
Gambar rajah struktur menekankan perkara yang mesti ada dalam sistem yang dimodelkan. Oleh kerana rajah struktur mewakili struktur, ia digunakan secara meluas dalam mendokumenkan perisian seni bina sistem perisian. Sebagai contoh, gambarajah komponen menerangkan bagaimana sistem perisian dipecah menjadi komponen dan menunjukkan kebergantungan di antara komponen-komponen ini.


Policy Admin Component Diagram.PNG|Rajah komponen
BankAccount1.svg|Rajah kelas


### Rajah kelakuan
Rajah kelakuan menonjolkan apa yang mesti berlaku dalam sistem yang dimodelkan. Oleh kerana rajah kelakuan menggambarkan kelakuan sistem, ia digunakan secara meluas untuk menggambarkan fungsi sistem perisian. Sebagai contoh, rajah aktiviti menggambarkan aktiviti perniagaan dan langkah-langkah operasi komponen dalam sistem.


Activity conducting.svg|Rajah aktiviti
UML Use Case diagram.svg|Diagram kes kegunaan


### Rajah interaksi
Rajah interaksi, sebahagian daripada rajah tingkah laku, menekankan aliran kawalan dan data di antara perkara-perkara dalam sistem yang dimodelkan. Sebagai contoh, rajah urutan menunjukkan bagaimana objek berkomunikasi satu sama lain mengenai urutan pesanan.


CheckEmail.svg|Rajah urutan
UML Communication diagram.svg|Rajah komunikasi


## Metamodeling

Kumpulan Pengurusan Objek (OMG) telah membangunkan seni bina metamodeling untuk menentukan UML, yang digelar Kemudahan Meta-Objek. MOF direka sebagai seni bina empat lapisan, seperti yang ditunjukkan dalam imej di sebelah kanan. Ia menyediakan model meta-meta di bahagian atas, yang dipanggil lapisan M3. Model M3 ini adalah bahasa yang digunakan oleh Meta-Object Facility untuk membina metamodel, dipanggil M2-model.

Contoh yang paling menonjol dari model Kemudahan Meta-Objek Layer 2 adalah metamodel UML, yang menerangkan UML itu sendiri. Model M2 ini menerangkan unsur-unsur lapisan M1, dan dengan itu M1-model. Contohnya, contohnya, model yang ditulis dalam UML. Lapisan terakhir ialah lapisan M0 atau lapisan data. Ia digunakan untuk menggambarkan keadaan masa perlaksanaan sistem.

Model meta boleh dilanjutkan dengan menggunakan mekanisme yang dipanggil stereotaip . Ini telah dikritik kerana tidak mencukupi / tidak dapat dipertahankan oleh Brian Henderson-Sellers dan Cesar Gonzalez-Perez dalam "Kegunaan dan Penyalahgunaan dari Mekanisme Stereotype di UML 1.x dan 2.0".

## Penerimaan

UML telah dipasarkan untuk banyak konteks.

Ia telah layan, kadang-kadang, sebagai peluru perak reka bentuk (penyelesaian semua masalah), yang membawa kepada masalah. Penyalahgunaan UML termasuk terlalu banyak (mereka bentuk setiap bahagian sistem dengannya, yang tidak perlu) dan mengandaikan bahawa orang baru dapat merancang dengan menggunakannya.

Ia dianggap bahasa yang besar, dengan banyak pembinaan. Sesetengah orang (termasuk Jacobson ) merasakan saiz UML menghalang pembelajaran (dan dengan itu, menggunakannya).

## Bacaan lanjut

* 
* 
* 
* 
* 
* 
* 
* 

## Perisian UML
* http://netbeans.org
* https://www.softwareideas.net
* http://staruml.sourceforge.net/en/