MDA architektūros
esminis elementas - programinės sistemos ir probleminės srities modeliavimas.
Tačiau modeliavimas MDA iš esmės nesiskirtu nuo kitų, kodo generavimu pagystų,
programų kūrimo metodikų, jeigu perėjimai nuo PIM prie PSM modelių nebūtų
vykdomi automatizuotai. Tokiu būdu, norint pasinaudoti visais MDA pranašumais -
reikia realizuoti įrankius kurie vykdytų PIM - PIM ir PIM - PSM
transformacijas. 2.1 skyriuje panagrinėsime kokią reikšmę modelių
transformacijų realizavimui turi metamodeliavimas. 2.2 skyriuje apžvelgsime
transformavimo strategijas. Pasirinktos transformacijos strategijos
realizavimui, 2.4 skyriuje, bus palygintos ir parinktos eksperimentinės
realizacijos aplinkos.
2.1
Metamodeliavimo reikšmė modelių transformacijoms
OMG konsorciumas sukūręs vieningą modeliavimo kalbą UML pateikė nauja
standartą objektinės programinės įrangos modeliavimui ir projektavimui. Modelis
yra sistemos ar jos dalies aprašymas formalia modeliavimo kalba [3, 16p.].
Tačiau, kad modelis būtų formalus jis taip pat turi būti apibrėžtas formaliai.
Formaliems kalbų aprašymams naudojamos formalios kalbos vadinamos metakalbomis.
Pavyzdžiui Pascal kalbos gramatiką galima aprašyti BNF kalbos priemonėmis.
Tokiems formaliems metaduomenų ir modeliavimo kalbų aprašymams kurti OMG
konsorciumas sukūrė MOF (Meta Object Facility) kalbą [6, 1-15p.]. Formalių
modeliavimo kalbų aprašymų specifikavimas vadinamas metamodeliavimu. MOF kalba
turėjo didelę įtaką esminių MDA principų kūrimui. MOF kalba[1]
ypatinga tuo, kad ji yra save aprašanti, t.y. MOF kalba galima aprašyti ne tik
kitų kalbų metamodelius, bet ir jos pačios modelį. MOF - tai ne tik gali būti
naudojama naujų modeliavimo kalbų specifikavimui, bet ir universalus
metaduomenų aprašymo ir saugojimo standartas [1, 2-2 ir 2-3p.]. MOF kalba
atitinka OMG keturių lygmenų metadomenų architektūros aukščiausiąjį lygmenį
(žr. 3 pav.).
3 pav. -- Keturi OMG
metaduomenų architektūros lygmenys
Kiekvienas OMG metaduomenų architektūros lygmuo
atitinka tam tikrą modelių abstrakcijos
lygį (žr. 2 lent.).
|
2 lent. -- Keturi metaduomenų architektūros lygmenys
|
Abstraktumo lygmuo
|
Aprašymas
|
M3
|
Metametamodeliai, kurių elementai susieti statiniais
ryšiais. MOF modelio lygmuo.
|
M2
|
Metamodeliai, kurių
elementai - tai M3 lygmens modelio elementų egzemplioriai (instances) ir M2 lygmens metaklasės. Šitas lygmuo atitinka UML
kalbos gramatiką - UML metamodelį.
|
M1
|
Modeliai, kuriu elementai - M2 lygmens modelio
egzemplioriai. Tai UML modelių lygmuo.
|
M0
|
Modelių panaudojimas.
Šito lygmens elementai yra M1 lygmens elementų egzemplioriai, pvz. M1
lygmenyje - apibrėžiama klasė Customer, tai M0 lygmenyje klasės egzemplioriai bus Customer tipo objektai.
|
Literatūroje [3, 90p.]
minimos dvi priežastys dėl kurių metamodeliavimimas labai svarbus modelių
transformavimui ir MDA:
1.
Tai modeliavimo
kalbų specifikavimo priemonė MDA architektūroje. Metakalbos pagrindu apibrėžę
modeliavimo kalbos metamodelį galime specifikuoti PIM ar PSM kalbą.
2.
Transformacijų
taisyklės (rules) aprašo kokie pradinio modelio elementai turi būti transformuoti į
atitinkamus tikslinio modelio elementus.
4 pav. demonstruoja kaip
metamodeliavimas siejamas su PIM - PSM modelių transformacijomis.
4 pav. -- Metamodeliavimo ir modelių transformacijų
sąryšis
Pradiniame transformacijų
realizavimo etape, naudojant metakalbą, mums tenka specifikuoti formalią PIM
modeliavimo kalbą. Tai pasiekiama aprašant PIM metamodelį. PIM metamodelio
pagrindu sukuriamas PIM modelio egzempliorius, kuris atitinka mūsų modeliuojamą
programinę sistemą. Norint gauti tam tikrai programavimo platformai specifinį
PSM modelį, mes taip pat turime specifikuoti PSM modelio formalizmą (formalism) aprašydami PSM metamodelį. Galutinis aplinkos kūrimo etapas - tai
transformavimo įrankio realizavimas. Transformavimo įrankis, naudodamas
transformacijos specifikaciją, transformuos mūsų PIM į PSM. Šiuo požiūriu
transformacijų realizacija yra neatskiriama nuo metamodeliavimo. Tokiu būdu,
norėdami realizuoti transformaciją, pradžioje turime apsibrėžti išeities PIM ir
tikslo PSM modeliavimo kalbas.
Paminėtina, kad
sąvokos „kalba", „metakalba" ir „metametakalba" yra reliatyvios,
t.y. priklauso nuo nagrinėjamo abstrakcijos lygmens santykio su kitu lygmeniu,
pvz. pagal 3 pav., jeigu kalbame apie UML - tai UML šiuo metu vadinama
„kalba", UML kalbos metamodelis - aprašytas „metakalba" MOF, o MOF
metamodelis aprašytas -„metametakalba", kuri irgi yra MOF.
Komentarų nėra:
Rašyti komentarą