Modellalapú szoftverfejlesztés

A tantárgy angol neve: Model-based Software Development 

Adatlap utolsó módosítása: 2024. február 1.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIAUMA22   2/1/0/v 5  
3. A tantárgyfelelős személy és tanszék Dr. Mezei Gergely,
4. A tantárgy előadója
Dr Mezei Gergely, docens, AUT
Dr Somogyi Ferenc, tanársegéd, AUT
Dr Simon Balázs, docens, IIT
Dr Semeráth Oszkár, adjunktus, MIT

5. A tantárgy az alábbi témakörök ismeretére épít Szoftvermodellezés, objektumorientált programozás
6. Előtanulmányi rend
Kötelező:
NEM
(TárgyEredmény( "BMEVIAUMA01", "jegy" , _ ) >= 2
VAGY
TárgyEredmény("BMEVIAUMA01", "FELVETEL", AktualisFelev()) > 0
VAGY
TárgyEredmény( "BMEVIMIMA00", "jegy" , _ ) >= 2
VAGY
TárgyEredmény("BMEVIMIMA00", "FELVETEL", AktualisFelev()) > 0)

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

7. 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
8. 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ó. 

 
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás és gyakorlat
10. Követelmények

Szorgalmi időszakban:

- 5db otthon kidolgozandó házi feladat a gyakorlatokhoz kapcsolódva

- 1 nagy ZH jelenléti formában


Az aláírás megszerzésének feltétele az 5 házi feladatból legalább 3 megoldása legalább elégséges szinten, valamint a zárthelyi elfogadható (legalább elégséges szintű) megoldása. 


A vizsgára bocsátás feltétele az aláírás megléte. 

A vizsgajegybe a félévközi eredmények a következő módon számítanak bele:

- minden házi 0-2 pontot ér (max 10 pont)

- a nagy ZH-ra 0-14 pont szerezhető 


Vizsgaidőszakban:  Írásbeli vizsga

A vizsgán 48 pont érhető el, a félév közben szerzett pontszámmal együtt így 72 pont érhető el.

Ponthatárok:
- 60 ponttól jeles
- 50 ponttól jó,
- 43 ponttól közepes
- 36 ponttól elégséges
- 36 pont alatt elégtelen

11. Pótlási lehetőségek A nagy zárthelyihez a TVSZ előírásai szerint mind a szorgalmi, mind a pótlási időszakban 1-1 pótlási lehetőséget biztosítunk. A házifeladatok nem pótolhatóak.
12. Konzultációs lehetőségek Igény szerint az előadókkal egyeztetve.
13. Jegyzet, tankönyv, felhasználható irodalom
Krysztof Czarnecki, Ulrich Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000. 

Steven Kelly, Juha-Pekka Tolvanen, Domain-Specific Modeling: Enabling Full Code Generation, Wiley-IEEE Computer Society Press, 2008. 

Martin Fowler, Domain-Specific Languages, Addison-Wesley Professional, 2010 

Lengyel László, Mezei Gergely, Mészáros Tamás, Asztalos Márk, Vajk Tamás, Fehér Péter: Modellvezérelt paradigmák, Egyetemi jegyzet, VI 201-010, 2013. 
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra42
Félévközi készülés órákra28
Felkészülés zárthelyire30
Házi feladat elkészítése30
Kijelölt írásos tananyag elsajátítása
Vizsgafelkészülés20
Összesen150
15. A tantárgy tematikáját kidolgozta
Dr Mezei Gergely, docens, AUT 
Dr Somogyi Ferenc, tanársegéd, AUT 
Dr Simon Balázs, docens, IIT 
Dr Semeráth Oszkár, adjunktus, MIT