Kódgenerálás aszinkron elosztott állapotgépekhez a Gamma keretrendszerben

OData támogatás
Konzulens:
Molnár Vince
Méréstechnika és Információs Rendszerek Tanszék

A Gamma állapotgép-kompozíciós keretrendszer egy – a tanszéken a Hibatűrő Rendszerek Kutatócsoport által fejlesztett – eszköz, amely komponensalapú reaktív rendszerek tervezését, ellenőrzését és implementációjának előállítását teszi lehetővé. A kompozíciók komponensekből és az azok közötti kommunikációs csatornákból állnak, az egyes komponensek viselkedését pedig állapotgépek segítségével írhatjuk le.

A keretrendszer korábban csak egy programmodulban, egy szálon futó kompozíciók létrehozását támogatta, azonban a modellezési megközelítés alapján az elosztott viselkedés is megvalósítható. A szakdolgozatomban ennek egy megvalósítását készítettem el és mutatom be.

A megvalósítás során a komponensek generálásának módját kiegészítettem és átalakítottam úgy, hogy azok képesek legyenek MQTT segítségével üzeneteket küldeni egymásnak. Létrehoztam egy allokációs modellt, amely segítségével leírhatók az egyes komponensek és a definiált hosztok összerendelései, továbbá a modell képes ebből a leírásból egy-egy konfigurációs fájlt generálni minden vezérlőre. Ehhez készítettem egy allokációs nyelvet Xtext segítségével, aminek köszönhetően egy olyan szerkesztő is használható, ami képes a kulcsszavak kiemelésére és a javaslatok megjelenítésére az Eclipse fejlesztőkörnyezetben. A konfigurációs fájlok generálását egy Eclipse pluginként valósítottam meg, amely a konfigurációs fájlra jobb egérgombbal kattintással hívható elő.

A generált kód futásakor minden vezérlőn komponensenként egy olyan proxy osztály fut, amely vagy tartalmazza a komponens állapotgépét, vagy nem. Ha tartalmazza, akkor üzeneteket fogad a többi proxy osztálytól (amely nem tartalmazza az állapotgépet), amiknek egyéb komponensek vagy külső források küldenek üzenetet. Azt, hogy a proxy osztály tartalmazza-e a konkrét megvalósítást, a konfigurációs fájlok felolvasása során dönti el a rendszer.

A dolgozatban elsőként ismertetem, hogy miért fontos a modellvezérelt tervezés és hogy hogyan épülnek fel a Gamma komponensek alapját is adó állapotmodellek. Ezután ismertetem a felhasznált technológiákat és eszközöket, amiben részletesen kitérek az üzenetsor-technológiákra Java környezetben azok előnyeivel és hátrányaival. A fejezetben bemutatom az Xtext, Xtend és Yakindu eszközöket, valamint a Gamma keretrendszert is.

Ezt követően bemutatom az allokációs modell megvalósítását az Xtext nyelvtan és a konfigurációgenerátor leírásával. Előbbi esetén részletesen kitérek a nyelvtanban leírtak ellenőrzésének módjára, utóbbiban pedig a konfigurációs fájlok generálásának Java nyelvű implementációját ismertetem.

Ezután bemutatom, hogy hogyan készítettem el egy működő megvalósítást egy korábban generált Gamma kompozícióból, továbbá azt, hogy hogyan egészítettem ki a jelenlegi kódgenerátort az összegyűjtött módosításokkal. A dolgozatom végén bemutatom az eszköz használatának módját egy példaalkalmazáson keresztül, valamint ismertetem az eredményeket és a továbbfejlesztési lehetőségeket is.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.