Unified Modeling Language (UML) on üldotstarbeline, arendusotstarbeline modelleerimiskeel tarkvaratehnika valdkonnas, mille eesmärk on pakkuda standardset viisi süsteemi disaini visualiseerimiseks. [1]

UML-i idee ja motivatsioon pärinevad soovist ühtlustada eri notatsioonisüsteeme ja lähenemisviise tarkvara projekteerimisel. Selle aluse panid Grady Booch, Ivar Jacobson ja James Rumbaugh, kes töötasid koos 1994–1996 Rational Software'is ning ühendasid oma mudelimisideed ühtseks notatsiooniks. Nad arendasid seda edasi kuni ametliku standardini jõudmiseni. [1]

1997. aastal võttis UMLi standardina vastu Object Management Group (OMG) ja sellest ajast alates on see organisatsiooni hallatud. 2005. aastal avaldas ühtlustatud modelleerimiskeele ka Rahvusvaheline Standardiorganisatsioon (ISO) heakskiidetud ISO standardina. [2] Pärast seda on UML-i spetsiifikatsiooni perioodiliselt uuendatud, et kajastada uusi paradigmasid ja täpsustada semantikat. [3]

Kuigi UML on tuntud ja laialdaselt kasutusel hariduses ja akadeemilistes töödes, teatasid mõned uuringud ja tööstuse ülevaated 2013. aasta seisuga, et praktilises tööstuskasutuses kasutatakse UML-i sageli vähe, pigem mitteametlikult ja ad hoc. [4]

Mis on UML ja milleks seda kasutatakse?

UML on keel, mis pakub standardset sümbolite ja notatsioonireeglite kogumit süsteemide modelleerimiseks. Peamised eesmärgid on:

  • visualiseerida süsteemi arhitektuuri ja käitumist;
  • täpsustada ja dokumenteerida nõudeid ning disaini;
  • toetada süsteemi ehitamist ja kommunikatsiooni meeskonna vahel;
  • võimaldada automaatset koodi- või mudelite transformatsiooni (nt Model-Driven Architecture, MDA) ja reverse-engineeringut.

UML ei ole programmeerimiskeel, vaid modelleerimiskeel: see kirjeldab, kuidas elemente (klassid, objektid, protsessid jms) esitada ja omavahel siduda, et oleks üheselt arusaadav nii inimestele kui tööriistadele.

Lühike ajalugu ja standardid

Algsed UML-i versioonid tulid 1990ndate keskel. UML 1.x versioonid olid laialt kasutusel, seejärel toimus suur uuendus ja ümberkorraldus UML 2.0-s, mis fixis semantikat ja lisas uusi diagrammitüüpe. Hiljem on spetsiifikatsioon täienenud ja korrigeeritud (nt UML 2.1 → 2.5 → 2.5.1), mille eesmärk oli parandada selgust ja tööriistade ühilduvust. OMG jätkab UML-i haldamist ja väljaandmist ning mõnes kontekstis on olemas ka ISO-le kinnitatud variant. [2][3]

Põhilised diagrammid

UML jagab diagrammid üldiselt kaheks rühmaks: struktuuri ja käitumise diagrammid. Peamised tüübid on:

  • Struktuuridiagrammid: klassidiagramm, objekti- (instance) diagramm, komponentdiagramm, pakettdiagramm, composite structure diagramm, deployment (paigutus) diagramm.
  • Käitumisdiagrammid: use case (kasutusjuht), tegevus- (activity) diagramm, oleku- (state machine) diagramm, järjestus- (sequence) diagramm, suhtlus- (communication) diagramm, ajagraafikute (timing) ja interaktsiooniülevaate (interaction overview) diagrammid.

Iga diagramm teenib erinevat eesmärki: klassidiagramm kirjeldab staatilist mudelit, järjestusdiagramm näitab objektidevahelist sõnumivahetust ajaalas, use case aitab dokumenteerida süsteemi funktsionaalsust ärinõuete tasandil jne.

Tähtsamad mõisted ja laiendatavus

  • Stereotüübid ja profiilid: UML-i saab kohandada profiilide abil (nt SysML süsteemide inseneriaks või MARTE reaalajaprojektide jaoks). Need lisavad domeenispetsiifilisi semantikaid ja tähistusi.
  • Metamudel: UML on ise määratletud metatasemel (metamodel), mis võimaldab tööriistadel mõista ja valideerida UML-mudeleid.
  • Staatused ja kehtestatud semantika: UMLi spetsiifikatsioon määratleb nii sümboolika (süntaks) kui ka osa semantikat, kuid praktiliselt jääb osa tõlgendustest ka tööriistade ja meeskondade otsustada.

Kus ja kuidas UML-i kasutatakse?

UML-i kasutatakse erinevates etappides ja kontekstides:

  • nõuete modelleerimine (use case),
  • arkitektuur ja süsteemidisain (komponent-, klassi- ja paigutusdiagrammid),
  • käitumise kirjelduseks (järjestus-, tegevus- ja olekudiagrammid),
  • tööriistade toel koodi genereerimiseks või mudelite ja koodi sünkroonimiseks (MDA lähenemised),
  • dokumentatsiooni ja kommunikatsiooni vahendina arendajate, disainerite ja huvigruppide vahel.

Populaarsed UML-tööriistad ulatuvad graafilistest (nt Enterprise Architect, MagicDraw/Cameo, IBM Rational) kuni tekstipõhiste lahendusteni (nt PlantUML) — igaühel on erinev rõhuasetus diagrammide loomiseks, versioonihalduseks ja integratsiooniks arenduskeskkondadega.

Kriitika ja piirangud

UML on saanud ka kriitikat:

  • keerukus ja ulatus — kogu standard on mahukas ning kõik funktsioonid ei ole praktilised igapäevases töös;
  • õppimiskõver — algajatele võib notatsioon tunduda keeruline;
  • ülemodelleerimise oht — liiga detailne modelleerimine võib raisata aega ja jääda kiiresti aegunuks, kui mudelid ei ole elusad ja sünkroonis koodiga;
  • metoodiline ebajärjekindlus — erinevad meeskonnad ja tööriistad võivad sama päringut eri moodi tõlgendada, mis nõuab kokkuleppeid ja malli kasutust.

Praegused parimad praktikad rõhutavad lihtsust ja vajalikku täpsust: kasutada ainult neid diagramme ja detaile, mis toetavad otsustamist ja kommunikatsiooni, ning hoida mudelid ajakohastatuna või selgelt arhiveerituna.

Kokkuvõte

UML on võimas ja laialt defineeritud modelleerimiskeel, mille tugevuseks on standardiseeritud notatsioon ja lai diagrammide valik. Samas nõuab selle efektiivne kasutamine distsipliini: valida sobivad diagrammid, hoida mudelid lihtsad ja siduda need arendustööriistadega. Kuigi praktikas on kasutusmustrid ja populaarsus võivad erineda tööstusharude ja meeskondade lõikes (sh aruanded madalamast kasutusest teatud uuringutes 2013. aasta seisuga), jääb UML tihedalt seotud tarkvara- ja süsteemiinseneri praktikaga ning seda kasutatakse nii akadeemias kui ka tööstuses vastavalt vajadusele. [4]