Unifikuota modeliavimo kalba (UML) – tai programinės įrangos inžinerijos srityje plačiai naudojama bendrosios paskirties modeliavimo kalba, skirta standartizuoti sistemos architektūros, elgsenos ir sąveikų vizualizavimą. UML suteikia simbolių rinkinį ir semantiką, leidžiančią kurti diagramos tipo modelius, kurie dokumentuoja reikalavimus, dizainą, sąveikas ir diegimo aspektus bei padeda perduoti idėjas tarp projektavimo komandų ir suinteresuotųjų šalių.[1]

Istorija ir vystymasis

UML įkvėpė ir suvienijo kelis ankstesnius objektinio projektavimo metodus. Pagrindiniai UML autorių vardai – Grady Booch, Ivaras Jacobsonas ir Jamesas Rumbaughas – 1994–1995 m. sudarė pradines notacijų ir metodikų versijas, o vėliau jas sujungė į vieningą kalbą.[1] 1997 m. UML kaip standartą patvirtino Objektų valdymo grupė (OMG), kuri nuo to laiko administruoja kalbos plėtrą ir priežiūrą. Vėliau UML taip pat buvo pripažinta tarptautiniu standartu per atitinkamus standartizavimo procesus.[2] UML metamodelis, keitimosi formatai (pvz., XMI) ir susiję papildiniai (pvz., OCL – Object Constraint Language) buvo nuolat tobulinami, o kalba perėjo kelis reikšmingus etapus (UML 1.x → UML 2.x), kurie atnešė didesnį dinamikos ir sąveikų modeliavimui skirtų galimybių palaikymą.[3]

Standartai ir techninės sudedamosios dalys

UML nėra tik grafiniai simboliai – tai ir metamodelis bei formalūs aprašai, leidžiantys vienareikšmiškai interpretuoti modelius:

  • Metamodelis (apibrėžia UML elementų tipus ir jų tarpusavio santykius);
  • XMI (XML Metadata Interchange) – formatas modelių keitimuisi tarp įrankių;
  • MOF (Meta-Object Facility) – OMG specifikacija, kuria grindžiamas UML metamodelis;
  • OCL (Object Constraint Language) – kalba, leidžianti aprašyti taisykles ir apribojimus modelio elementams;
  • Profiliai – UML pritaikymo mechanizmas, leidžiantis išplėsti UML specializuotiems domenams (pvz., SysML, MARTE).

Pagrindiniai diagramos tipai

UML skirsto diagramas į du didelius tipus: struktūrinės ir elgsenos (dinaminės). Dažniausiai sutinkami diagramos tipai:

  • Struktūrinės: klasės diagrama, objektų diagrama, komponentų diagrama, paketų diagrama, diegimo diagrama, composite structure;
  • Elgsenos: būsenų (state machine) diagrama, veiklos (activity) diagrama, seka (sequence) diagrama, bendravimo (communication) diagrama, laiko (timing) diagrama, sąveikos apžvalgos (interaction overview), use case (naudojimosi atvejais) diagrama.

Panaudojimas praktikoje

UML naudojama įvairiems tikslams:

  • reikalavimų ir naudotojų istorijų dokumentavimas (use case);
  • sistemos architektūros ir komponentų sąsajų modeliavimas (class, component, deployment);
  • dizaino specifikacija (sequence, activity, state machines);
  • automatinė kodo generacija ir atvirkštinė inžinerija (kai kuriuose įrankiuose);
  • domenų ir sistemos integracijos modeliavimas naudojant profilius (pvz., SysML inžinerinėms sistemoms).

Įrankiai

Yra daug UML modelių kūrimo įrankių, tiek komercinių, tiek atviro kodo. Populiarūs pavyzdžiai: IBM Rational (istoriniai įrankiai kaip Rational Rose), Sparx Systems Enterprise Architect, MagicDraw / Cameo, Visual Paradigm, PlantUML (tekstinėnotacijos, generuojančios diagramas), Papyrus, ArgoUML ir kt. Įrankiai skiriasi pagal palaikomų UML versijų lygį, XMI suderinamumą, integraciją su IDE ir galimybes generuoti/atstatyti kodą.

Kritika ir apribojimai

Nors UML yra turtinga ir išsami kalba, ji taip pat sulaukė kritikos:

  • klaidingas supratimas, kad UML yra metodika – iš tiesų tai tik modeliavimui skirta kalba, o ne projektavimo procesas;
  • kompleksumas ir gausa elementų gali priversti kurti pernelyg sudėtingas arba nereikalingas diagramas;
  • praktikoje UML dažnai naudojama neformaliai ar ad hoc, be griežtos semantikos, todėl modeliai gali būti nevienareikšmiai;
  • kai kuriose organizacijose UML naudojimas industrijoje sumažėjo, ypač ten, kur pirmenybė teikiama tiesioginiam greitam programavimo procesui ar lengvesnėms vizualizavimo priemonėms.[4]

Geriausios praktikos

Norint efektyviai naudoti UML, verta laikytis kelių principų:

  • modeliuokite tik tai, kas svarbu: sutelkite dėmesį į reikalavimus ir rizikos sritis;
  • naudokite paprastas ir aiškias diagramas; didelius modelius suskirstykite į paketus;
  • derinkite UML su aiškiai apibrėžtu procesu arba metodika (pvz., architektūros apžvalgos, sprintų planavimas);
  • naudokite įrankius, kurie palaiko versijavimą ir XMI mainus, kad modeliai būtų keičiami ir integruojami komandoje;
  • naudokite profilius, kai reikia pritaikyti UML konkrečiam domenui (pvz., sistemos inžinerijai su SysML).

Apibendrinant: UML yra plačiai pripažinta ir techniškai subrendusi modeliavimo kalba, skirta vizualizuoti, dokumentuoti ir analizuoti sistemas. Nors praktikoje jos naudojimas gali skirtis priklausomai nuo organizacijos poreikių ir kultūros, UML išlieka svarbi priemonė sudėtingų programinių ir inžinerinių sistemų modeliavimui.