500 likes | 890 Views
MDA įrankiai. Įvadas. MDA – Model Driven Architecture (modeliu paremta architektūra). Tai architektūra, kuri palaiko MDE (Model Driven Engineering). “Architektūra” čia turima omenyje daugiau viso MDA karkaso architektūra, o ne kuriamos sistemos architektūra.
E N D
Įvadas • MDA – Model Driven Architecture (modeliu paremta architektūra). Tai architektūra, kuri palaiko MDE (Model Driven Engineering). • “Architektūra” čia turima omenyje daugiau viso MDA karkaso architektūra, o ne kuriamos sistemos architektūra. • MDA, kaip ir MDE ar MDD (Model Driven Development) yra OMG (Object Management Group) iniciatyva.
Tradicinių MDE metodų trūkumai • Net ir naudojant sistemų kūrimą naudojant modelius (UML, OMT ir kitus) kaip pirminius šaltinius (MDE principas), sistemos kūrimas yra lėtas: • Kuriamų sistemų realizacijos, kurios yra apibrėžiamos modeliuose (pvz. UML ir kt.) paprastai atliekamos rankiniu būdu; • Besikeičiantys reikalavimai lėtai perkeliami į sistemos modelį bei kodą.
MDA privalumai • MDA iniciatyva žada žymiai pagreitinti programų kūrimą (sutrumpinant “Time To Market” etapą), programos kodą gaunant iš sistemos modelio atliekant transformacijas. • Naudojant MDA bus galima: • Žymiai pagerinti programinės įrangos kūrimo greitį; • Padidinti programinės įrangos kokybę; • Sumažinti rankinio darbo kiekį; • Sumažinti prisirišimą prie konkrečių technologijų (Java, .NET, ASP ir pan.) • Greitai reaguoti į reikalavimų pakeitimus.
MDA architektūra MOF – Meta-Object Facility CWM – Common Warehouse Model
MOF • M3 sluoksnis yra meta-meta modelis, t.y. tas kuriuo galima aprašyti kitus meta-modelius (pvz. UML) • M2 sluoksnio modelis aprašo M1 sluoksnio elementus (t.y. UML elementus); • M1 sluoksnyje aprašomi elementai remiantis M2 sluoksnio modeliu (pvz. tam tikros programos UML modelis); • M0 yra duomenų sluoksnis realaus pasaulio objektų aprašymui.
MDA transformacijos • Sistemų analitikas sudaro veiklos modelį, kuris naudojamas sukuriant PIM modelį. • Architektas sudaro aukšto lygio programinės įrangos modelį, nepriklausantį nuo platformos (vadinamas PIM – Platform Independent Model). • Vėliau jis yra transformuojamas į PSM (platform specific model) arba specifinį platformos modelį • Specifinis platformai modelis transformuojamas į programinės įrangos kodą.
MDA transformacijos • Paprastai tai tiesioginės inžinerijos procesas, nors MDA įgalina ir atvirkštinę inžineriją visuose lygiuose (žr. kitą skaidrę). • Atlikus visas transformacijas turėtume gauti jau veikiančią programinę įrangą.
MDA ryšiai tarp modelių • Naudojantis MDA principu, programinės įrangos architektas sudarytų PIM modelį ir jį tarkim transformuoti į PSM modelius, kurie yra SQL duomenų bazė, J2EE enterprise beans komponentai ir JSP vartotojo sąsaja. Vėliau PSM būtų atitinkamai transformuot i DDL, Java kodą ir JSP ir HTML dokumentus.
Kas yra CIM? • CIM – Computation Independent Model. Modelis aprašantis veiklos (verslo) logiką: • OSM (Organisation Structure Metamodel); • BPMN (Business Process Modeling Notation); • BPDM (Business Process Definition Metamodel); • ...
Kas yra PIM? • Tai nuo specifinės platformos atsietas sistemos analitinis modelis (Platform independent model): • Panaudos atvejų (use case) diagramos; • Veiklos (activity) diagramos; • Klasių (class) diagramos; • ...
PIM modelis Platform Independent Model yra tas modelis, kurį vienintelė turėtų sudaryti programinės įrangos architektas ir iš kurio transformacijų pagalbą būtų generuojami PSM modeliai. PIM Modelis pagal MDA galėtų būti išreikštas bet kokiu modeliu, dažniausiai yra išreiškiamas UML modeliu. Paveikslėlyje pateiktas dažnai pasitaikančios informacinės sistemos PIM modelis išreikštas UML modeliu.
Kaip iš CIM konvertuoti į PIM? • ??? • CIM traktuojamas tik kaip gairė sukuriant PIM modelį (rankiniu būdu); • UML netinkamas CIM modeliavimui; • Kol kas nėra*jokio formalaus būdo transformacijoms atlikti. * Bandymų atlikta tikrai nemažai ir pasiekta tam tikrų rezultatų.
Kas yra PSM? • Tai atitinkamai platformai (Platform Specific Model) skirtas analitinis modelis, gaunamas iš PIM: • Dažniausiai realizuojama taikant UML profilius (šablonus), kur UML elementams ir stereotipams aprašomi platformai būdingi atitikmenys; • Kol kas sunkiai sekasi sudaryti vienareikšmius perėjimus tarp PIM ir PSM
Kaip iš PIM konvertuoti į PSM • ??? • Rankiniu būdu (sukuriant PSM pagal PIM, galbūt dalinai taikant šablonus); • Automatinės transformacijos panaudojant profilius (šablonus); • Konvertavimui naudojamas transformacijos modelis (PDM – Platform Definition Model). Transformacijos modelis aprašo kaip PIM esybės ir jų ryšiai atvaizduojami atatinkamame PSM modelyje.
Kas yra kodas? • ...
Kaip konvertuoti iš PSM į kodą • ??? • Naudojamas kodo generatorius, kuris sukuria kodą panaudodamas: • PSM (dažnai paima jį tiesiog iš XMI); • Specifinės (target) platformos modelį; • Srities modelį.
Kaip modeliuoti programos realizaciją (implementation) ? • ??? • Galbūt – naudojant naują fUML (foundation UML) standartą? • Galbūt - naudojant xUML (eXecutable UML); • xUML yra viena iš UML šeimos kalbų, kuri gali apibrėžti modelio dinamiką ir kurios pagalba galima modeliuoti kompiliuojamas programas; • Tam naudojama Action language kalba. Keletas realizacijų: • Object Action Language(OAL), • Shlaer-Mellor Action Language(SMALL), • Action Specification Language(ASL), • That Action Language(TALL), • Starr's Concise Relational Action Language(SCRALL)// vienintelė grafinė kalba
MDA įrankiai • Kūrimo įrankiai – pradinių modelių sukūrimui ir tolesniam koregavimui; • Analizės įrankiai – modelių pilnumui, teisingumui analizuoti, skaičiuoti įvairias metrikas; • Transformavimo įrankiai – transformacijoms tarp modelių ir programinio kodo realizavimui. • Testavimo įrankiai – testuoti modeliams (čia model-based testavimas); • Imitavimo (simulation) įrankiai – sistemos vykdymo imitavimui; • Meta-duomenų valdymo įrankiai (ryšių užtikrinimui tarp skirtingų modelių); • Atvirkštinės inžinerijos įrankiai.
MDA problemos • “Idealistiška” iniciatyva – norima aplenkti programavimo etapą, o atvirkštinė kodo inžinerija nepageidaujama. Tai paskatino “Pragmatic MDA” gimimą, kuri labiau apjungia tradicinius vystymo metodus su MDA standartais. • Nepilni standartai – kai kurie nėra pilnai sukurti, kiti dar nepatvirtinti kaip standartai. • Specializuotų įgūdžių poreikis (tokius specialistus mažai kas ruošia). • Pasitikėjimas OMG. • Neaiški vertė. Dinamikai apibrėžti naudojama xUML action language kalba, kuri yra didesnio abstrakcijos lygio lyginant su 3GL kalbomis. Ar tai leis greičiau kurti efektyvesnes, kokybiškes programas – klausimas.
MDA įrankių charakteristikos • PIM palaikymas (ar galima kurti/redaguoti PIM modelius): • Galimybė sudaryti PIM modelį naudojant UML; • Galimybė sudaryti PIM modelį naudojant OMT; • Galimybė sudaryti PIM modelį naudojant OCL; • PSM palaikymas (ar galima kurti/redaguoti PIM modelius): • Galimybė gauti PSM modelį naudojant UML; • Galimybė gauti PSM modelį naudojant OMT; • Galimybė gauti PSM modelį naudojant OCL;
MDA įrankių charakteristikos • Skirtingų PSM generavimas (ar galimos skirtingos PSM transformacijos iš to paties PIM’o) • Modelių integracija (ar galima dirbti su keliais modeliais, iš kurių gaunama programa);
MDA įrankių charakteristikos • Programinės įrangos vystymas (ar teikiami įrankiai programos kodo tvarkymui ir pan.); • Ryšiai su kitais įrankiais (ar įrankis gali tiesiogiai komunikuoti su kitais įrankiais, importuoti/eksportuoti skirtingų įrankių modelius ir pan.); • Galimybė kurti savas transformacijas bei koreguoti egzistuojančias (built-in);
MDA įrankių charakteristikos • Modelio sudėtingumo valdymas (čia – peržiūros režimo valdymas, galimybė nurodyti modelio datiliškumą vaizdavimui); • Analizės priemonės (priemonės modelių taisyklingumui, pilnumui patikrinti); • Išraiškingumas (įrankis teikia pakankamą žymėjimų aibę pilnai atvaizduoti PIM, PSM modeliams); • Šablonai (įrankis leidžia kurti elementų šablonus);
MDA įrankių charakteristikos • Refactoring’o palaikymas (Pakeitimai PIM’e iškart verčiami į PSM’ą ir atvirkščiai); • Ryšiai tarp modelių (PIM<->PSM<->kodas išlaiko ryšius); • Trasavimas (čia – vykdomų transformacijų atsekamumas); • Programinės įrangos gyvavimo ciklo palaikymas (įrankis leidžia palaikyti programinės įrangos kūrimo ciklą (analizė, projektavimas, testavimas, diegimas, palaikymas);
MDA įrankių charakteristikos • Standartų palaikymas (UML, XMI); • Transformacijų kryptis: • PIM -> PSM (galimybė vykdyti tiesioginę inžineriją gaunant specifinį modelį iš apibendrinto); • PIM <- PSM (galimybė vykdyti tiesioginę inžineriją gaunant apibendrintą modelį iš specifinio); • PSM -> kodas (galimybė tiesiogiai generuoti kodą iš specifinio modelio, tiesioginė inžinerija); • PSM <- kodas (galimybė gauti specifinė modelį atlikus atvirkštinę programos kodo inžineriją, sinchronizavimo priemonės ir galimybės).
MDA įrankių charakteristikos • Palaikomos transformacijų kalbos: • Naudojama specifinė įrankio kalba; • Transformacijos rašomos Java kalba; • Transformacijos rašomos C# kalba; • Transformacijos rašomos Basic kalba • Įrankio kaina.
MDA įrankiai • AndroMDA • Atviro kodo (www.andromda.com) • Pritaikytas iš UML modelių generuoti J2EE projektus, realizuotus Java programavimo kalba. • Palaikomos Hibernate, EJB, Struts, Spring ir WebServices technologijos. • Programinės įrangos generavimas: • Sukuriamas PIM modelis naudojantis UML įrankiu (MagicDraw, Poseidon, Rational Rose). • Sukurtas modelis eksportuojamas į XMI dokumentus. • Naudojantis ANT įrankiu iškviečiama AndroMDA programa, kuri pagal parametrus ANT įrankio scenarijuose atlieka transformacijas į reikiamus komponentus.
MDA įrankiai • Rational XDE MDA Toolkit • Rational XDE MDA Toolkit yra add-in komponentas. XDE kaip modeliavimo įrankis yra tiesiog papildomas galimybėmis atlikti gudresnį kodo generavimą iš UML modelių. Vienas iš šio įrankio privalumų, kad viename įrankyje turime ir Modeliavimo įrankį, MDA transformacijų įrankį ir taip pat kodo redagavimo įrankį.
MDA įrankiai • ArcStyler • Vienas labiausiai išvystytų šio tipo įrankių; • Leidžia kurti biznio, UML modelius bei realizacijos kodą; • Integracija su MagicDraw; • Galimos “model-to-model”, “model-to-infrastructure” transformacijos; • Automatinis atvirkštinės inžinerijos palaikymas (iš programų); • Pilnas išplečiamumas (galimybė prisitaikyti kodą).
MDA įrankiai • OpenMDX • Atvirojo kodo (http://www.openmdx.org/); • Pritaikytas iš UML modelių generuoti J2EE projektus, realizuotus Java programavimo kalba; • Palaikomos CORBA, J2SE, J2EE ir .NET platformos ir technologijos; • DB palaikymas: Firebird, PostgreSQL, Oracle, DB2, MsSQL • Palaiko populiarius UML modeliavimo įrankius (Rational Rose, MagicDraw, Poseidon); • Galima kurti savas transformacijas.
MDA įrankiai • Programinės įrangos generavimas naudojantis OpenMDX įrankiu yra toks: • Sukuriamas PIM modelis naudojantis UML įrankiu (MagicDraw, Poseidon, Rational Rose). • Sukurtas modelis eksportuojamas į XMI dokumentus arba išsaugomas Rational Rose .mdl formate. • Naudojantis ANT įrankių iškviečiama OpenMDX programa, kuri pagal parametrus ANT įrankio scenarijuose atlieka transformacijas į reikiamus J2EE, J2SE, .NET komponentus, vartotojo sąsaja, Java Beans, DB modelius.
Pabaiga • Toliau priedas apie tai, kaip gali būti vertinami programinės įrangos projektavimo įrankiai.
Projektavimo įrankių vertinimo kriterijai • Saugyklos palaikymas: • yra/nėra ar platesnė skalė; • Failinė sist.; • DB; • Išplėtimo priemonės; • Naudojimo galimybės, specifinės savybės. • RT (Round Trip) inžinerija: • Pasirinkta skalė; • Realiu laiku; • Integruota; • Palaikomos kalbos.
Projektavimo įrankių vertinimo kriterijai • HTML dokumentacija; • UML versijos palaikymas (1.3 .. 2.1); • UML diagramų palaikymas; • Sąsajos intuityvumas: • Duomenų modelio integracija; • Eksportas į DDL, SQL; • Tiesioginė sąsaja su DB; • Sinchronizavimo galimybės (RT duomenų modeliui).
Projektavimo įrankių vertinimo kriterijai • Versijų kontrolė (visual source source safe, CSV, subversion, kita); • Navigacija modelyje; • Scenarijų (skriptingo palaikymas): • Galimybė naudoti specifinius scenarijus; • Galimybė naudoti išplėtimo priemones (API); • Palaikomos programavimo kalbos (bindings).
Projektavimo įrankių vertinimo kriterijai • Diagramų eksportavimas (XMI, HTML, kiti formatai); • Programos patikimumas; • Spausdinimo palaikymas; • Platformos;
Projektavimo įrankių vertinimo kriterijai • Integruotas redaktorius; • Dinaminių savybių pasiėmimas (“grabinimas”)
Projektavimo įrankių vertinimo kriterijai • MDA palaikymas (programų generavimo ypatybės, transformacijos); • Metrikų integravimas į įrankį; • Integracija su projekto valdymo įrankiais; • XMI palaikymas
Projektavimo įrankių vertinimo kriterijai • UML profiliai • Veiklos procesų modeliavimas • Veiklos modeliavimas; • Duomenų modeliavimas; • Web modeliavimas
Projektavimo įrankių vertinimo kriterijai • Projekto gyvavimo ciklo palaikymas • Veiklos modeliavimas; • Reikalavimų valdymas; • Analizė ir projektavimas; • Testavimas; • Versijų kontrolė; • Projekto valdymas; • ...
Projektavimo įrankių vertinimo kriterijai • Generuojamas kodas (tiesiogiai palaikomos, epr 3 šalių įrankius); • Projektavimo šablonų (design patterns) palaikymas; • Kaina.