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

Ficsor Attila
doktorandusz

Semeráth Oszkár
adjunktus
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ó.
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ó.