Házi feladat (MDSD 2015)
Csapatok
A házi feladat megoldása 3 fős csapatokban történik, az értékelés a csapat munkája és az egyes csappattagok időráfordítása/teljesítménye alapján egyéni.
A feladat megoldása során használandó git repo elérhetősége: (x = csapat száma)
- web: https://git.inf.mit.bme.hu/w?p=edu/mdsd/mdsd_2015_x.git
- clone URI: https://git.inf.mit.bme.hu/r/edu/mdsd/mdsd_2015_x.git
- Leírás. A tárgyban a HTTPS-en keresztül történő elérést használjuk.
Aki nem rendelkezik még LDAP-os felhasználóval, az IB414-es teremben átveheti a felhasználónév-jelszót párosát, illetve a 2. gyakorlaton (2015.02.26).
Megjegyzés: a házi feladat megoldása során felmerülő (a segédletek alapján nem megoldható) technikai hibák megvitatására szolgál az FTSRG Q&A oldal illetve feltehetitek a kérdéseteiket Bascamp-en is.
Csapatbeosztás:
-
1. csapat: R&D
- Farkas Rebeka
- Palincza Richárd
- Stein Dániel
-
2. csapat: GoMRP
- Horváth Benedek
- Konnerth Raimund-Andreas
- Nádudvari Tamás
-
3. csapat:
- Dienes Péter
- Murányi Bence
- Tóth Viktor
-
4. csapat:
- Tóth Márton
- Borlay Dániel
- Miru György
-
5. csapat:
- Szakállas Dávid
- Gurbán András
-
6. csapat:
- Kincses Gergő
- Pollák Tamás
- Kiss Gábor
-
7. csapat:
- Sólyom Alexandra
- Nyíri András
- Gabányi Károly
-
8. csapat: ModelLings
- Bártfay György
- Kamrás Márton
- Maginecz János
Házi feladat leírás
Az idei házi feladat egy vasúti pályarendszer modellező nyelvének, mintamodelljeinek és azok analízisét támogató szimulációs eszköznek az elkészítése.
A vasúti pálya szakaszokból és váltókból áll, amelyen egyszerre több vonat is közlekedhet, különböző sebességgel. A vonatok biztonságos közlekedését a megfelelően elhelyezett jelzők helyes állása biztosítja. Ezáltal a rendszernek biztonságosan kell műkődnie, azaz a vonatok nem ütközhetnek össze és nem térhetnek le a vasúti pályáról hibás váltó állás miatt.
A házi feladatban elsőként két (egymással összefüggésben álló) szakterület-specifikus nyelveket kell készíteni, amellyel a vasúti pályarendszerek strukturális felépítése és viselkedése precízen megadható.
-
A strukturális felépítést leíró nyelv lehetővé teszi, hogy különféle pályarendszereket modellezzünk sínszakaszokkal, váltókkal, jelzőkkel, szegmensekkel és vonatokkal.
-
A viselkedési modell leírja, hogy a fenti elemek miként reagálnak az észlelt/bekövetkezett eseményekre. Például egy vonat a piros jelzéskor megáll, vagy a jelző pirosra vált, ha a szomszédos szakaszon vonat közlekedik.
A rendszer viselkedését diszkrét esemény alapú szimuláció (discrete event simulation) segítégével szeretnénk formálisan is vizsgálni (lásd http://en.wikipedia.org/wiki/Discrete_event_simulation). Ekkor a szimuláció során események generálódnak, amelyek előre meghatárózott időpontban fognak bekövetkezni. Egy adott időpillanatban megnézzük, hogy melyik esemény fog bekövetkezni legközelebb (például a vonat egy elágazáshoz ér), azt az eseményt végrehajtjuk (esetleg újabb eseményeket generálva) az aktuális időt pedig előreléptetjük.
A félév során el kell készíteni
- a vasúti pályarendszer strukturális felépítésének és viselkedésének specifikációját (metamodellekkel és jólformáltsági kényszerekkel együtt),
- egy grafikus/szöveges szakterület-specifikus modellezési nyelvet vasúti pályarendszerek és viselkedési modelljük leírására,
- a vasúti pályarendszer viselkedéskedésének szimulációs modelljét és
- egy kódgenerátort, amely a vasúti rendszermodellből és a szimulációs modellből kiindulva származtat szimulációs kódot.
1. Beadandó:
-
Domain modellezés: A vasúti pályarendszer strukturális domain modelljének és egy viselkedési domain modellnek elkészítése EMF metamodell és a hozzá tartozó jól formáltsági kényszerek formájában (EMF-IncQuery lekérdezések vagy opcionálisan OCL kényszerekként is). A domain modellre példa található ezen a linken. A viselkedési modellnek általánosnak kell lennie, a példánymodell fogja leírni a vasúti pályarendszer működését. A metamodell természetesen módosítható a beadás után is, de a módosításokat és azoknak okait vezetni kell.
-
EMF példánymodell, amely egy legalább három szegmenses (ovál) vasúti pályarendszer strukturális felépítését írja le, rajta két vonattal, két váltóval és a kapcsoló jelzőkkel. Továbbá ellenőrizendő a jólformáltsági kényszerek fennállása a példánymodellen. A viselkedési modellhez nem szükséges EMF példánymodellt készíteni, de kell hogy legyen elképzelés róla egyszerűsített diagram vagy valamilyen szöveges formátumban.
-
Szorgalmi feladat: extra modellelemek (pl. hibamodellezés, menetrend beépítése)
Határidő: 2015. 03. 22. 24:00 (6. hét vége).
2. Beadandó:
-
Grafikus vagy szöveges szakterület-specifikus nyelv készítése a vasúti pályarendszer felépítésének és viselkedésének leírására (a Sirius vagy Xtext keretrendszer segítségével).
-
Példánymodell elkészítése a grafikus/szöveges szerkesztő segítségével (a három szegmenses vasúti pályarendszer valamint a teljes viselkedésleírás)
-
Szorgalmi feladat: A grafikus / szöveges szerkesztő igényes elkészítését szorgalmi feladatként értékeljük. Szorgalmi feladat továbbá a kutatócsoport vasúti terepasztalának teljeskörű modellezése.
Határidő: 2015. 04. 26. 24:00 (11. hét vége)
3. Beadandó:
-
Diszkrét esemény alapú szimulátor elkészítése egy vasúti pályarendszerhez a DESMO-J szimulációs keretrendszer felhasználásával (kézi kódolással).
-
Xtend alapú kódgenerátor, amely a vasúti modellek strukturális és viselkedési modellje alapján elkészít (felparaméterez) egy DESMO-J alapú szimulációs keretrendszert (szimulációs modell, entitások, események származtatása).
-
A generált események kiegészítése kézi kóddal (glue code), melynek mértékéről az egyes csapatok döntenek (nem elvárás tehát a 100%-ig automatikusan generált szimulátor)
-
Szorgalmi feladat (ötlet): a szimuláció visszavetítése a modellező nyelvbe (pl. futási utak modellezése); a vonatok viselkedésének finomabb granularitású szimulációja (nem csak lépeget szegmensről szegmensre); a kutatócsoport vasúti terepasztalának teljes szimulációja
Határidő: 2015. 05. 17. 24:00 (14. hét vége)
A többletmunkával elkészített igényes házi feladatokra megajánlott jelest lehet kapni.
A házi feladatot három fős csoportokban kell elkészíteni. A csoportok (egyeztetés után) szabadon dönthetnek, hogy grafikus és/vagy szöveges nyelvet készítenek. A viselkedési leírás nyelve szintén szabadon választhatő (pl. állapotgép, szabályrendszer, adatfolyam, stb.)
Minden projektet Git verziókezelő rendszerbe kell feltölteni, a fejlesztés előrehaladását pedig Basecamp projektként kell nyomonkövetni. Beadáskor egy 5-7 slide hosszú előadást kell tartani a konzulensnek az elvégzett munkáról, kiemelve benne az egyes csapattagok feladatait.