Unified Modeling Language

Unified Modeling Language alebo UML je v softvérovom inžinierstve grafický jazyk na vizualizáciu, špecifikáciu, navrhovanie a dokumentáciu programových systémov. UML ponúka štandardný spôsob zápisu tak návrhov systémov vrátane konceptuálnych prvkov ako sú business procesy a systémové funkcie, tak konkrétnych prvkov ako sú príkazy programovacieho jazyka, databázové schémy a znovupoužiteľné programové komponenty.

UML podporuje objektovo orientovaný prístup k analýze, návrhu a popisu programových systémov. UML neobsahuje spôsob, ako sa má používať, ani neobsahuje metodiku, ako analyzovať, špecifikovať alebo navrhovať programové systémy.

Štandard UML definuje štandardizačná skupina Object Management Group (OMG).

Spôsoby použitia UML

Kreslenie konceptu 
Pri tomto použití je UML podporným nástrojom na komunikáciu medzi vývojármi a na zaznamenávanie myšlienok a návrhov. Do diagramov sa kreslia len veci podstatné na grafické vyjadrenie návrhu alebo časti návrhu predtým, ako sa začne programovať. Dôležitá je zrozumiteľnosť, rýchlosť nakreslenia a možnosť jednoduchej zmeny alebo alternatív riešenia.

Kreslenie detailných návrhov 
Cieľom je zaznamenať kompletný návrh alebo kompletnú realizáciu. Pri kreslení návrhu by mal analytik obsiahnuť všetky prvky tak, aby prográmator bol schopný vytvoriť program bez veľkého premýšľania nad vecnou oblasťou (pre programátora by nemala vzniknúť potreba konzultácie s užívateľom). Pri kreslení detailných návrhov sa obvykle používajú špecializované programy (CASE), ktoré sú schopné zdieľať informácie medzi jednotlivými modelmi a kontrolovať konzistenciu návrhu. Pri dokumentácii programu sa často používajú nástroje na generovanie diagramov z vlastného kódu aplikácie.

UML ako programovací jazyk 
Pri tomto použití vývojár nakreslí UML diagramy, z ktorých sa vygeneruje priamo spustiteľný kód. Toto vyžaduje špecializované nástroje a veľmi presné vyjadrovanie v UML diagramoch. V tejto súvislosti sa veľmi často používa pojem Model Driven Architecture (MDA), čo je ďalší štandard skupiny OMG, ktorý sa snaží štandardizovať použitie UML ako programovacieho jazyka.

Metamodel 
Tento pohľad používajú autori UML a autori CASE nástrojov - nepozerajú sa na UML ako na diagramy, pre nich je základom UML metamodel (diagramy sú len grafickou reprezentáciou metamodelu). Pri tomto prístupe sa často používa pojem model namiesto pojmu diagram, napríklad namiesto pojmu diagram tried sa používa pojem model tried. Metamodel sa popisuje pomocou Meta-Object-Facility (MOF) - abstraktného jazyka na špecifikáciu, vytváranie a správu metamodelov (ďalší štandard OMG). Na výmenu metamodelov sa používa jazyk XMI, štandard založený na XML, súčasť štandardu UML.

Súčasti UML 
Štandard vo verzii 2.0 sa skladá zo štyroch častí:
 UML 2.0 SuperStructure – popis UML z hľadiska užívateľa (analytik/programátor). Táto časť popisuje jednotlivé diagramy.
 UML 2.0 Infrastructure – metamodel stojaci v pozadí za UML, špecifikovaný pomocou Meta-Object Facility (MOF).
 UML 2.0 Object Constraint Language (OCL) – jazyk na špecifikáciu vstupných a výstupných podmienok, invariantov v jednotlivých diagramoch.
 UML 2.0 Diagram Interchange – popis XML štruktúr na výmenu konkrétnych modelov medzi jednotlivými modelovacími nástrojmi.

Popri vlastnom štandarde existujú UML profily - prispôsobenie UML na jednotlivé oblasti:
 UML Profile for CORBA®
 UML Profile for CORBA Component Model (CCM)
 UML Profile for Enterprise Application Integration (EAI)
 UML Profile for Enterprise Distributed Object Computing (EDOC)
 UML Profile for QoS and Fault Tolerance
 UML Profile for Schedulability, Performance, and Time
 UML Testing Profile

Z UML začínajú vznikať aj rôzne dialekty - modelovacie jazyky na určité oblasti, ktoré preberajú časť UML, ktorou modifikujú a doplnia o prvky špecifické na konkrétnu oblasť. Príkladom môže byť jazyk Systems Modeling Language (SysML), určený na špecifikáciu, analýzu, návrh, verifikáciu a validáciu rôznych systémov (technických, programových, informačných, procesných, zabezpečovacích…). Tiež väčšina metodík na analýzu a návrh systémov uprednostňuje časti z UML a dopĺňa ich o ďalšie prvky.

Diagramy 
Diagramy sú najznámejšie a najpoužívanejšie časti štandardu. Nasleduje prehľad diagramov v UML 2.0 vrátane ich rozčlenenia do skupín:
 štruktúrne diagramy
 diagram tried (class diagram)
 diagram komponentov (component diagram)
 diagram zloženej štruktúry (composite structure diagram)
 diagram nasadenia (deployment diagram)
 diagram balíčkov (package diagram)
 diagram objektov (object diagram), nazýva sa aj diagram inštancií
 diagramy správania
 diagram aktivít (activity diagram)
 diagram prípadov použitia (use case diagram)
 stavový diagram (state machine diagram)
 diagramy interakcie
 sekvenčný diagram (sequence diagram)
 diagram komunikácie (communication diagram) - predtým diagram spolupráce (collaboration diagram)
 diagram prehľadu interakcií (interaction overview diagram)
 diagram časovania (timing diagram)

História UML 
Vývoj UML začal v roku 1994, kedy Grady Booch a Jim Rumbaugh začali vo firme Rational Software (dnes súčasť firmy IBM) spájať svoje metodiky – Booch a OMT (Object Modeling Technique). Na konci roku 1995 do firmy Rational Software vstúpil Ivar Jacobson so svojou metodológiou OOSE (Object-Oriented Software Engineering).

Výsledkom ich práce bol návrh UML (verzie 0.9) a metodika RUP (Rational Unified Process). Štandardizačná organizácia OMG v roku 1997 prijala ako štandard UML verzie 1.1, v ktorej boli začlenené prvky z ďalších metodík (označenie UML 1.0 sa používa na návrh, ktorý poslala firma Rational Rose štandardizačnej komisii). Postupne sa upresňovala špecifikácia a vznikali ďalšie verzie 1.2 (1998), 1.3 (1999), 1.4 (2001) a 1.5 (2002). Väčšie zmeny boli začlenené do verzie 1.3.

Od roku 2001 OMG pripravovala verziu 2.0, ktorá prináša podstatné rozšírenia. Text prvej časti (SuperStructure) bol schválený na jeseň 2004 a finálne schválenie bolo v októbri 2004.

Revízie UML 2.x:
 2.1.1, 2.1.2 - 2007
 2.2 - február 2009
 2.3 - máj 2010
 2.4 - august 2011

Iné projekty

Externé odkazy 
 Stránky OMG venované UML

Programovanie
Programovacie jazyky