# UML profilak

UML profilak Unified Modeling Language lengoaia hedatzeko mekanismo bat da, aplikazioko domeinu zehatz baten kontzeptu espezifikoak azaltzeko balio dutenak. Horrela, UML lengoaiaren sintaxi eta semantika handitzen da, UML hain orokorra izatean, kontzeptu zehatz batzuk azaldu nahiko genituenak ezin baitira bestela azaldu.

## Sarrera

Programazioaren munduan aldaketa handi bat eman zen: Hasiera batean, garrantzizkoena kodigoaren egitura eta kalitatea ondo definitzea zen; orain berriz, diseinu eta modelatzeari gero eta garrantzi eta esfortzu gehiago eskaintzen zaio. Modeloen bidez, errazagoa da sistema handi eta konplexuak definitzea, ondoren, kodifikazioan lana errazteko eta modu banatu batean egiteko. Modelo hauek sintaxi eta semantika zehatza duen lengoaia batean definituta egon behar dira, ondo definitutako lengoaia batean, ordenagailu batek ulertu eta manipulatu ahal izateko.
OMG (Object Management Group) taldeak definitutako modelaturiko lengoaia ezagunena eta erabiliena da UML. Baina lehen aipatu den bezalaxe, batzuetan UML lengoaiaren bidez ezin dugu definitu kontzeptu zehatz batzuk. OMG taldeak bi soluzio eskaintzen ditu: edo lengoaia berri bat definitu; edo UML lengoaia hedatu.
Lengoaia berri bat definitzeko, egin behar den bakarra bere metamodeloa definitzea izango da MOF erabiliaz. MOF modelatzeko lengoaiak definitzeko lengoaia da. Bide honen bidez gure aplikaziorako zehaztasun handiago bat lortuko dugu, azken finean neurrira eginiko traje bat bezala da. Baina metamodelo berria definitzen badugu, hau UMLren metamodeloaren ezberdina izango da, eta ezin izango ditugu aprobetxatu existitzen diren UML tresnak.
UML lengoaia hedatzeko, UML profilak (UML profiles) deituriko mekanismoak erabili behar dira.

## Metamodeloak

Lehen aipatu den bezala modeloak ondo definitutako lengoaia batean azaldu behar dira. Baina nola sortu ondo definitutako lengoaia bat? Lengoaia grafikoak adierazteko meta-modelatua erabiltzen da. OMG taldeak lau maila abstraktutan oinarritutako egitura eskaintzen digu, modelatu batean parte hartzen duten maila kontzeptualak ezberdinduz:
* M0 maila, instantziak: sistema erreala modelatzen du eta bere elementuak sistema osatzen duten instantziak dira.
* M1 maila, sistemaren modeloa: ondoren instantziatuak izango diren kontzeptuak definitzen ditu. Hau da, M0 mailako elementuak M1 mailako elementuen instantziak dira.
* M2 maila, modeloaren modeloa (metamodeloa): maila honetako elementuak modelatzeko lengoaiak dira. Adibidez, UMLren kasuan M2 mailako elementuak, “klase”, “asoziazio”,… dira. Hau da, M1 mailako elementuak M2 mailako elementuen instantziak dira.
* M3 maila, M2ren modeloa (meta-metamodeloa): maila honetako elementuak modelatzeko lengoaia ezberdinak osatzen dituzten elementuak dira. Hau da, M2 mailako elementuak M3 mailako elementuen instantziak dira.
M3 mailako elementuak definitzeko OMG taldeak lengoaia bat definitu du, MOF (Meta-Object Facility). Hau da, MOF modelatzeko lengoaiak definitzeko lengoaia bat da, metamodeloak definitzeko.

## UML profilak

UML lengoaia hedatzeko UML berak dakarren mekanismoa da, UMLren deribatua den modelatzeko lengoaia bat definitzea ahalbidetuz. UML 2.0ko Profiles paketeak mekanismo batzuk definitzen ditu gure nahien arabera metamodeloko metaklaseak hedatzeko eta adaptatzeko. Profil bat UML pakete batean definitzen da, <<profile>> estereotipoarekin, metamodelo edo beste profil bat hedatuz. Hiru mekanismo dira erabiliak profil bat sortzean: estereotipoak (stereotipes), mugaketak (constraints) eta balore etiketatuak (tagged values). Kontzeptuak ondo azaltzeko UML profil txiki bat erabiliko dugu, non UMLko edozein modelotan bi elementu gehitzen diren: kolorea eta pisua.
Adibide honetan bi estereotipo berri definitzen dira: Colored eta Weighed. Honek UMLko klase eta asoziazioei kolorea eta pisua gehitzea ahalbidetuko luke. Estereotipoak, klaseak dira, <<stereotype>> estereotipoarekin.
Posible da estereotipoei mugaketak gehitzea, estereotipoei baldintzak inposatuz. Adibidez, suposa dezagun bi klase edo gehiago asoziazio koloretu baten bidez batuta baditugu, klaseen eta asoziazioaren koloreak berdinak izatea behar dugula. Honelako mugaketak OCL (Object Constraint Language) lengoaian definitzen dira.
Azkenik, balore etiketatuak metaklase bati asoziatzen zaion meta-atributu gehigarria da. Balore etiketatuak izen bat edukiko du eta bere mota definituta izan behar du. Horrela, <<Weighed>> estereotipoak zenbaki oso motako <<weight>> deituriko balore etiketatua izan dezake.

## UML profila sortzen

Atal honetan, UML profil bat sortzeko metodo posible bat azalduko dugu. Hauek dira jarraitu daitezkeen pausoak profil bat sortzerako orduan:
* - Hasi aurretik, beharrezkoa da gure aplikazioaren domeinuaren metamodeloa definiturik edukitzea. Existitu ezean, UMLren mekanismoak erabiliz metamodelo hau definitu beharko genuke.
* - Behin domeinuaren metamodeloa dugula, profila definituko dugu. Profilean gehitu nahi dugun metamodeloko elementu bakoitzeko <<Profile>> paketean estereotipo bat gehituko dugu.
* - Garrantzitsua da argi edukitzea metamodeloko zein elementutan aplikatu daitezkeen estereotipoak. Horrela, estereotipo bakoitza zein metaklasetan aplikatuko den definituko dugu.
* - Profileko elementuek metamodeloan dituzten atributuak balore etiketatuak bezala definitu, bere mota eta, izanez gero, hasierako balioa adieraziz.
* - Domeinuko mugaketak profilean definitu.
Hobeto ulertzeko pauso hauek adibide txiki bat jarriko dugu. Pentsa dezagun ordenagailu batzuk izar egitura duen egiturarekin konektatu nahi ditugula, non nodo zentralak beraien artean lotu daitezkeen. Domeinuaren metamodeloa ondorengoa litzateke:
| 2. irudia: domeinu baten metamodeloa | Node: ordenagailua. MainNode: ordenagailu zentrala. LocalEdge: konexio lokala. Edge: urruneko konexioa. |
Metamodelo honetatik ondorengo profila definituko dugu:
Profil honetan lau estereotipo definitzen dira, metamodeloan definitu diren klase eta asoziazioen berdinak, eta hedatu behar den metamodeloko (UML) zein metaklasetan aplikatu behar diren adierazten da.

## MDA

MDA (Model Driven Architecture) OMG taldearen iniziatiba bat da. MDAn, garrantzia modelatuari ematen zaio, sistemaren aspektu ezberdinak ondo definituz, eta alde batera utziz plataforma batean egingo den garapenaren detaile zehatzak. Horrela, moldagarriagoa izatea lortuko dugu.
MDAk hiru maila ezberdintzen ditu. Lehenik eta behin, sistemaren eskaerak konputazioarekiko independentea den modelo batean modelatuko dugu (CIM, Computation Independent Model), non gure sistemak ekingo duen ingurunea definituko den. Hurrengo mailan, sistemaren funtzionalitatea definitzen duen modeloa dugu, baina garapena zein plataformatan egingo den kontutan hartu gabe (PIM, Platform Independent Model). Azkenik, PIM modeloa amaierako plataformarekiko baldintzatua dagoen modelo batean bihurtu behar da (PSM, Platform Specific Model).
Honen abantaila nagusia PIM-etik PSM ezberdinetara aldaketa automatikoak definitu daitezkeela da. Hau da, sistemaren PIM modelotik, PSM garatuko den plataformaren deskribapenetik, eta aldaketa arau batzuetatik, sistemaren garapen automatizatu bat lor genezake.
Plataformaren modeloa eta transformazio arauak deskribatzeko UML Profilak erabiltzen baditugu, deribatutako modeloa konsistentea izango da UMLen. MDAren arau nagusia ahal den neurrian estandarrak erabiltzea da (lengoaien UML Profilak edo plataforma estandarrak adibidez).
Plataforma baten UML Profila deskribatzeko, PIM modeloko elementuen eta plataformaren profilaren estereotipoen, balore etiketatuen eta mugaketen artean lotura bat ezarri behar da (mapping). Horrela, profileko estereotipoak erabiliko ditugu PIM modeloko elementuak markatzeko eta dagokion PSMa sortzeko. PSMko kontzeptuak adierazten dituzte markak eta PIMeko elementuetan aplikatzen da aldaketa nola egin behar den adierazteko.

## Kanpo estekak

* (Gaztelaniaz) UMLProfiles-Novatica04.pdf Gaiari buruzko dokumentua
* Datuak: Q1421951