Állapotgépek eseményvezérelt szimulációja

Napjainkban összetett rendszerek fejlesztése során széles körben alkalmaznak modellvezérelt módszertant, melynek célja korszerű modellező eszközök támogassák a fejlesztési folyamatot. Ennek során egyre részletesebb rendszermodell készül, melyből automatikus transzformációk segítségével dokumentumok, konfigurációs állományok vagy akár kész forráskódot is származtathatunk. Eközben a hibák kiszűrésére a rendszermodellt folyamatosan ellenőrizzük, hogy a tervezési hibákat már a fejlesztés korai szakaszában kiszűrjük. Ezáltal kevesebb erőforrásból jobb minőségű szoftver készíthető.

Szoftverek általános célú modellezésére definiál nyelvet az UML (Unified Modeling Language) szabvány, amelyet számos eszköz támogat, mint például a nyílt forráskódú Papyrus (http://www.eclipse.org/papyrus/). Az UML nyelvben komponensek viselkedésének leírására állapotgépek nyelve (UML State Machine) áll a fejlesztőmérnök rendelkezésére, amelyben meghatározhatóak a komponens állapotai, a lehetséges események illetve az események hatására bekövetkező történések.

Természetesen az állapotgépek specifikációja is tartalmazhat hibákat, amik a fejlesztés előrehaladtával csak rendkívül költségesen javíthatóak. Ezért célszerű már a tervezés szakaszában a rendszermérnök számára kipróbálhatóvá tenni a működést. Az UML állapotgépek szimulációjával már a tervezés idejében megfigyelhetővé válik a működés, ellenőrizhető hogy egy beállított állapotban egy eseményre hogyan reagál, vagy akár automatikusan működtethetjük.

A hallgató feladata egy olyan szimulátor készítése, amivel Papyrus állapotgépek viselkedése tehető megfigyelhetővé. A szimulátor fejlesztése során a nagyméretű modellek könnyű és hatékony kezelésére célszerű IncQuery lekérdezéseket használni, illetve a szimulációs szabályokat IncQuery-EVM keretrendszerrel meghatározni.

Jelleg: 
Gyakorlati
Konzulens: 
Semeráth Oszkár
TDK lehetőség: 
Nem
Megismerhető technológiák: 
Eclipse IDE, EMF, EMF-IncQuery, Xtend, IncQuery EVM, Papyrus
Előismeretek: 
java
Állapot: 
Folyamatban