Modellalapú szoftverfejlesztés

VIAUMA22  |  Mérnökinformatikus MSc  |  Félév: 1  |  Kredit: 5

A tantárgy célkitűzése

A tárgy célja, hogy a hallgatók megismerjék a modellvezérelt szoftverfejlesztés alapjait, ideértve a szakterületi nyelvek fogalmát, a szöveges, ill. grafikus nyelvek kialakítása során vizsgálandó szempontokat, a követendő lépéseket, a szakterületi nyelvek bevezetéséhez kapcsolódó feladatokat, valamint a nyelvek karbantartásának kérdéseit. A tárgy elvégzésével a hallgatók átlátják és alkalmazni tudják a modellfeldolgozás eltérő lehetőségeit szoftvermodellek feldolgozására és különböző szoftvertermékek (forráskód, konfigurációs fájl, egyéb) generálására

A tárgy oktatói

A tantárgy részletes tematikája

Az előadások tematikája 1. A modellvezérelt fejlesztés, a szakterületi modellezés használata. A szakterületi nyelvek jellemzői, felhasználásuk, példák. A nyelvtervezés folyamatának és a modellek feldolgozásának bemutatása. 
2. Szöveges nyelvek/modellek feldolgozása, a fordítóprogramok felépítése. A szöveges nyelvek csoportosítási lehetőségei. Interpreterek működése és jellemzői. Projekciós editorok. 
3. A lexikai elemzés alapfogalmai és lépései, reguláris kifejezések, tokenizáció. A szintaktikai elemzés alapjai, levezetési fa, konkrét és absztrakt szintaxisfa. Környezetfüggetlen nyelvtanok. 
4. Szintaktikai elemzés: egyértelműség fogalma, balrekurzió, top-down parsing (BFS, DFS), LL(1) elemzés. A jobbelemzés sajátosságai. 
5. A szemantikai elemzés feladatai: szimbólumtáblák kialakítása és kezelése, típusrendszer, statikus és dinamikus típuselemzés. Attribútumnyelvtanok. 
6. Az optimalizáció feladata. Az alapblokk feladata, az optimalizáció szintjei. Transzformáció, Static Single Assignment (SSA), gráfreprezentáció, fi-függvény, optimalizálási technikák.  
7. A kódgenerálás technikái. Nyelvek közti átjárhatóság, az IL nyelv. Kódobfuszkáció. 
8. Modellezés metamodell alapon, a metamodellezés alapjai. Az UML kiterjesztési lehetőségei, UML Profile. Modellezés Blockly alapon. MOF és Eclipse-Modeling Framework (EMF). Kényszerek a modellekben, OCL. 
9. Konkrét és absztrakt szintaxis fogalma. Szöveges és grafikus nyelvek konkrét szintaxisa. Modellek szemantikája. 
10. Modellek feldolgozása, feldolgozási módszerek csoportosítása. Modelltranszformációk.  
11. Modellek transzformációja, gráftranszformációk. 
12. Modell-alapú fejlesztések. A kiterjeszthetőség támogatása: generatív és generikus programozás sajátosságai, Termékcsaládok támogatása: feature modeling. Multiplatform fejlesztések: MDA. Modell szimuláció 
13. Kitekintés: modellezés/DSL fejlesztés a nagyvilágban/aktuális kihívások  
 A gyakorlatok/laborok részletes tematikája 
1. Szakterületi nyelvek és modellvezérelt fejlesztés a gyakorlatban.  
2. Fordítók működése a gyakorlatban: a nyelvtani szabályok. Compiler as a service, Roslyn. A projekciós editorok világa: MPS. 
3. Hogyan fejlesszünk szöveges nyelvet? Fordító készítés ANTLR alapokon. 
4. Szöveges nyelvek szerkesztőkörnyezete, fordítóprogram Xtext alapokon. 
5. Metamodellezés a gyakorlatban EMF segítségével. 
6. Modellfeldolgozása, gráftranszformáció a gyakorlatban. 
7. Tartalék / konzultáció.