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
-------

Sejarah kaedah berorientasikan objek dan notasi.
### 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:

1. Superstruktur yang mentakrifkan notasi dan semantik untuk gambar rajah dan elemen model mereka
2. Infrastruktur yang mentakrifkan metamodel teras yang mana Superstructure itu berasaskan
3. Objek Bahasa Objek (OCL) untuk menentukan peraturan bagi elemen model
4. 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
-------

Templat:UML diagram types

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:

Hiraki Diagram UML 2.2, ditunjukkan sebagai diagram kelasHiraki Diagram UML 2.2, ditunjukkan sebagai diagram kelas
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.

* Rajah komponenRajah komponen
* Rajah kelasRajah 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.

* Rajah aktivitiRajah aktiviti
* Diagram kes kegunaanDiagram 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.

* Rajah urutanRajah urutan
* Rajah komunikasiRajah komunikasi

Metamodeling
------------

Rencana utama: Meta-Object Facility
Ilustrasi Kemudahan Meta-Objek
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
-------------

* Ambler, Scott William (2004). *The Object Primer: Agile Model Driven Development with UML 2*. Cambridge University Press. ISBN 0-521-54018-6.
* Chonoles, Michael Jesse; James A. Schardt (2003). *UML 2 for Dummies*. Wiley Publishing. ISBN 0-7645-2614-6.
* Fowler, Martin. *UML Distilled: A Brief Guide to the Standard Object Modeling Language* (ed. 3rd). Addison-Wesley. ISBN 0-321-19368-7.
* Jacobson, Ivar; Grady Booch; James Rumbaugh (1998). *The Unified Software Development Process*. Addison Wesley Longman. ISBN 0-201-57169-2.
* Martin, Robert Cecil (2003). *UML for Java Programmers*. Prentice Hall. ISBN 0-13-142848-9.
* Noran, Ovidiu S. "Business Modelling: UML vs. IDEF" (PDF). Dicapai pada 2005-12-28.
* Horst Kargl. "Interactive UML Metamodel with additional Examples".
* Penker, Magnus; Hans-Erik Eriksson (2000). *Business Modeling with UML*. John Wiley & Sons. ISBN 0-471-29551-5.

Perisian UML
------------

* 
* https://www.softwareideas.net
* 

1. 1 2 3 4  *Unified Modeling Language User Guide, The* (ed. 2). Addison-Wesley. 2005. m/s. 496. ISBN 0321267974.
, See the sample content, look for history
2. ↑  "ISO/IEC 19501:2005 - Information technology - Open Distributed Processing - Unified Modeling Language (UML) Version 1.4.2". Iso.org. 2005-04-01. Dicapai pada 2015-05-07.
3. ↑  "ISO/IEC 19505-1:2012 - Information technology - Object Management Group Unified Modeling Language (OMG UML) - Part 1: Infrastructure". Iso.org. 2012-04-20. Dicapai pada 2014-04-10.
4. 1 2 3 4  "OMG Unified Modeling Language (OMG UML), Superstructure. Version 2.4.1". Object Management Group. Dicapai pada 9 April 2014.
5. ↑  Andreas Zendler (1997) *Advanced Concepts, Life Cycle Models and Tools for Objeckt-Oriented Software Development*. p.122
6. ↑  "UML Specification version 1.1 (OMG document ad/97-08-11)". Omg.org. Dicapai pada 2011-09-22.
7. ↑  "UML". Omg.org. Dicapai pada 2014-04-10.
8. ↑  Génova et alia 2004 "Open Issues in Industrial Use Case Modeling"
9. ↑  "Will UML 2.0 Be Agile or Awkward?" (PDF). Dicapai pada 2011-09-22.
10. ↑   Hubert Tardieu, Arnold Rochfeld and René Colletti La methode MERISE: Principes et outils (Paperback - 1983)
11. ↑  Elmasri, Ramez, B. Shamkant, Navathe, Fundamentals of Database Systems, third ed. Addison-Wesley, Menlo Park, CA, USA, 2000.
12. ↑  ER 2004 : 23rd International Conference on Conceptual Modeling, Shanghai, China, 8-12 November 2004 Diarkibkan 27 Mei 2013 di Wayback Machine
13. ↑  "A Formal Treatment of UML Class Diagrams as an Efficient Method for Configuration Management 2007" (PDF). Dicapai pada 2011-09-22.
14. ↑  "James Dullea, Il-Yeol Song, Ioanna Lamprou - An analysis of structural validity in entity-relationship modeling 2002" (PDF). Dicapai pada 2011-09-22.
15. ↑  ""Reasoning about participation constraints and Chen's constraints" S Hartmann - 2003" (PDF). Diarkibkan daripada yang asal (PDF) pada 2013-05-10. Dicapai pada 2013-08-17.
16. ↑  "UML 2.0". Omg.org. Dicapai pada 2011-09-22.
17. 1 2 3  "UML". Omg.org. Dicapai pada 2011-09-22.
18. ↑  OMG. "OMG Formal Specifications (Modeling and Metadata paragraph)". Dicapai pada 2016-02-12.
19. ↑  "Issues for UML 2.6 Revision task Force mailing list". Omg.org. Dicapai pada 2014-04-10.
20. ↑  Satish Mishra (1997). "Visual Modeling & Unified Modeling Language (UML): Introduction to UML" Diarkibkan 2011-07-20 di Wayback Machine. Rational Software Corporation. Accessed 9 November 2008.
21. 1 2  "UML, Success Stories". Dicapai pada 9 April 2014.
22. ↑  John Hunt (2000). *The Unified Process for Practitioners: Object-oriented Design, UML and Java*. Springer, 2000. ISBN 1-85233-275-1. p.5.door
23. ↑  Jon Holt Institution of Electrical Engineers (2004). *UML for Systems Engineering: Watching the Wheels* IET, 2004, ISBN 0-86341-354-4. p.58
24. ↑  Manuel Almendros-Jiménez, Jesús & Iribarne, Luis. (2007). Describing Use-Case Relationships with Sequence Diagrams. Comput. J.. 50. 116-128. 10.1093/comjnl/bxl053.
25. ↑  Iman Poernomo (2006) "The Meta-Object Facility Typed" in: *Proceeding SAC '06 Proceedings of the 2006 ACM symposium on Applied computing*. pp. 1845-1849
26. ↑  "UML 2.4.1 Infrastructure". Omg.org. 2011-08-05. Dicapai pada 2014-04-10.
27. ↑  B. Henderson-Sellers; C. Gonzalez-Perez (2006). "Uses and Abuses of the Stereotype Mechanism in UML 1.x and 2.0". in: *Model Driven Engineering Languages and Systems*. Springer Berlin / Heidelberg.
28. ↑  "UML 2.5: Do you even care?". "UML truly is ubiquitous"
29. ↑  "Death by UML Fever".
30. ↑  "Ivar Jacobson on UML, MDA, and the future of methodologies".