Házi feladat (MDSD 2014)

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ó infrastruktúra: (x = csapat száma)

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.

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.

Csapatbeosztás:

  • 1. csapat: MOHOKA - konzulens: Debreceni Csaba
    • Honfi Dávid
    • Molnár Gábor
    • Kárász István
  • 2. csapat: Eclipse apocalypse - konzulens: Semeráth Oszkár
    • Unicsovics Milán György
    • Bendefy Zoltán Kálmán
    • Szokodi Ákos
  • 3. csapat: Pineapple - konzulens: Ráth István
    • Búr Márton
    • Hajdu Ákos
    • Makai József
  • 4. csapat: Raptor - konzulens: Semeráth Oszkár
    • Borbás Tamás
    • Lunk Péter
    • Zilahi Dávid
  • 5. csapat: Pagmomolde - konzulens: Semeráth Oszkár
    • Urbán Balázs
    • Réti Dávid
    • Hartwig János
  • 6. csapat: Adrenalin - konzulens: Ujhelyi Zoltán
    • Barta Ágnes
    • Szilvásy Noémi
    • Cseppentő Lajos
  • 7. csapat: NameNotFound - konzulens: Horváth Ákos
    • Pénzes Ádám
    • Klenik Attila
    • Tóth Áron
  • 8. csapat: Enthusiasm-Driven Software Developers - konzulens: Debreceni Csaba
    • Dinh Hoangthanh Attila
    • Sisak Gergely
    • Faragó Dániel
  • 9. csapat: Pozitron - konzulens: Horváth Ákos
    • Magyar Dániel
    • Lengyel Ádám
    • Dóczi Róbert

Aktuális információk

Az idei házi feladat egy adatfolyam háló modellező eszköz készítése. Az adatfolyamhálók formalizmusával állapottal rendelkező komponensekből könnyen tervezhetőek áttekinthető aszinkron, konkurens, párhuzamos rendszerek. Az adatfolyamhálókról egy leírás és pár példa található az ​alábbi linken. Összefoglalva az alábbi megvalósítandó részletekkel rendelkezik egy adatfolyam háló:

  • Adatok: (Színezett) tokenek típusainak specifikációja (PL: hőmérséklet = {hideg, meleg} , hőmérséklet = int)
  • Viselkedés: a modellezett komponensekben legyenek explicit ábrázolva az állapotok, a kezdőállapot és állapotátmenetek
  • Kommunikáció: Irányított élekkel legyen vezérelhető az adatfolyam, mely állapotátmenetnek milyen bemenet az előfeltétele, és hogy tüzeléskor milyen adatokat tesz a komponens a kimenetére.

Az elkészített modellező környezetet egy intelligens ház vezérlőrendszerének rendszermodelljével szemléltessétek. Az intelligens épület koncepciója, hogy egy számítógépes hálózat felügyeli és vezérli a ház főbb elektronikus eszközeit. Ezáltal automatikusan irányíthatóak többek között a ház biztonsági rendszerei (zárak, kamerák), tűzjelzői, világítása és szellőztetése, valamint optimális tartományban tartható a páratartalma és a hőmérséklete. Az ​alábbi Wikipedia oldal elég példát ad a különféle automatizálható tulajdonságokra és a lehetséges szenzorokra.

Az egyik legnagyobb kihívást az ilyen rendszerek megvalósításánál a személyre szabhatóság jelenti. Minden épülethez különböző automatizálási követelmény tartozik, amihez a megvalósító komponenseket több beszállítótól lehet beszerezni. Hogy hatékonyan lehessen intelligens házak vezérlését tervezni, célszerű az ilyen komplex rendszereket modellvezérelten, adatfolyamhálókkal megvalósítani.

Összefoglalva egy olyan modellező rendszer elkészítése a cél, ahol adatfolyamhálókkal intelligens ház vezérlőrendszerét lehet megtervezni. Az elkészült rendszermodelleket ellenőrizzük, hogy ezzel kiszűrjük a különböző tervezési hibákat. A helyes modellekből diagramok, és működő Java alkalmazások generálása a cél, amik a diagramokban specifikáltak szerint működnek.

Tanácsok

A feladat specifikációja szándékosan nem tér ki minden részletre (de még így is részletesebb, mint amivel sokszor a gyakorlatban találkozhatunk). A szöveg és probléma pontos értelmezése, és ennek megfelelő tervezői döntések dokumentált meghozása a ti feladatotok lesz, és ezeket a beadások során külön ellenőrizni is fogjuk! (Például érdemes kibővíteni az egyszerű adatfolyamhálókat egyéb részletekkel, valamint mérlegeljétek hogy hol érdemes manuális kódot használni generált helyett!)

A házi feladat megoldását időben el kell kezdeni! Amint egy adott technológia sorra került az előadáson vagy gyakorlaton, célszerű belekezdeni az adott részfeladat megoldásába, hogy elég idő legyen a végén a csapat munkáját összehangolni, átnézni. A beadandó modellekre külön mennyiségi megkötés nincsen (azaz, nem értelmezhető, hogy melyik diagramból hányat kell csinálni). Fontos azonban, hogy a kritikus és/vagy bonyolult esetek modelljei mindenképp készüljenek el.

Ütemezés

1. beadandó

Feladat: Modellezés

  • Követelményanalízis: Magasszintű követelmények megfogalmazása az elkészítendő rendszerrel szemben, UML Use case diagramok segítségével
  • Domain modellezés: Az adatfolyamháló magasszintű domain modelljének az elkészítése, amellyel le lehet írni az intelligens ház tervezésére alkalmas adatfolyam diagramokat.
    • EMF metamodell és a hozzá tartozó metamodell kényszerek megfogalmazása (opcionálisan OCL kényszerekként is)
    • EMF példánymodell: egy példa modell, ami egy konkrét intelligens ház működését specifikálja
  • Trac oldalon a vezetett munkanapló és egy 5-7 slide hosszú előadás az elvégzett munkáról, kiemelve benne az egyes csapattagok feladatait

Határidő: 2014. 03. 30. (7. hét vége), azaz eddig kell a Git-be felrakni mindent (a konzulensek is innen fogják letölteni)

2. beadandó

Feladat: Modell validálás + Kódgenerálás

  • Jólformáltásgi Kényszerek a domain nyelvre, IncQuery minták formájában
  • Xtend alapú kódgenerátor:
    • ami az adatfolyamháló Java alapú reprezentációját generálja ki (pl.: az állapotgépek és és összeköttetéseik), és kipróbálhatóvá, megfigyelhetővé teszi a működést.
    • ami az adatfolyamhálót GraphML formátumban képes kigenerálni. A GraphML megjelenítésére a ​yED eszközzel fog történni. Fontos megjegyezni, hogy a yED eszközben nagyon hatékony gráf elrendező algoritmusok vannak, így érdemes azokra bízni a megjelenítést.
  • Trac oldalon a vezetett munkanapló és egy 5-7 slide hosszú előadás az elvégzett munkáról, kiemelve benne az egyes csapattagok feladatait

Határidő: 2014. 04. 27. (11. hét vége)

3. (végső) beadandó

Feladat: Integrált implementáció elkészítése

  • A 'Node'-ok szétválaszhatóak legyenek külön alkalmazásokba, az alkalmazások között a kommunikáció valamilyen, az intelligens házra jellemző protokollon keresztül menjen. Példa kommunikációs protokollok (MQTT -> Eclipse Paho, esetleg JMS Java Message Services). Azaz a modellezési nyelvtől kezdve a kódgeneráláson át mindennek támogatnia kell tudnia az elosztott működést, ahol is a külön alkalmazásokra allokált nodeok közötti kommunikációt kell megoldani elosztott módon. Fontos, hogy a kommunikációs protokoll paramétereit is a modellező rendszerünk tudjuk kezelni.
    • A kiválasztott protokollt minden esetben előre egyeztessétek a konzulensetekkel!
  • Extra házi feladat: több mint egy féle kommunikációs protokoll megvalósítása
  • Automatikusan generált kód integrációja kézzel írt kóddal (glue kód)
  • véglegesítés
  • 10 perces előadásban bemutatni az elkészített rendszert

Határidő: 2014. 05. 16. (14. hét péntek)

Korábbi feladatok