Modellalapú szoftvertervezés záróvizsga

Tudnivalók a záróvizsgáról

A vizsga menete

A záróvizsga nagyon hasonló a tárgy vizsgájához, annál annyival könnyebb, hogy itt csak kifejtős kérdésekre kell válaszolni (nincs tehát "gyakorlatorientált" feladat). A vizsgázó a tételsorban kifejtett témakörökből kap kérdéseket, melyekre rövid felkészülés (vázlatírás) után szóban kell válaszolni.

Aktuális tételsor (2017-es és későbbi kurzus hallgatóinak)

  1. Metamodeling levels and instantiation, well-formedness constraints, derived features.
  2. Motivations for domain-specific languages. Abstract syntax, forms of concrete syntax, views.
  3. Applications of model queries. Model queries with graph patterns (e.g. VQL): core ideas and language elements
  4. Applications of model transformations (M2T and M2M), model transformation chains. MDA: CIM vs PIM vs PSM, role and benefit of PIM-PSM mappings
  5. Challenges and solutions in code generation (M2T), model-code synchronization.
  6. Concrete syntax and IDE features. Anatomy of a model editor: parser-based editing vs. projectional editing; editing services; layout/formatting and other notational aspects.
  7. Challenges of model persistence: identifiers and cross-references; roundtrip properties. Grammar-based parsing of textual concrete syntaxes.
  8. Graph transformation rules: structure, core semantics, causal dependence vs. conflicts
  9. Forms of incrementality and reactivity in model queries and transformations.
  10. Design space exploration: core idea, specification using rules and goals, applications
  11. Model management: challenges in differencing/merging, offline vs. online collaborative modelling, megamodels. back-annotation and traceability of transformations.
  12. Models and transformations in Critical Systems, V/Y Development processes

Archív tételsor (2016-os kurzus hallgatóinak)

  1. Metamodeling levels and instantiation, well-formedness constraints, derived features.
  2. Motivations for domain-specific languages. Abstract syntax, forms of concrete syntax, views.
  3. Dynamic (behavioural) modelling languages (examples: state-based, dataflow-based), operational vs. denotational semantics
  4. Structural modelling, key concepts of component based design (Components, Ports, Interface, Connectors)
  5. Applications of model queries. Model queries with graph patterns (e.g. VQL): core ideas and language elements
  6. Applications of model transformations (M2T and M2M), model transformation chains. MDA: CIM vs PIM vs PSM, role and benefit of PIM-PSM mappings
  7. Challenges and solutions in code generation (M2T), model-code synchronization.
  8. Graph transformation rules: structure, core semantics, causal dependence vs. conflicts
  9. Forms of incrementality and reactivity in model queries and transformations.
  10. Design space exploration: core idea, specification using rules and goals, applications
  11. Model management: challenges in differencing/merging, offline vs. online collaborative modelling, megamodels. back-annotation and traceability of transformations.
  12. Models and transformations in Critical Systems, V/Y Development processes

Archív tételsor (2015-ös és régebbi kurzusok hallgatóinak)

A felkészülést az alábbi tételsor segíti. Az összeállítás során törekedtünk arra, hogy a lista alapvetően a tárgy törzsanyagát fedje le, és olyan témákat ne érintsen, melyek nem szerepeltek egy-egy kurzus anyagában. Ezzel együtt természetesen előfordulhat, hogy egy-egy téma eltérő hangsúllyal szerepelt az egyes félévekben, erre mindig tekintettel leszünk a vizsgáztatáskor (a lenti listában az egyes évek közötti eltéréseket a tételcsoport utáni évszám jelzi). 

UML usecase modellezés

  1. Mik azok a használati esetek (use case, UC)? Hogyan épül fel egy használati eset leírása? Milyen kapcsolatban lehetnek az egyes aktorok, UC-ek? Hogyan fejthető ki részletesebben egy UC? Hogyan követhetők nyomon az egyes UC-ek (avagy mi a hatásuk) a tervezés későbbi fázisaiban?

Lekérdezések, validáció: UML Object Constraint Language (2012-ig)

  1. Mi az OCL célja? Jellegzetesen hol (milyen diagramokban) használunk OCL kényszereket UML modellekben? OCL-ben hogyan megy a navigáció és a halmazelméleti műveletek végrehajtása?
  2. Hogyan értékelhetők ki futási időben az egyes OCL kényszerek (által előírt validációs szabályok/logika) egy mai, többrétegű (multi-tier) webalkalmazásban (hogyan implementáljuk, mikor ellenőrizzünk, melyek a nehezen ellenőrizhető - problematikus - kényszerek)? Mik az OCL (mint specifikációs technika) alkalmazásának korlátai?

Lekérdezések, validáció: EMF-IncQuery és Eclipse OCL (2013-tól)

  1. Ismertesse az EMF-IncQuery rendszer lekérdezőnyelvét! Hogyan használható az EMF-IncQuery modellalapú fejlesztőeszközökben? Milyen funkciókat támogathat? Mondjon pár példát hasonló technológiákra! Miben hasonlítanak és különböznek? 
  2. Mi az OCL célja? Jellegzetesen hol (milyen UML diagrammokban) használunk OCL kényszereket? Hogyan kapcsolható az OCL EMF modellekhez? OCL kifejezésekben hogyan kell megfogalmazni a navigációt és a halmazelméleti műveletek végrehajtását? 
  3. Hogyan használható az EMF-IncQuery, illetve Eclipse OCL technológia domain-specifikus modellek validációjára? Melyek az egyes technológiákban nehezen megfogalmazható és drágán kiértékelhető szabályok? 

Architekturális modellezés: UML szekvencia diagramok, állapottérképek (2012-ig)

  1. A tervezés milyen fázisaiban készítünk szekvencia diagramokat, és mely tervezési fázisban mire használhatjuk azokat?
  2. UML szekvencia diagramok segítségével mutasd meg, hogy hol végezhetünk (adat)validációt egy többrétegű (multi-tier) webes architektúrában. Melyek az egyes validációs pontok alkalmazásának előnyei, hátrányai? Hogyan használhatók fel az egyes UML diagramok egy modern webes keretrendszer alapú implementáció során az adatvalidáció funkció megtervezésére?
  3. Mik azok a protokoll statechartok és miben különböznek a hagyományos állapottérképektől? Milyen módon valósítható meg egy modern webes rendszerben az elosztott komponensek közötti kommunikáció?

Architekturális modellezés: AADL, AUTOSAR (2013-tól)

  1. Miért van szükség architektúra leíró nyelvekre? Soroljon fel néhány példát! Milyen módszerrel tervezhetjük meg a rendszer architektúráját az egyes komponensek megvalósítása nélkül? 
  2. Mi az AADL? Milyen szakterületeken használható? Ismertesse az AADL alapvető tulajdonságait! Milyen módon csoportosíthatók az AADL nyelvi elemei? Soroljon fel néhány nyelvi elemet? Hogyan kapcsolódik az AADL az UML-hez? 
  3. Mi az AUTOSAR? Milyen szakterületeken használható? Ismertesse az AUTOSAR alapvető tulajdonságait! Ismertesse röviden az AUTOSAR által javasolt tervezési folyamatot! Mit jelent egy komponens az AUTOSAR-ban és hogyan kommunikálnak a komponensek? 
  4. Mi az EAST-ADL? Miben különbözik más architektúra leíró nyelvektől (AADL, AUTOSAR, UML, SysML)? Milyen szinteket definiál az EAST-ADL?

Domain-specifikus modellezési nyelvek

  1. Mi szükséges egy modellezési nyelv definiálásához? Mit értünk absztrakt szintaxis alatt? Mi a konkrét szintaxis? Miért van rá szükség? Mit értünk jólformáltsági kényszer alatt? Mik a legtipikusabb (sok nyelvben előforduló) kényszerek? Hogyan lehet egy nem tipikus (nyelvspecifikus) kénszert kifejezni (példával)? Értelmezhető-e példányosítási ill. finomítási viszony éltípusok (asszociációk, relációk) között? Mi következik ebből a végpontokra nézve?
  2. Mik az absztrakt szintaxis és konkrét jelölésrendszer közötti viszony multiplicitása? Miért? Mik az absztrakt modell és egy rögzített jelölésrendszer szerinti konkrét megjelenése közötti viszony multiplicitása? Miért? Milyen kétféle módon adható meg egy viselkedésmodellezési nyelv dinamikus szemantikája? Melyik hogy működik?
  3. Mutassa be (szabadon választva) a MOF vagy az EMF modellezés metaszintjeit! Illusztrálja egy egyszerű Jedi-adatbázis (név, mester-padawan viszony) példán keresztül! Mit nevezünk többszintű (multi-level) metamodellezésnek? Mire való, mi az előnye? Milyen formalizmust ismer, ami képes erre?

Parser (elemző), AST, DOM

  1. Hogyan épül fel az Absztrakt Szintaxis Fa? Mi a különbség az AST és a DOM között? Mire használható az AST és a DOM a szoftverfejlesztés során? 
  2. Hogyan változott a fordítók szerepe a modern fejlesztési környezetekben és milyen új funkcionalitást nyújtanak? Miért van szükség a prediktív elemzőkre? Ismertesse röviden a prediktív elemzők működését!

Eclipse Modeling Framework

  1. Ismertesse a legalapvetőbb Ecore struktúrákat, azaz az Ecore metamodelljét! Írjon egy egyszerű metamodellt egy személygépjárműhöz. Ismertesse az EMF fejlesztési workflowt, kitérve, hogy egyes pontokabn milyen elemek jönnek létre (file-ok, modellek, forrás kód, stb.) Milyen különböző módokon lehet ecore modellt létrehozni? Ismertesse a genmodelt, mire használják és milyen jellegű attribútumokat lehet vele beállítani? Milyen projektek generálhatóak genmodelból és ezek mire szolgálnak?
  2. Ismertesse a generált EMF.model-t. Térjen ki a generált Java kódban alkalmazott modelltárolási megoldásokra. Egy egyszerű példán keresztül ismertesse a generált Java osztályok és Interfészek kapcsolatát. Mire szolgálnak a különböző generált EFactory-k? Milyen módon lehet reflektiven modelleket módosítani és lekérdezni? EMF esetén mi tekinthető absztrakt szintaxisnak és mi konkrétnak?

ORM és JPA (2013-tól)

  1. Mi az ORM célja, bemenete, kimenete? Ismertesse röviden az ORM folyamatát! Milyen változatok vannak az öröklődés leképezésére ORM esetén? Mely öröklődés leképezési módokat támogatja a JPA? Milyen módon lehet leképezni a különböző multiplicitású kapcsolatokat ORM segítségével? 
  2. Mi a JPA? Milyen feladatai vannak egy JPA szolgáltatónak (provider)? Ismertesse a JPA alkalmazásának módját! Mutassa be és hasonlítsa össze a JPA betöltési stratégiákat! Hogyan lehet JPA lekérdezéseket definiálni? Milyen módon lehet konkurenciát kezelni JPA-ban? Milyen felelőssége van az Entity Manager-nek? Ismertesse az entitások életciklusát! 

Kódgenerálás

  1. Ismertesse a 3 legelterjedtebb kódgenerálási megközelítést. Mik az erősségeik és gyengeségeik? Mi az AST? Miért fontos a kódgenerálás körében és milyen előnyöket/hátrányokat hoz be a használata. Mik a generátor modell használatának előnyei és hátrányai?
  2. Ismertessen legalább 3, a kódgenerálás körében ismert problémát és adjon rájuk megoldási ötleteket. Milyen szabályok alapján származtathatók egy PSM szintű osztálydiagramból egy modern webalkalmazás interfészei és implementációs osztályai? Milyen funkcionalitás támogatásáig lehet eljutni kódgenerálásban (pl. EMF)?
  3. Definiálja a refactoring és a reverse engineering fogalmát! A házi feladat fejlesztése során milyen refactoring lépésekkel találkozhatott?

Modelltranszformációk, gráftranszformációk

  1. Ismertesse azon területeket, ahol a modelltranszformáció jól hasznosítható! Adjon példát egy konkrét transzformációs nyelvre! Rajzolja fel és ismetesse egy általános modelltranszformációs keretrendszer felépítését! Sorolja fel az ismert modelltranszformációs megközelítéseket! Miben különböznek és miben hasonlítanak?
  2. Ismertesse a gráftranszformáció alapjait! Írjon fel egy egyszerű szabályt és mutassa be, hogyan alkalmazható egy modellen!Ismertesse a gráftranszformációs formalizmus kiterjesztésének lehetőségeit! Ezek közül adjon példát legalább egyre. Ismertesse a gráftranszformációs rendszereket (GTS)! Milyen rendszereket lehet ezzel a módszerrel leírni?
  3. Ismertesse a három legelterjedtebb gráfmintaillesztési (graph pattern matching) stratégiát! Miben különböznek és miben hasonlítanak? Hogyan használhatóak a modell-lekérdezések modellalapú fejlesztőeszközökben? Milyen gyakori funkciók támogatására használható? Mondjon pár példát modell-lekérdezés-kiértékelő technológiákra! Miben hasonlítanak és különböznek?