Vienotā modelēšanas valoda (UML) ir vispārējas nozīmes, attīstības modelēšanas valoda programmatūras inženierijas jomā, kuras mērķis ir nodrošināt standarta veidu, kā vizualizēt sistēmas dizainu. [1]
Sākotnēji UML motivācija bija vēlme standartizēt atšķirīgās notācijas sistēmas un programmatūras projektēšanas pieejas, ko 1994.-1995. gadā izstrādāja Grady Booch, Ivar Jacobson un James Rumbaugh uzņēmumā Rational Software, un 1996. gadā viņi turpināja to attīstīt. [1]
1997. gadā UML kā standartu pieņēma Object Management Group (OMG), un kopš tā laika to pārvalda šī organizācija. Vienoto modelēšanas valodu 2005. gadā publicēja arī Starptautiskā standartizācijas organizācija (ISO) kā apstiprinātu ISO standartu.[2] Kopš tā laika tas ir periodiski pārskatīts, lai aptvertu jaunāko UML redakciju. [3]
Lai gan UML ir labi pazīstama un plaši izmantota izglītībā un akadēmiskajos darbos, no 2013. gada UML ir maz izmantota rūpniecībā, un vairums šādu lietojumu ir neoficiāli un ad hoc. [4]
Kas ir UML un kāpēc to lieto
UML ir notāciju kopums, kas ļauj attēlot gan sistēmas struktūru, gan tās uzvedību dažādos līmeņos — no augsta līmeņa biznesa procesa modeļa līdz detalizētam programmatūras komponentu aprakstam. UML nav programmēšanas valoda; tā ir modelēšanas valoda, kuru izmanto, lai komunicētu idejas starp arhitektiem, izstrādātājiem, analītiķiem un citām iesaistītajām pusēm. Modeļi var tikt izmantoti dokumentācijai, arhitektūras pārskatiem, prasību verifikācijai, kā arī kā bāze automatizētai koda ģenerēšanai vai testu izveidei.
UML veidi un diagrammu klasifikācija
UML ietver daudzveidīgu diagrammu kopu, kuras parasti iedala trīs pamatgrupās: struktūras diagrammas, uzvedības (behavior) diagrammas un interakciju (interaction) diagrammas. Biežāk izmantotās diagrammas ir:
- Klasu diagramma (Class diagram) — attēlo klases, to atribūtus, metodes un attiecības (asociācijas, generalizāciju, atkarības). Izmanto, lai modelētu statisko sistēmas struktūru.
- Objektu diagramma (Object diagram) — rāda klases instanci (objektu) stāvokli konkrētā brīdī.
- Use case (lietotāja gadījumu) diagramma — ilustrē sistēmas funkcionalitāti no lietotāja perspektīvas, attēlojot aktierus un lietotāja gadījumus.
- Secību diagramma (Sequence diagram) — attēlo objektu mijiedarbību laika secībā, piemēram, metožu izsaukumus un atbildes.
- Kopmünikācijas/Komunikācijas diagramma (Communication/Collaboration) — koncentrējas uz objektiem un to ziņojumu apmaiņu bez īpaša uzsvara uz laiku.
- Stāvokļu diagramma (State machine diagram) — modelē objektu stāvokļus un pārejas starp tiem (stāvokļu automāti).
- Aktivitāšu diagramma (Activity diagram) — attēlo darba plūsmas un loģiku (bieži izmantota biznesa procesu modelēšanai).
- Komponentu diagramma (Component diagram) — rāda programmatūras moduļus (komponentus) un to atkarības.
- Izvietojuma diagramma (Deployment diagram) — attēlo fizisko izvietojumu (serveri, ierīces, konteineri) un uz tiem izvietotās programmatūras daļas.
- Kompozīcijas struktūras diagramma (Composite structure), Laika diagramma (Timing) un Interakciju pārskata diagramma (Interaction overview) — specifiskākas diagrammas sarežģītām vajadzībām.
Galvenie UML jēdzieni
Daži pamata notācijas elementi, kurus bieži sastop UML modeļos:
- aktieri, kas pārstāv lomas ārpus sistēmas;
- klases un interfeisi, kas apraksta struktūru;
- asociācijas, atkarības, agregācijas un kompozīcijas attiecības;
- metodes (operācijas) un atribūti (dati);
- dzīves līnijas, ziņojumi un paziņojumi secību diagrammās;
- stāvokļi, pārejas, notikumi un darbības stāvokļu diagrammās.
Standarti, versijas un paplašinājumi
UML ir definēta ar formālām gramatikām un notācijas noteikumiem, un OMG regulāri izdevusi jaunas UML versijas (piem., UML 1.x -> UML 2.x). UML ir paplašināma ar profiliem, kas ļauj pieskaņot notāciju specifiskām jomām — pazīstamākie profili ir SysML (sistēmu inženierijai) un MARTE (iejūtīgām un reāllaika sistēmām). OMG arī veicināja Model-Driven Architecture (MDA) pieeju, kurā modeļi un transformācijas tiek izmantotas kā programmēšanas procesa pamats.
Rīki un prakse
Pastāv daudzi UML modelēšanas rīki, gan komerciāli, gan atvērtā koda, piemēram, IBM Rational Rose/Software Architect/Product Family, Sparx Systems Enterprise Architect, MagicDraw (tagad Cameo), ArgoUML, Papyrus u.c. Rīku iespējas var ietvert vizuālu rediģēšanu, tikšanos ar versiju kontroli, koda ģenerēšanu, atpakaļejošu inženieriju un integrāciju ar citām izstrādes vides daļām.
Stiprās un vājās puses
Stiprās puses:
- nodrošina vienotu notāciju komunikācijai starp iesaistītajām pusēm;
- atbalsta gan abstraktu, gan detalizētu modelēšanu;
- ļauj dokumentēt arhitektūru un dizainu, kā arī veicināt atkārtotu izmantojumu;
- vieglāk integrējama ar modelēšanas un automatizācijas pieejām (MDA).
Vājās puses:
- pilna UML apgūšana var būt sarežģīta un laikietilpīga;
- dažkārt modeļi tiek novesti novecojuši, ja nav procesā iekļautas modeļu uzturēšanas prakses;
- kritiķi norāda, ka UML var būt pārāk smagnēja vai birokrātiska, it īpaši ātro (agile) izstrādes vidi izmantotās komandās;
- komerciālie pielietojumi pēc 2013. gada ir samazinājušies, un daudzi izstrādātāji izmanto vieglākas vai pielāgotas notācijas.
Kā lietot UML praksē — ieteikumi
- izvēlieties tikai vajadzīgās diagrammas un vienkāršojiet notāciju, lai modeļi būtu saprotami;
- uzturiet modeļus sinhronā ar koda bāzi vai iekļaujiet modeļu pārskatīšanu izstrādes ciklā;
- izmantojiet UML profilus vai pielāgotas notācijas, ja tas palīdz skaidrāk attēlot domēnu jautājumus;
- integrējiet modeļus ar dokumentāciju, testiem un prasību pārvaldību, lai palielinātu to praktisko vērtību.
Nobeigums
UML paliek svarīgs līdzeklis sistēmu modelēšanā un izglītībā, piedāvājot bagātīgu notāciju kopu, kas aptver gan statisko, gan dinamisko sistēmu aspektu aprakstu. Lai gan tās izmantošana rūpniecībā ir mainījusies un vietām samazinājusies, UML joprojām sniedz vērtīgas koncepcijas un rīkus sistēmdizainā, it īpaši, ja to izmanto saprātīgi un pielāgo izstrādes komandas vajadzībām.