Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási és Alkalmazott Informatikai Tanszék
Ph.D. Értekezés Tézisei
Constraint Validation-Based Performance Optimizations in Domain-Specific Modeling Environments
Kényszerellenőrzés alapú teljesítményoptimalizálás szakterület-specifikus modellezőkörnyezetben
Vajk Tamás
Témavezető: Dr. Mezei Gergely Konzulensek: Dr. Lengyel László Dr. Levendovszky Tihamér
Budapest, 2014.
Ph.D. Értekezés Tézisei
Vajk Tamás Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási és Alkalmazott Informatikai Tanszék
1117 Budapest, Magyar Tudósok krt. 2. Q épület, B229 szoba. e-mail:
[email protected] tel: +36-1-463-42-25
Témavezető: Dr. Mezei Gergely Konzulensek: Dr. Lengyel László Dr. Levendovszky Tihamér
1. Bevezetés A modell alapú megközelítések használatával az utóbbi időben jelentősen javult a minőségi szoftverfejlesztés [BCW12]. A programmodellek alkalmazásával könnyebb ismertetni a szoftverrendszerek általános felépítését, valamint az egyes komponensek működését is, ezért hosszú ideje integrált részét képezik a dokumentációs folyamatnak. A fejlesztési időben használt modellekkel járó magasabb absztrakciós szint megkönnyíti a szoftverek megértését, és így jobb minőségű alkalmazások készítését teszi lehetővé. Továbbá a jól kidolgozott szoftverkomponensek könnyen újrahasználhatóak különböző alkalmazásokban, ezáltal lényegesen csökkentik a fejlesztési időt [HC01]. Ez a csökkentett fejlesztési idő elengedhetetlen a gyors fejlesztési ciklusokban [Lan12] folyamatosan naprakészen tartott mobil- és webalkalmazások készítése során.
Szoftvermodellezés Az egyik legszélesebb körben használt modellezési nyelv a Unified Modeling Language [UML05, RJB04, SP99]. Az UML egy szabványosított, általános célú modellezőnyelvcsalád, amely kiemelkedő vizuális modellezési tulajdonságai miatt terjedt el. Az UML számos diagramtípust tartalmaz, amik lehetővé teszik rendszerek stuktúrális, valamint viselkedési modellezését is. Például az osztály-, komponens- és telepítési diagramokkal különböző célokra, különböző absztrakciós szinten tudjuk leírni egy rendszer struktúráját. Emellett a tevékenység-, használatieset- és szekvenciadiagramok lehetőséget adnak a komponensek közötti kommunikáció, valamint az egyes funkciók definiálására. A nagy számú, különböző aspektusok leírására alkalmas jelölésrendszer hamar elterjedt, és máig de-facto szabványként használjuk szoftverekkel kapcsolatos problémák, ötletek és tervezési minták mindenki által érthető kommunikálására. Az UML széles körben elterjedt az iparban több hibája, gyengesége ellenére. Az utóbbi években használni kezdett különböző szakterületi modellezési megközelítések (DomainSpecific Modeling, DSM) [KT08, Kle09, Fow10] többek között ezeket a hibákat is próbálják orvosolni. Az általános célú UML-lel szemben a szakterületi modellezés során egy testreszabott nyelvet – egy szakterületi modellezőnyelvet (Domain-Specific Modeling Language, DSML, DSL) – hozunk létre, amely specifikusan a vizsgált problématér leírására alkalmas. Ennek következtében az újonnan létrehozott nyelv sokkal lényegretörőbb lehet, hiszen az absztakciós szintje a megfogalmazott feladathoz illeszkedhet. Szakterületi modellezés során a vizsgált problémát egy modellel fejezzük ki. Ennek a modellnek a struktúrális és viselkedési szabályait egy nyelvvel adhatjuk meg, amely nyelvet szintén leírhatunk egy (meta)modellel. Ennek a szülő-gyerek hierarchiának a tetején általában egy egyszerűsített UML osztálydiagram áll, ami lehetővé teszi alapvető struktúrák meghatározását. Objektumorientált programozási megközelítésben a modellek a metamodell példányainak felelnek meg, ezért is szokás rájuk példánymodellként hivatkozni. Természetesen a problémákhoz definiált példánymodelleknek nem csak a kis méretük előnyös; az általuk adott pontos problémaleírás kiváló eszköztámogatást tesz lehetővé. Egy könnyen alkalmazható és testreszabható DSM eszközben minden modellelem kinézetét, a többi elemhez való kapcsolatát vizuálisan is meghatározhatjuk, hogy jobban illeszkedjen ahhoz a jelölésrendszerhez, amit a szakterület ismerői már korábbról használnak. Ezáltal egy új, modell alapú rendszer könnyebben bevezethető egy cég már korábban is működő munkafolyamatába. Végül, az egyik legfontosabb előnye a szakterületi modellek alkalma1
zásának, hogy biztos alapot adnak pontos, rugalmas és automatikus termékgeneráláshoz. Ez a termék lehet másik modell, dokumentáció vagy forráskód is. Ha a modellek használata nemcsak dokumentációs célokat szolgál, akkor érdemes jobban integrálni azokat a fejlesztési ciklusba is. A modell alapú fejlesztési megközelítések (Model-Driven Engineering, MDE) [BCW12, SVC06] ehhez a modellt helyezik a fejlesztési iterációk középpontjába. A rendszereket modellekként specifikáljuk, és ezekből a modellekből automatizáltan generáljuk a programkódot. Az MDE egy megközelítési módok és ötletek családja: a Model-Driven Software Development (MDSD, MDD) csak a szoftverfejlesztésre koncentrál, a Model-Integrated Computing (MIC) [SK97] a modellek formális leírására, összefogására, analízisére, valamint a fejlesztési folyamat során a modellek átalakítására is, míg a Model-Driven Architecture (MDA) [MDA13, KWB03] irányelveket ad arra vonatkozóan, hogyan integráljuk a különböző modell alapú, Object Management Group által előírt szabványokat a szofverfejlesztési folyamatba.
Felhő alapú rendszerek A felhő alapú fejlesztés kiemelkedően sok figyelmet kapott az utóbbi időben. Az új szolgáltatások kedvező lehetőségeket biztosítanak a cégek számára az adataik tárolására és a számításaik elvégzésére egy nagy rendelkezésreállású, könnyen skálázható környezetben, ahol csak azokért az erőforrásokért kell fizetniük, amelyeket valóban használnak. A hagyományos infrastruktúrákhoz képest, a felhő alapú rendszereknek számos előnye van, amelyeket a cégek könnyen kombinálhatnak a már meglévő architektúrájukkal is, így hibrid rendszerek [MPF10] kialakításával lehetőség nyílik mindkét megoldás előnyeinek a kihasználására. A szolgáltatók szempontjából a felhő alapú rendszerek kiemelkedő profitot termelnek az eddig kihasználatlan számítási és tárolási kapacitás felhasználásával és a már meglévő belső infrastruktúrák minimális átszervezésével. Továbbá ezen nagy cégek a korábban megszerzett rendszerépítési és karbantartási tudásukat szolgáltatásként tudják értékesíteni. A legelterjedtebb felhő alapú szolgáltató platformok az Amazon Web Services (AWS) [Ama14], a Google App Engine (GAE) [Sev09], a The Rackspace Cloud [Rac13], és a Microsoft Windows Azure [Dav10]. A szolgáltatók különböző architektúrális szinten nyújtanak szolgáltatásokat [Bru11, Rho09]. Az infrastruktúraszolgáltatások (Infrastructure as a Service, IaaS) virtuális gépeket adnak a felhasználóknak, akik maguk installálják és tartják karban a használni kívánt operációs rendszert és alkalmazás-környezetet. A platformszolgáltatások (Platform as a Service, PaaS) ezeket az időigényes, sok hibalehetőséget rejtő feladatokat elvégzik a felhasználók helyett, és előre telepített, programozási interfészeken keresztül teszik elérhetővé a szolgáltatásaikat. A PaaS megoldások tipikusan nem csak számítási, de tárolási megoldásokat is nyújtanak, amik automatikusan skálázódnak az igényeknek megfelelően. Végül, a szoftver mint szolgáltatás modellben (Software as a Service, SaaS) a szolgáltatók teljes alkalmazásokat, például webes dokumentumszerkesztőt, nyújtanak a felhasználóknak.
2. Motiváció A modell alapú fejlesztés szerepe a szoftverkészítési folyamatokban hasonló, mint a gyárakban az automatizálásé: javítja a megbízhatóságot és a minőséget, hatékonyan kezelhe2
tővé teszi a megnövekedett komplexitást, és csökkenti a gyártási, fejlesztési időt. Az MDE azonban viszonylag új koncepció a szoftverfejlesztésben, így különböző környezetekben eltérő sikerrel tudjuk alkalmazni. Az MDE tehát egy ígéretes kezdeményezés az automatizált szoftverfejlesztés irányába, de még számos helyen továbbfejleszthető. A disszertáció célja, hogy hozzájáruljon az MDE módszerek teljesítményének és megbízhatóságának javításához, és új funkciókkal egészítsen ki szakterület-specifikus modellező környezeteket. A vizuális szakterületi modellezés kiváló módot ad szoftverrendszerek – különböző absztrakciós szinteken történő – statikus struktúrájának megtervezésére. Azonban vannak megkötések, amelyeket nem lehet grafikus nyelven kifejezni, vagy sokkal könnyebb szöveges módon megadni. Továbbá, modelltranszformációk esetén az attribútumváltoztatásokat sem célszerű vizuális nyelven megfogalmazni. Ezen megkötések miatt a szöveges nyelvek fontos kiegészítő szerepet játszanak a vizuális modellezésben. Számos nyelvet integráltak modellezőeszközökbe, amelyek közül talán az MDA részét képező Object Constraint Language (OCL) [OCL05, WK03] a legelterjedtebb, vélhetően azért, mert a kezdetek óta modellezőnyelvek kiegészítésére tervezték. A disszertáció középpontjában az OCL nyelv vizsgálata, kiegészítése és alkalmazása áll. Mind korábbi technológiákat, elméleti eredményeket, mint például a fordítók elméletét, mind új algoritmusokat beleszőttem szakterületi modellezőeszközökbe, hogy jobban integráljam az OCL nyelvet a modellezési folyamatba, és ezáltal jobb modellezési lehetőségeket biztosítsak. Ahogy a szakterületi modellezés terjed a szoftverfejlesztésben, az automatikusan előállított szoftverrészletek és a fejlesztőeszközök egyre magasabb teljesítménymutatókkal kell, hogy rendelkezzenek, máskülönben az ipar nem használja majd ezeket a megoldásokat. A disszertációban tervezési- és futásidejű teljesítmény-javítást is megvalósítok, hogy elősegítsem ipari méretű szakterületi modellek kezelését. Ahogy említettem, a teljesítmény-optimalizáció és a megfelelő eszköztámogatás elengedhetetlen az MDE technológiák elterjedéséhez. Habár az OCL nyelv csak kiegészítő szerepet játszik a modell alapú megoldásokban, a nyelv kiváló alapot nyújt számos modellezési funkció és teljesítmény-optimalizáció megvalósítására. Az egyik leghasznosabb tervezési idejű OCL-re épülő funkció az OCL-SQL fordítóalkalmazás, ami a Dresden OCL Toolkit [Dre13] része. A disszertációban bemutatott tervezési idejű javítás több hasonlóságot mutat általános fordítási technológiákkal, mint amilyen a [Rep82]-ben ismertetett inkrementális attribútum kiértékelés körmentes attribútum nyelvtanokra. Annak ellenére, hogy ezek az általános algoritmusok ígéretesnek tűnnek fordítók elemzési folyamatainak leírására, komplex analízist – mint például egy nyelvfüggő változónév feloldást – csak nehézkesen lehet kifejezni általános attribútum nyelvtannal, és ezáltal az ezekre építő megoldásokkal sem lehet elérni optimális teljesítmény-javulást. Futásidejű optimalizáció megvalósítására a [CT06]-ben bemutatott inkrementális kényszerkiértékelés egyike a legjobbaknak. A szerző alapötlete, hogy a kényszereket egyszer leellenőrzi a modellen, majd onnéttól fogva csak a változtatott elemeket, illetve az azokkal kapcsolatban lévő csomópontokat validálja újra. A megoldás egyetlen hátránya, hogy megköveteli a változtatások nyomon követését, ami általában csak az implementációs modellező környezetben tehető meg. A disszertációban javasolt futásidejű teljesítmény-javítás ezzel ellentétben nem épít semmi olyan külső funkcióra, amit csak az implementációs környezet tudna nyújtani, azaz a kényszerek validálásában elért teljesítmény-javulás a modellező rendszeren kívül is kihasználható. A modell alapú fejlesztés és a felhő alapú rendszerek kombinálása egy ígéretes új kutatási terület [BCJ10]. A megközelítéseket két csoportba lehet sorolni: (i) felhő ala3
pú alkalmazásfejlesztés automatizálása MDE technológiákkal, valamint (ii) modellezés támogatása felhő alapú technológiákkal. Az első esetben az MDE eszközök rugalmas kódgenerálási képességeit tudjuk kihasználni. A már létező szakterületi modelljeinket felhőben futó vagy felhő alapú szolgáltatásokat használó alkalmazássá tudjuk alakítani új modell-kód generátorokkal. A második esetben a felhő alapú szolgáltatások hatalmas számítási kapacitását és tárolási képességét tudjuk kihasználni. Mind a modelleket, mind a modell transzformációkat a felhőbe tudjuk migrálni, amellyel akár a széles körben használt mobil vagy beágyazott rendszerek számára is elérhetővé tehetjük az MDE technológiákat. Továbbá a nagy modellek feldolgozását új számítási megközelítések, mint a MapReduce alapú [LS10] elosztott gráfalgoritmusok tudják segíteni. A disszertációban az első megközelítést követem, amelyben a modellezéssel segítem felhő alapú rendszerek létrehozását. A felhő alapú megoldások nemcsak új üzleti modellt nyújtanak különböző rendszerabsztrakciós szinteken, hanem korábban ritkán használt technológiákat tesznek könnyen adaptálhatóvá a rendszereinkhez. Ezek az újonnan népszerűvé váló technológiák főként elosztott számítási- és tárolási megoldásokhoz kapcsolódnak. Az ezen területeken rendelkezésre álló kevesebb tapasztalatot más technológiákból átvett módszerek használatával próbáljuk pótolni. A disszertáció is ezt az irányvonalat követi: a relációs adatbázisok tervezésével kapcsolatos tudást ülteti át nem-relációs adattárakra. A nem-relációs (NoSQL) adattár egy gyűjtő fogalom, ami magában foglalja az egyszerű kulcs-érték párokból álló tárakat éppúgy, mint a gráf alapú adatbázisokat [Tiw11]. Ugyan a harmadik tézis eredményei NoSQL tárakra vonatkoznak, a kiválasztott tárfajta leginkább felhő alapú környezetben jelenik meg. Általános esetben a NoSQL megoldások finomhangolhatóak az éppen megoldandó problémához, de a felhőszolgáltatók által nyújtott NoSQL megoldások nem változtatható megkötésekkel rendelkeznek, így a tervezés során az adott problémát kell a NoSQL tárhoz igazítani. A disszertációban arra a kérdésre próbálok választ adni, hogy hogyan lehet automatizálni bizonyos NoSQL tárak sémáinak tervezését. A javasolt megoldás a szakterületi modellezést és az OCL nyelvet használja az adatelérési réteg formalizálására, elemzésére és átalakítására. Számos adatbázis optimalizáló megoldás létezik, például az Oracle Tuning Advisor [Ora12] és a SQL Access Advisor [KAP11], amik az adatbázis sémáját és a lekérdezések gyakoriságát használva indexek felvételét és denormalizálási opciókat javasolnak. Ezek az algoritmusok hasonlítanak a disszertációban bemutatottakhoz, azonban az általuk használt SQL funkcionalitás – mint például a tetszőleges számú index felvétele – nem érhető el a választott NoSQL megoldásokban, így ezen algoritmusok közvetlenül nem alkalmazhatóak a kiválasztott környezetekben. Más megközelítések relációs adattárak funkcionalitásait teszik elérhetővé NoSQL tárakon. Például a SimpleSQL [CdSM12] egy relációs réteget nyújt az Amazon SimpleDB társzolgáltatás felett. Ezek a megoldások általában erősen függenek a kiterjesztett tárak egyedi funkcióitól. A disszertáció is ezt a vonalat követi, egy kiválasztott NoSQL tártípusra tesz elérhetővé korábbi ismereteket.
3. Új tudományos eredmények A kutatásaim tudományos eredményeit három tézisbe csoportosítottam, amiket további altézisekre bontottam. Az elméleti eredményeket matematikai és mérnöki módszerekkel bizonyítottam, és esettanulmányokon mutattam be az alkalmazási lehetőségeiket. 4
Az alábbiakban összefoglalom a téziseket. • Az első tézisben tervezési idejű optimalizációt végeztem egy OCL nyelvű fordítóalkalmazásban. Ahhoz, hogy csökkentsem az OCL-ről C#-ra való fordítás idejét, inkrementális szemantikus analízist és kódgenerálást dolgoztam ki. A megközelítésem felhasználja a korábbi fordítási folyamatok által használt belső adatszerkezeteket és egy karakter alapú változási listát. Ezen elemekre építve az adatmodell nem módosított részeit kihagyhatjuk az ismételten végrehajtott ellenőrzéskor, amellyel javítható a fordító teljesítménye. A kidolgozott algoritmusról beláttam annak helyességét, meghatároztam a komplexitását, és az elkészült inkrementális kódgenerálás általánosságát C# és Prolog kódokra való fordítással illusztráltam. • A második tézisben az OCL fordító által generált kódban futásidejű optimalizációt valósítottam meg többszálúság bevezetésével. Az OCL végrehajtási szemantikáját a Communicating Sequential Processes (CSP) nyelvvel formalizáltam. Kétféle CSP leképzést adtam meg, amelyekből az egyik párhuzamosítva hajtható végre, majd beláttam ezek felcserélhetőségét. A kidolgozott szekvenciális és párhuzamos CSP verziók alkalmazhatóságát szimulációval igazoltam. • A harmadik tézisben nemrelációs, felhő alapú társzolgáltatást használó megoldásokhoz javasoltam automatikus adatséma-generáló algoritmust. A relációs adatbázisokkal ellentétben, amelyek indexek és normalizálás segítségével jól teljesítenek tetszőleges lekérdezések megválaszolásában, a nemrelációs adattárak sémáit a megválaszolandó lekérdezésekhez kell alakítani az optimális teljesítmény eléréséhez. A javasolt algoritmus előállítja a költségoptimális nemrelációs sémát három bemenet – az OCL-lel megadott lekérdezéshalmaz, a kezdeti relációs séma és a becsült lekérdezések száma – alapján.
Tézis I – Inkrementális szemantikus ellenőrzés és kódgenerálás Ebben a tézisben egy fordító alkalmazás szemantikus ellenőrzési és kódgenerálási folyamatainak teljesítményét optimalizáltam. A javasolt megközelítésben korábbi fordítások eredményeit felhasználva, csak az absztrakt szintaxisfa módosított részeit kell újra feldolgozni. A folyamat kihasználja, hogy a memóriában elérhetőek a korábbi fordítási folyamatok belső adatszerkezetei, valamint hogy nyomon lehet követni a bemeneti kódban végrehajtott szövegszerkesztési műveleteket. Az első tézist a disszertáció harmadik fejezete tartalmazza. Kapcsolódó publikációk: [46, 43, 36, 38, 41, 37, 24, 22, 44, 45]. A gráfok, fák, attribútált gráfok, absztrakt szintaxisfák (AST) definícióit a disszertáció tartalmazza, a következőkben az analízishez kapcsolódó főbb definíciókat ismertetem. 1. Definíció (Szintaktikus elemzés). Egy Gr nyelvtan szintaktikus elemzése egy Σ∗ → ? +3 ∗ AST függvény, ahol ha a Σ∗ bemenet levezethető az S nemterminálisból ( S Gr Σ ), akkor a függvény egy nem üres absztrakt szintaxisfát eredményez, ellenkező esetben üres eredményt ad. 5
2. Definíció (Attribútumkiértékelés). Az attribútumkiértékelés egy AST → AST függvény, amely a kiértékelése során az absztrakt szintaxisfa attribútumainak értékeit határozza meg. Ennek részét képezi egy AV attribútummal ellátott csomópont a attribútumának a kiértékelése (evala : AV → AV ). 1. Megjegyzés. A kiértékelési típusok a következő kategóriákba sorolhatóak [Muc97, Knu68]: • Szintetizált: evala (v) = processa (v, children(v)), azaz egy csomópont kiértékeléséhez csak a gyerekeinek az attribútumait használjuk, • Örökölt: evala (v) = processa (v, parent(v) ∪ siblings(v)), azaz a kiértékelt attribútum értéke függhet a szülő, illetve a szomszédos csomópontok értékeitől, ahol processa : AV × 2AV → AV állítja be az a ∈ A attribútum értékét a v ∈ AV csomóponton. Az inkrementális kódgenerálási algoritmus függ a kimeneti nyelv kifejezőerejétől. A következő definíciókkal megkülönböztethetünk fordításokat a nyelvek kifejezőerejének függvényében. 3. Definíció (Kifejezésmegőrző fordítás). A kifejezésmegőrző fordítás egy függvény E 1 ,EGr2 CGrGr1 ,Gr : LGr1 → LGr2 , amely LGr1 nyelvről LGr2 nyelvre fordít. EGr1 ∈ NGr1 és 2 EGr2 ∈ NGr2 nemterminális szimbólumokból vezethetőek le a két nyelvben a kifejezések. Egy fordítás kifejezésmegőrző, ha a bemenet minden EGr1 nemterminálisból levezetett része átfordítható egy EGr2 nemterminálisból levezethető kódrészletté. 4. Definíció (Gyengén kifejezésmegőrző fordítás). A gyengén kifejezésmegőrző fordítás E 1 ,EGr2 ,SGr2 ? egy függvény CGrGr1 ,Gr : LGr1 → LGr2 , amely LGr1 nyelvről LGr2 nyelvre fordít. 2 EGr1 ∈ NGr1 és EGr2 ∈ NGr2 nemterminális szimbólumokból vezethetőek le a két nyelvben a kifejezések és SGr2 ∈ NGr2 szimbólumból az LGr2 nyelv utasításai. Egy fordítás gyengén kifejezésmegőrző, ha a bemenet minden EGr1 nemterminálisból levezetett része átfordítható egy L EGr2 nyelvű kifejezéssé és egy rendezett L SGr2 nyelvű utasítások listájába, Gr2
Gr2
ahol az utóbbi lista a generált kifejezés értékét számítja ki.
Altézis I.1 – Normál (nem inkrementális) szemantikus elemzés tulajdonságai Beláttam, hogy a szintaktikus ellenőrzés a következő tulajdonságokkal rendelkezik: P1. ∀Σ∗ rész-sztringre, ha ∃ OCLExpr OclGr +3 Σ? , akkor ∃AST a Σ∗ rész-sztringhez, és ?
val(0 V ertexT ype0 , AST ) = 0 OCLExpr0 , P2. ha ∃ OCLExpr1 OclGr +3 (Σ ∪ N )∗ OCLExpr2 (Σ ∪ N )∗ , akkor AST 2 ⊆ AST 1 , ahol AST 1 az OCLExpr1 -hez és AST 2 az OCLExpr2 -höz tartozik, ?
? +3 P3. ha ∃ S OclGr (Σ ∪ N )∗ OCLExpr (Σ ∪ N )∗ , akkor AST 2 ⊆ AST 1 , ahol AST 1 az S-hez, az AST 2 az OCLExpr-hez tartozik,
6
ahol N a nemterminális szimbólumok halmaza, Σ a terminális karakterek halmaza a nyelvtanban, és OCLExpr ∈ N az OCL nyelv kifejezéseit reprezentáló nemterminális szimbólum. Beláttam, hogy a típusellenőrzés nem változtatja meg az absztrakt szintaxisfa szerkezetét, csupán a típusinformációt tároló ’Type’ attribútumot értékeli ki. Megmutattam, hogy a típusanalízis során, az OclGr nyelvtanban csak szintetizált attribútum kiértékelésekre van szükség az OCLExpr nemterminálishoz tartozó csomópontokon.
Altézis I.2 – Inkrementális szemantikus elemzés tulajdonságai Az I.1 Altézis eredményeire építve, inkrementális fordító algoritmust adtam, amivel lehetséges a részben módosított szintaxisfák elemzése. Bebizonyítottam, hogy az algoritmus ugyanazt az absztrakt szintaxisfa szerkezetet állítja elő, mint a normál fordítási folyamat. 0 Megmutattam, hogy a nem módosított részfákat a módosított AST fában nem szükséges 0 0 újraelemezni, és azokra type(AST part ) = type(AST part ). Legyen vorig egy nem módosí0 0 tott csomópont az AST fában, és tegyük fel, hogy létezik p útvonal vorig csomóponttól 0 0 0 egy módosított csomóponthoz (p1 = vorig , pn = vmod és vmod módosított csomópont). 0 0 Bebizonyítottam, hogy v ∈ AST csomópontot akkor kell újraelemezni, ha a p út minden csomópontjának típusa megváltozott. Beláttam, hogy a normál szemantikus elemzés aszimptotikus viselkedése a T1 blogL = T1 L kifejezéssel adható meg. Valamint megmutattam, hogy az inkrementális verzió a T1 (l + logL) + T2 (l ∗ logL) összeggel közelíthető, ahol T1 egy csomópont feldolgozásához, T2 pedig az egyszeri bejárásához szükséges idő; L a bemenet, míg l a módosítások hossza. ! Közelítő összefüggést!adtam az inkrementális elem+ T2 l logL + kb logl + 2l kifejezéssel becsülhető, ahol zés időigényére, ami a T1 l + logL 2 2 4 k a változtatások száma, b a fában az átlagos gyerekcsomópontok száma, és T1 , T2 , L, l a korábbiakban definiált változók.
Altézis I.3 – Inkrementális kódgenerálás Algoritmust adtam inkrementális kódgenerálásra. Megadtam az OCL kifejezések injektív OCLExpr,expr leképezését a C# megfelelőikre, amivel beláttam, hogy adható COCL,C# kifejezésmegőrző fordítás. Hasonlóan konstruktív bizonyítással megmutattam, hogy adható gyengén OCLExpr,V,C? kifejezésmegőrző COCL,P fordítás OCL és Prolog között, ahol V a Prolog értéktírolog pusoknak (változók és konstansok) felel meg, valamint C a klózok (clause) és összetett elemek (compound term) nemterminális szimbóluma.
Tézis II – Párhuzamos Object Constraint Language Ebben a tézisben az Object Constraint Language fordítóalkalmazás kimeneti kódját optimalizáltam. A modellellenőrzés teljesítményének javítása érdekében párhuzamos végrehajtást valósítottam meg. Kiterjesztettem az OCL nyelvet párhuzamos végrehajtást jelző direktívákkal úgy, hogy a szekvenciális és párhuzamos végrehajtású kódrészletek felcserélhetőek egymással. A két végrehajtási mód ekvivalenciájának bizonyításához a Communicating Sequential Processes folyamatalgebrával formalizáltam azokat. A második tézist a disszertáció negyedik fejezete tartalmazza. Kapcsolódó publikációk: [29, 23, 38, 22, 44]. 7
5. Definíció (Párhuzamos ekvivalencia). P1 és P2 CSP folyamatok párhuzamosan ekvivalensek, ha P1 és P2 CSP akciói ugyanazokat a műveleteket hajtják végre a változóikon. Továbbá az akciók sorrendje csak akkor cserélhető fel, ha minden Pik párhuzamos folyamatra Pi folyamatban teljesül, hogy var(Pij ) ∩ var(Pik ) = acc(Pij ) ∩ var(Pik ) = acc(Pik ) ∩ var(Pij ) = {}, ahol acc(X) az X folyamat által olvasott, és var(X) az X által módosított változókat jelölik.
Altézis II.1 – A végrehajtás formalizálása Formalizáltam az OCL nyelv végrehajtási szemantikáját szekvenciálisan és párhuzamosan végrehajtható módon a Communicating Sequential Processes terminológiáival. Mind az OCL nyelv típuskönyvtárát, mind a szakterületi modellelemek átalakítását megadtam CSP nyelven. Kidolgoztam egy rendszert, amiben az érték- és referenciatípusok egységesen kezelhetőek. Beláttam, hogy a bináris műveletek kétféle leképzése párhuzamosan ekvivalens, továbbá bebizonyítottam, hogy az iterátorok leképzésének szekvenciális és párhuzamos végrehajtása is megegyezik. Megmutattam, hogy az általános célú iterate OCL kifejezés párhuzamosítható, ha a törzse felosztható egy m leképző és egy r redukáló függvényre úgy, hogy m független az acc akkumuláló változótól és (Tacc , r) egy kommutatív monoidot képez, ahol Tacc a változó típusát adja.
Altézis II.2 – Teljesítmény A kidolgozott leképezés gyakorlatban való használhatóságát egy OCL kódrészlet elemzésével igazoltam a Process Analysis Toolkit [SLDP09] szimulációs környezetben. Mérésekkel igazoltam, hogy a generált kimeneti kód teljesítménye nagyban függ a párhuzamosított programelemektől, és megmutattam, hogy az elérhető teljesítmény-növekedés megközelíti az elméletben elérhető maximumot; a kényszerellenőrzés 1.75-szoros és 2.8-szeres teljesítményjavulást mutat két- és négymagos processzorokon az egymagos végrehajtáshoz képest.
Tézis III – Automatikus NoSQL séma-optimalizáció A harmadik tézisben ismertetett algoritmuscsoport relációs adatsémákat transzformál NoSQL tárbeli megfelelőikre, és a sémákon értelmezett előre definiált lekérdezéseket átalakítja úgy, hogy illeszkedjenek az új sémákhoz. A javasolt megoldás több lehetséges módon, automatikusan denormalizálja a kiinduló sémát. Majd ha az összes lehetőség rendelkezésre áll, akkor – az átalakított lekérdezéseket is figyelembe véve – adott terhelés mellett meghatározza a költségoptimális megoldást. A harmadik tézist a disszertáció ötödik fejezete tartalmazza. Kapcsolódó publikációk: [30, 32, 31, 9, 19]. 6. Definíció (Tartalmazási függőség). Egy IN D tartalmazási függőség egy S relációhalmaz fölött egy olyan R1 [A1 , ..., Am ] ⊆ R2 [B1 , ..., Bm ] kifejezést jelöl, ahol R1 , R2 ∈ S; Ai (1 ≤ i ≤ m) attribútumok az R1 reláció, Bi (1 ≤ i ≤ m) attribútumok az R2 reláció elemei; és R[AS] az R reláció AS attribútumai fölötti projekciót jelöli. Habár a definíció megenged több attribútumon értelmezett tartalmazási függőségeket, ebben a munkában mindig csak egyetlen attribútumot használok. Az irodalomban ezt 8
egyértékű tartalmazási függőségnek (unary inclusion dependency) [MLP09] nevezik, és ezek a tartalmazási függőségek egyetlen relációs adatbázisok által is támogatott verziói. A külső kulcsok esetén ugyanis a hivatkozott kulcsoszlop tartalmazza az összes hivatkozható elemet a másik táblából. 7. Definíció (NoSQL reláció). Egy R NoSQL reláció egy R(A1 , A2 , ..., An ), n > 0 reláció kiegészítve egyetlen AI attribútummal az R relációból, amely mentén hatékonyan (anélkül, hogy végig kellene olvasni az R reláció összes sorát) lehet egyelemű és intervallumkiválasztást végrehajtani.
Altézis III.1 – NoSQL sémaoptimalizáló algoritmus Algoritmust adtam, amellyel előállítható egy kezdeti relációs séma összes denormalizált változata. Kidolgoztam egy algoritmust, amely átalakítja a megfogalmazott lekérdezéseket a denormalizálási lépések mentén az új sémákhoz illeszkedőre. Algoritmust adtam az indexoszlop megválasztására a NoSQL relációban, hogy segítsem a lekérdezések teljesítményének javítását. Az egymásnak ellentmondó indexopciókat két módon is feloldottam: különböző tárolási és lekérdezési költségekkel. Bebizonyítottam, hogy az indexválasztó algoritmusban keletkező új tartalmazási függőségek mentén való denormalizálás nem eredményez új sémákat, ezért az összes denormalizált verziót előállító algoritmus végrehajthatja előbb a denormalizálást, majd az indexválasztást. Az algoritmusokat gyakorlati példán illusztráltam.
Altézis III.2 – Az algoritmus elemzése Gráftranszformációval formalizáltam a denormalizálási algoritmust. A formalizált algoritmuson kategóriaelméleti módszerekkel beláttam, hogy az algoritmus irányított köröket nem tartalmazó bemeneti sémákon terminál. Megmutattam, hogy ha a kezdeti séma tartalmaz irányított kört, akkor az algoritmus végtelen sok denormalizált séma verziót állít elő. A bemeneti lekérdezések alapján felső határt adtam a denormalizálási problématér mélységére, amivel feloldottam a nemterminálási problémát tartalmazási függőségkörök esetén.
Altézis III.3 – Költség- és teljesítménykiértékelés Algoritmust adtam költségbecslésre egy séma, a rajta definiált lekérdezések és a várható terhelés figyelembevételével. Kiértékeltem mind a maximális, mind az átlagos költséget. A számításokat gyakorlati példán illusztráltam. A denormalizálás mellett megvizsgáltam a lekérdezések teljesítményét különböző entitástípusok egy táblában történő tárolása esetén, valamint különböző kulcsválasztási módok mellett. Mérésekkel igazoltam, hogy általános esetben érdemes a különböző típusú entitásokat külön táblákban tárolni. Megmutattam továbbá, hogy a kulcsokba kódolt szemantikus információ használatával nagymértékben javítható a lekérdezések végrehajtási ideje.
4. Az eredmények alkalmazása A kutatásom elméleti eredményeit a Visual Modeling and Transformation System (VMTS) [VMT13, LLMC05] rendszerbe integráltam, amellyel az eredményeket ipari és K+F projektekben kamatoztattuk. 9
Az első tézis tervezési idejű teljesítményjavulást eredményez, a modellezési élményt javítja az OCL kódrészletek fordítási idejének csökkentésével. A tipikus modell alapú fejlesztés iteratív, a kezdeti modellt OCL nyelvű megkötésekkel egészítjük ki, majd a modellt a kényszereket együtt folyamatosan javítjuk a rendszer finomhangolásához. Minden iterációban apró változásokat végzünk az OCL kódrészleteken, amelyeket a javasolt inkrementális fordító hatékonyan tud kezelni. A második tézisben a fordítóalkalmazás által generált kimeneti kódot kiegészítettem párhuzamosan, több szálon végrehajtható elemekkel. Ez az optimalizáció futásidejű teljesítményjavulást eredményez a modellezőkörnyezetben, hiszen a végrehajtott OCL kódrészletek képesek kihasználni az általánosan elérhető többmagú processzorok által nyújtott teljes számítási kapacitást. A modellezőkörnyezeten belül elért javulás mellett, az eredmények kihasználhatóak a VMTS-en kívül is, mivel a metamodellből készített programozói API-t egészítjük ki az OCL kényszerek C# nyelvű megfelelőivel, amely API független a modellező környezettől. Végül, a harmadik tézisben a VMTS rendszert, mint fejlesztési környezetet használjuk, amiben modellezni tudjuk egy alkalmazás adatelérési rétegét, és ezen modellből a javasolt automatikus generáló folyamat előállítja a költségoptimális, de továbbra is megfelelő teljesítményű ekvivalens adatréteget, amely felhő alapú környezetben használható. A tárolási célplatformok a Windows Azure Table Storage és az Amazon DynamoDB nemrelációs adattárak, mivel ezek felépítése hasonló és közel azonos megkötésekkel rendelkeznek.
5. Kapcsolódó publikációk [1] László Angyal, Márk Asztalos, László Lengyel, Tihamér Levendovszky, István Madari, Gergely Mezei, Tamás Mészáros, László Siroki, and Tamás Vajk. Towards a Fast, Efficient and Customizable Domain-Specific Modeling Framework. In Proceedings of the IASTED International Conference, pages 11–16, Innsbruck, Austria, February 2009. [2] László Angyal, Tamás Vajk, and Gergely Mezei. VMTS Solution of Case Study: Reverse Engineering. In Proceedings of the 5th International Workshop on GraphBased Tools - Graph Transformation Tool Contest - GraBaTs, Zurich, Switzerland, 2009. [3] Márk Asztalos, Péter Ekler, László Lengyel, Tihamér Levendovszky, István Madari, and Tamás Vajk. Automated formal verification of graph rewriting-based model transformations. Scientific Bulletin of „Politehnica” University of Timişoara, Transactions on Automatic Control and Computer Science (Buletinul Stiintific al Universitatii „Politehnica” din Timişoara, Romania, Seria Automatica si Calculatoare), 55(69):175–184, 2010. [4] Márk Asztalos, Péter Ekler, László Lengyel, Tihamér Levendovszky, and Tamás Vajk. MCDL: A Language for Specifying Graph Conditions with Attribute Constraints. In Proceedings of Workshop on Model-Driven Engineering, Verification, and Validation, pages 43–48, Oslo, Norway, 2010. 10
[5] Márk Asztalos, István Madari, Tamás Mészáros, Tamás Vajk, and Gergely Mezei. Szakterület-specifikus modellezés. Híradástechnika, LXV(5-6):25–30, 2010. [6] Márk Asztalos, István Madari, Tamás Vajk, László Lengyel, and Tihamér Levendovszky. Formal Verification of Model Transformations: an Automated Framework. In Proceedings of IEEE International Joint Conference on Computational Cybernetics and Technical Informatics - ICCC-CONTI, pages 493–498, Timisoara, Romania, May 2010. [7] Márk Asztalos and Tamás Vajk. Offline Verification of Graph Rewriting-Based Model Transformations. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 95–104, Budapest, Hungary, 2010. [8] Paul Coulton, William Bamford, Tamás Vajk, and Reuben Edwards. Using a Mobile Phone as a "Wii-like" Controller for Playing Games on a Large Public Display. International Journal of Computer Games Technology, pages 1–6, 2008. [9] László Deák, Gergely Mezei, Tamás Vajk, and Krisztián Fekete. Graph Partitioning Algorithm for Model Transformation Frameworks. In Proceedings of International Conference on Computer as a Tool - EUROCON, pages 475–481, Zagreb, Croatia, 2013. [10] Péter Fehér, Tamás Vajk, Hassan Charaf, and László Lengyel. MapReduce Algorithm for Finding st-Connectivity. In Proceedings of the 4th IEEE International Conference on Cognitive Infococommunications, Budapest, Hungary, 2013. [11] Krisztián Fekete, Kristóf Csorba, Bertalan Forstner, Marcell Fehér, and Tamás Vajk. Energy-efficient computation offloading model for mobile phone environment. In Proceedings of IEEE International Conference on Cloud Networking - CLOUDNET, pages 95–99. IEEE, 2012. [12] Krisztián Fekete, Kristóf Csorba, Bertalan Forstner, Tamás Vajk, Marcell Fehér, and István Albert. Analyzing computation offloading energy-efficiency measurements. In Proceedings of IEEE International Conference on Communications 2013: IEEE ICC’13 - Fifth Workshop on Cooperative and Cognitive Networks (CoCoNet5), pages 306–310, Budapest, Hungary, 2013. [13] Krisztián Fekete, Kristóf Csorba, Tamás Vajk, Bertalan Forstner, and Krisztián Pándi. Towards an Energy Efficient Code Generator for Mobile Phones. In Proceedings of the 4th IEEE International Conference on Cognitive Infococommunications, Budapest, Hungary, 2013. [14] Paul Gilbertson, Paul Coulton, Fadi Chehimi, and Tamás Vajk. Using "tilt" as an interface to control "no-button" 3-d mobile games. Computers in Entertainment, 6(3):1–13, November 2008. [15] Paul Gilbertson, Paul Coulton, and Tamás Vajk. Using Tilt as the Input for 3D Mobile Games. In The Third International Conference on Games Research and Development 2007 - CyberGames, Manchester, United Kingdom, September 2007. 11
[16] László Lengyel, Tihamér Levendovszky, Gergely Mezei, Tamás Vajk, and Hassan Charaf. Practical Uses of Validated Model Transformation. In Proceedings of International Conference on Computer as a Tool - EUROCON, pages 2200–2207, Warshaw, Poland, 2007. [17] László Lengyel, Tihamer Levendovszky, Tamás Vajk, and Hassan Charaf. Realizing QVT with Graph Rewriting-Based Model Transformation. Electronic Communications of the European Association of Software Science and Technology - ECEASST, 4, 2006. [18] István Madari and Tamás Vajk. Translation of QVT Relation Models to Text. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 85–94, Budapest, Hungary, 2010. [19] Gergely Mezei, László Deák, Krisztián Fekete, and Tamás Vajk. Graph partitioning algorithm for social network model transformation frameworks. In 8th International Joint Conference on Software Technologies, pages 480–487. SciTePress, 2013. [20] Gergely Mezei, László Siroki, Tamás Vajk, and István Madari. VMTS Solution of Case Study: Leader Election. In Proceedings of the 5th International Workshop on Graph-Based Tools - Graph Transformation Tool Contest - GraBaTs, Zurich, Switzerland, 2009. [21] Gabriele Taentzer, Enrico Biermann, Dénes Bisztray, Bernd Bohnet, Iovka Boneva, Artur Boronat, Leif Geiger, Rubino Geiß, Ákos Horvath, Ole Kniemeyer, Tom Mens, Benjamin Ness, Detlef Plump, and Tamás Vajk. Generation of Sierpinski Triangles: A Case Study for Graph Transformation Tools. Applications of Graph Transformations with Industrial Relevance: Third International Symposium, AGTIVE 2007, Revised Selected and Invited Papers, pages 514–539, 2008. [22] Tamás Vajk. Incremental OCL Compiler Architecture. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 51–62, Budapest, Hungary, 2008. [23] Tamás Vajk. CSP Simulation of Parallel OCL Constraint Checking. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 160–172, Budapest, Hungary, 2011. [24] Tamás Vajk, Márk Asztalos, and Gergely Mezei. Formal Analysis of Incremental Code Generation in OCL Compilers. Scientific Bulletin of „Politehnica” University of Timişoara, Transactions on Automatic Control and Computer Science (Buletinul Stiintific al Universitatii „Politehnica” din Timişoara, Romania, Seria Automatica si Calculatoare), 55(69):117–122, 2010. [25] Tamás Vajk, William Bamford, Paul Coulton, and Reuben Edwards. Using a Mobile Phone as a Wii like Controller. In The Third International Conference on Games Research and Development 2007 - CyberGames, Manchester, United Kingdom, 2007. [26] Tamás Vajk and Hassan Charaf. A Tool Support for Creating Mobile User Interface. In Proceedings of MicroCAD 2006 International Scientific Conference, pages 275– 280, Miskolc, Hungary, March 2006. 12
[27] Tamás Vajk and Hassan Charaf. Mobile Application Development to Multiple Platforms. Scientific Bulletin of „Politehnica” University of Timişoara, Transactions on Automatic Control and Computer Science (Buletinul Stiintific al Universitatii „Politehnica” din Timişoara, Romania, Seria Automatica si Calculatoare), 51(4):69–74, 2006. [28] Tamás Vajk and Hassan Charaf. The Use of Metamodeling Technique in Mobile User Interface Development. In Proceedings of 7th International Conference On Technical Informatics, pages 57–60, Timisoara, Romania, June 2006. [29] Tamás Vajk, Zoltán Dávid, Márk Asztalos, Gergely Mezei, and Tihamér Levendovszky. Runtime Model Validation with Parallel Object Constraint Language. In Proceedings of the 8th International Workshop on Model-Driven Engineering, Verification and Validation, MoDeVVa, pages 1–8, New York, NY, USA, 2011. ACM. [30] Tamás Vajk, László Deák, Krisztián Fekete, and Gergely Mezei. Automatic NOSQL Schema Development: a Case Study. In Proceedings of the IASTED International Conference on Parallel and Distributed Computing and Networks, PDCN 2013, pages 656–663, 2013. [31] Tamás Vajk, László Deák, Gergely Mezei, and Tihamér Levendovszky. Performance Evaluation of Model-based Data Access Layers in NoSQL Databases. In Proceedings of the First Workshop on MDE for and in the Cloud CloudMDE, Coppenhagen, Denmark, 2012. [32] Tamás Vajk, Péter Fehér, Krisztián Fekete, and Hassan Charaf. Denormalizing Data into Schema-free Databases. In Proceedings of the 4th IEEE International Conference on Cognitive Infococommunications, Budapest, Hungary, 2013. [33] Tamás Vajk, Róbert Kereskényi, Tihamér Levendovszky, and Ákos Lédeczi. Raising the Abstraction of Domain-Specific Model Translator Development. In Proceedings of the Conference on Engineering of Computer Based Systems, pages 31–37, San Francisco, USA, 04/2009 2009. [34] Tamás Vajk and Tihamér Levendovszky. Imperative OCL Compiler Support for Model Transformations. In Proceedings of 7th International Symposium of Hungarian Researchers on Computational Intelligence, pages 166–178, Budapest, Hungary, November 2006. [35] Tamás Vajk and Tihamér Levendovszky. A Domain-Specific Language for Simulation Systems. In Proceedings of MicroCAD 2007 International Scientific Conference, pages 231–236, Miskolc, Hungary, March 2007. [36] Tamás Vajk and Tihamér Levendovszky. Incremental Type Checking in OCL Compilers. In Proceedings of 1st IEEE Eastern European Regional Conference on the Engineering of Computer Based Systems, pages 9–18, Novi Sad, Serbia, 2009. [37] Tamás Vajk and Asztalos Márk. Incremental Code Generation in Object Constraint Language Compilers. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 71–84, Budapest, Hungary, 2010. 13
[38] Tamás Vajk and Tamás Mészaros. Code Generation in OCL Compilers. In Proceedings of the Automation and Applied Computer Science Workshop - AACS, pages 163–174, Budapest, Hungary, 2009. [39] Tamás Vajk, Tamás Mészáros, and Tihamer Levendovszky. Design pattern modeling with constraint relaxation. Electronic Communications of the European Association of Software Science and Technology - ECEASST, 25, 2010. [40] Tamás Vajk and Gergely Mezei. Sierpinski Triangles with VMTS. In Applications of Graph Transformation 2007 (AGTIVE) - Graph Transformation Tool Contest, Kassel, Germany, 2007. [41] Tamás Vajk and Gergely Mezei. Incremental OCL to C# Code Generation. In Proceedings of IEEE International Joint Conference on Computational Cybernetics and Technical Informatics - ICCC-CONTI, pages 493–498, Timisoara, Romania, May 2010. [42] Tamás Vajk, Gergely Mezei, and Hassan Charaf. Architecture of an In-Memory Transformation Engine. In Proceedings of 8th International Symposium of Hungarian Researchers on Computational Intelligence, pages 573–581, Budapest, Hungary, November 2007. [43] Tamás Vajk, Gergely Mezei, and Tihamer Levendovszky. An Incremental OCL Compiler for Modeling Environments. Electronic Communications of the European Association of Software Science and Technology - ECEASST, 15, 2008. [44] Tamás Vajk, Gergely Mezei, and Tihamér Levendovszky. OCL Compiler Support for a Modeling Environment. In Proceedings of 8th International Conference On Technical Informatics, pages 5–8, Timisoara, Romania, June 2008. [45] Tamás Vajk, Gergely Mezei, and Tihamér Levendovszky. OCL Compiler Support for Modeling Environments with Incremental Compilation. Scientific Bulletin of „Politehnica” University of Timişoara, Transactions on Automatic Control and Computer Science (Buletinul Stiintific al Universitatii „Politehnica” din Timişoara, Romania, Seria Automatica si Calculatoare), 53(1):19–24, 2008. [46] Tamás Vajk, Gergely Mezei, and Tihamér Levendovszky. Incremental Semantic Analysis for OCL Compilers. Innovations in Systems and Software Engineering, 9(3):147–162, 2013.
6. Irodalomjegyzék [Ama14] Amazon. Overview of Amazon Web Services. Technical report, Amazon, 2014. http://media.amazonwebservices.com/AWS_Overview.pdf. [BCJ10] Hugo Brunelière, Jordi Cabot, and Frédéric Jouault. Combining Model-Driven Engineering and Cloud Computing. In Proceedings of Fourth Workshop on Modeling, Design, and Analysis for the Service Cloud - MDA4ServiceCloud’10, Paris, France, June 2010. 14
[BCW12] Marco Brambilla, Jordi Cabot, and Manuel Wimmer. Model-Driven Software Engineering in Practice. Synthesis Lectures on Software Engineering. Morgan & Claypool Publishers, 2012. [Bru11]
Roberto Brunetti. Windows Azure Step by Step. Step by Step. Microsoft Press, 2011.
[CdSM12] Andre Calil and Ronaldo dos Santos Mello. SimpleSQL: A Relational Layer for SimpleDB. In Proceedings of Advances in Databases and Information Systems - 16th East European Conference, ADBIS 2012, pages 99–110, 2012. [CT06]
Jordi Cabot and Ernest Teniente. Incremental Evaluation of OCL Constraints. In Proceedings of the 18th International Conference on Advanced Information Systems Engineering, pages 81–95, 2006.
[Dav10]
David Chappell. The Windows Azure Programming Model. DavidChappel & Associates, 2010.
[Dre13]
Dresden OCL. Technische Universität Dresden, Dresden OCL Toolkit. http://www.dresden-ocl.org/index.php/DresdenOCL, 2013.
[Fow10]
Martin Fowler. Domain-Specific Languages. Addison-Wesley Professional, First edition, October 2010.
[HC01]
George T. Heineman and William T. Councill, editors. Component-Based Software Engineering: Putting the Pieces Together. Addison-Wesley, June 2001.
[KAP11] D. Kuhn, S. Alapati, and B. Padfield. Expert Indexing in Oracle Database 11g: Maximum Performance for your Database. Apresspod Series. Apress, 2011. [Kle09]
Anneke Kleppe. Software Language Engineering: Creating Domain-specific Languages Using Metamodels. Addison-Wesley, Upper Saddle River, NJ, 2009.
[Knu68]
Donald E. Knuth. Semantics of Context-Free Languages. Theory of Computing Systems, 2(2):127–145, June 1968.
[KT08]
Steven Kelly and Juha-Pekka Tolvanen. Domain-Specific Modeling: Enabling Full Code Generation. John Wiley & Sons, March 2008.
[KWB03] Anneke Kleppe, Jos Warmer, and Wim Bast. MDA Explained: The Model Driven Architecture: Practice and Promise. Addison Wesley, 2003. [Lan12]
Arthur M. Langer. Guide to Software Development - Designing and Managing the Life Cycle. Springer, 2012.
[LLMC05] László Lengyel, Tihamér Levendovszky, Gergely Mezei, and Hassan Charaf. Control Flow Support in Metamodel-Based Model Transformation Frameworks. In Proceedings of the IEEE EUROCON 2005 International Conference on „Computer as a tool”, pages 595–598, Belgrade, Serbia and Montenegro, November 2005. 15
[LS10]
Jimmy Lin and Michael Schatz. Design Patterns for Efficient Graph Algorithms in MapReduce. In Proceedings of the Eighth Workshop on Mining and Learning with Graphs, MLG ’10, pages 78–85, New York, NY, USA, 2010. ACM.
[MDA13] MDA. Object Management Group, MDA Specifications. http://www.omg.org/mda/specs.htm, 2013. [MLP09] FabienDe Marchi, Stéphane Lopes, and Jean-Marc Petit. Unary and n-ary inclusion dependency discovery in relational databases. Journal of Intelligent Information Systems, 32(1):53–73, 2009. [MPF10] Andy Mulholland, Jon Pyke, and Peter Fingar. Enterprise Cloud Computing: A Strategy Guide for Business and Technology Leaders. Meghan-Kiffer Press, Tampa, FL, USA, 2010. [Muc97] Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997. [OCL05] OCL. Object Management Group, Object Constraint Language Specification, Version 2.0. http://www.omg.org/spec/OCL/2.0/, June 2005. [Ora12]
Oracle. Oracle database performance tuning guide. http://docs.oracle.com, October 2012.
[Rac13]
Rackspace. Cloud Computing, Cloud Hosting & Online Storage. http://www.rackspace.com/cloud/, 2013.
[Rep82]
Thomas Reps. Optimal-time incremental semantic analysis for syntax-directed editors. In Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 169–176, New York, NY, USA, 1982. ACM.
[Rho09]
John Rhoton. Cloud Computing Explained. Recursive Limited, 2009.
[RJB04] James Rumbaugh, Ivar Jacobson, and Grady Booch. Unified Modeling Language Reference Manual. Pearson Higher Education, 2004. [Sev09]
Charles Severance. Using Google App Engine. O’Reilly Media, First edition, May 2009.
[SK97]
János Sztipanovits and Gábor Karsai. Model-Integrated Computing. Computer, 30(4):110–111, 1997.
[SLDP09] Jun Sun, Yang Liu, Jin Song Dong, and Jun Pang. PAT: Towards Flexible Verification under Fairness. In CAV, pages 709–714, 2009. [SP99]
Perdita Stevens and Rob Pooley. Using UML: Software Engineering with Objects and Components. Object Technology Series. Addison-Wesley, 1999.
[SVC06] Thomas Stahl, Markus Voelter, and Krzysztof Czarnecki. Model-Driven Software Development: Technology, Engineering, Management. John Wiley & Sons, 2006. 16
[Tiw11]
S. Tiwari. Professional NoSQL. Wrox Programmer to Programmer. Wiley, 2011.
[UML05] UML. Object Management Group, UML Specification, Version 2.0. http://www.omg.org/spec/UML/2.0/, 2005. [VMT13] VMTS. Visual Modeling and Transformation System. http://vmts.aut.bme.hu/, 2013. [WK03]
Jos Warmer and Anneke Kleppe. Object Constraint Language, The: Getting Your Models Ready for MDA. Addison Wesley, Second edition, 2003.
17