Házi feladat

Házi feladattal kapcsolatos tudnivalók

A tárgyhoz a félév első felében az ismeretek elmélyítését célzó, gyakorló jellegű fakultatív kis házi feladatok tartoznak, míg a tárgyhoz tartozó kötelezően beadandó nagy házi feladatról az alább találnak előzetes információkat.

Kis házi feladatok

A feladatok a gyakorlati anyagok végén találhatóak. 
A beadás a tanszéki hf portálon keresztül lehetséges: https://hf.mit.bme.hu/

 1.     gyakorlat HF (RDF adatbázis elemzése)                   határidő: 2017. március 1.
 2.     gyakorlat HF (RDF adatbázisok összekapcsolása)     határidő: 2017. március 8.
 3.     gyakorlat HF (Ontológiák alkalmazása)                    határidő: 2017. március 22.

Kötelező nagy házi feladat

A kötelező házi feladat a tantárgy második, ellenőrzési technikákkal kapcsolatos részéhez kapcsolódik.

Áttekintés

A megismert technikák (pl. kódanalízis, tesztelés, folytonos integráció) gyakorlása egy komplexebb, valós projekten.

  • A házi feladat teljesítése szükséges feltétele az aláírásnak. A házi feladat megoldását azonban nem pontozzuk, csak elfogadva/nem elfogadva lesz az értékelés.
  • A házi feladatot 4 fős csapatokban kell majd megoldani.
    • Csapatokat a hallgatók alkotnak.
    • Nem szükséges, hogy az összes csapattag ugyanabban a gyakorlati kurzusban legyen.
    • Elvárás, hogy minden csapattag egyenlő módon vegyen részt a feladat megoldásában.
    • Alapesetben a teljes csapat ugyanazt az értékelést kapja a házi feladatra, kivéve, ha a csapat jelzi az oktatóknak, hogy valamelyik csapattag nem vett részt megfelelően a munkában

A feladat során egy GitHub-on elérhető nyílt forráskódú projekten kell előre megadott feladatokat elvégezni. A csapat fork-olja a kiválasztott projektet, majd ezen a publikus forkon dolgozzon később. A fork kerülhet valamelyik csapattag neve alá, vagy létre lehet hozni egy, a csapatnévnek megfelelő szervezetet (organization).

Lehetséges projektek

  • Vagy az alábbi listáról lehet választani.
  • Vagy lehet saját ötletet is hozni (pl. saját hobbi-projekt, érdekes nyílt forrású projekt). A feltétel annyi, hogy publikus GitHub projektként elérhető legyen. Ebben az esetben előtte Micskei Zoltánnal emailben egyeztessék.

Elvégzendő feladatok

A feladatok két nagy csoportra bonthatóak. Az egyes feladatok mellett megadtunk eszközöket, amik segíthetnek, de természetesen lehet bármi más, kapcsolódó eszközt használni.
 
CI és statikus ellenőrzés
  • Build keretrendszer beüzemelése, ha még nincs (Maven, Gradle...)
  • CI beüzemelése, ha még nincs (Travis, AppVeyor...)
  • Statikus analízis eszköz futtatása és jelzett hibák javítása (SonarQube, FindBugs, VS Code Analyzer, Codacy, Coverity Scan...). Mivel az eszközök rengeteg hibát és figyelmeztetést találhatnak, ezért elég azok egy részét megvizsgálni és javítani.
  • Manuális kód átvizsgálás elvégzése az alkalmazás egy részére (GitHub, Gerrit...)
  • Deployment segítése (Docker, Vagrant...)
Tesztelés
  • Egységtesztek készítése/kiegészítése (xUnit...)
  • Tesztek kódlefedettségének mérése és ez alapján tesztkészlet bővítése (JaCoCo, OpenCover, Coveralls, Codecov.io...)
  • UI tesztek készítése (Selenium, Sikuli, Appium...)
  • Integrációs/rendszertesztek készítése
  • BDD tesztek készítése (Cucumber, Specflow...)
Mindkét csoportból legalább 2-2 feladat elvégzése kötelező. A csapat eldöntheti, hogy melyik feladatokat akarja elvégezni (a projekt adottságait és az egyéni érdeklődéseket figyelembe véve). Javasolt, hogy egy-egy feladaton többen is dolgozzanak. A feladat elvégzése után kötelező, hogy legalább egy másik, a feladaton nem dolgozó csapattag ellenőrizze a munkát (review).

Feladatok dokumementálása

  • Az elvégzett munka rövid dokumentációját a saját GitHub fork wiki oldalára kell írni. Minden egyes kiválasztott feladatról legyen egy-egy külön wiki lap: elvégzett munka, képernyőkép (ha releváns), eredmények és tanulságok összefoglalása.
  • Minden egyes kiválasztott feladathoz egy-egy issue-t kell felvenni, amiben nyomon lehet majd követni a feladat megoldásának alakulását. (Fork-olt projekten a Settings-nél külön be kell kapcsolni az Issue funkciót.) Az issue-ban egyeztessék a csapattagok, hogy ki mit csinál majd, és legyenek belinkelve a kapcsolódó főbb commit-ok vagy pull request-ek, és látszódjon, hogy ki ellenőrizte a végén az adott feladatot.

Értékelés

  • A házi feladatot a félév végén az utolsó gyakorlati és előadás alkalmakon (05.05., 05.08., 05.12.) be kell majd mutatni. (Ennek pontos beosztását majd a 13. héten intézzük.)
  • Az értékelés nem mennyiségi, hanem minőségi alapon történik. Nem az a lényeg, hogy 15 vagy 20 teszt készült el, hanem, hogy mit tanult a feladatból a csapat, és sikerült-e a kiválasztott projekt minőségén javítani valamit. 
  • Törekedjen mindenki arra, hogy jó minőségű munkát végezzen (szép kód, értelmes commit üzenetek, rendezett repository, áttekinthető wiki oldal, követhető issue-k...). Tehát nem csak az elkészült kód, hanem minden egyéb termék része az értékelésnek.
  • Az elvárás az, hogy minden csapattag legalább 10 órát foglalkozzon a feladattal.

Határidők

  • 2017. április 2.: csapatok jelentkezése ezen az űrlapon
  • 2017. április  20.: CI és statikus ellenőrzés feladatok elvégzése és dokumentálása
  • 2017. május 4.:  tesztelés feladatok elvégzése és dokumentálása

Kérdések

  • Technikai jellegű kérdéseket a Q2A oldalon lehet feltenni (így más is tud segíteni, és a válaszokat más is csapatok is láthatják).
  • Egyéb kérdésekkel Micskei Zoltánt keressék emailben vagy az előadásokon és gyakorlatokon.

Bemutatás

A munkát a félév végén a csapatnak be kell mutatni (az erre való jelentkezést majd egy hírben publikáljuk):
  • Ismertetni kell az elvégzett munkát, az egyes csapattagok hozzájárulását, az elért eredményeket, a kiválasztott projekt értékelését (mit tudtunk meg a végrehajtott ellenőrzési feladatok során a projekt állapotáról és minőségéről) és az elvégzett munka értékelését (mi sikerült, mit tanultatok belőle, mi hiányzik még, mivel érdemes később bővíteni...).
  • A bemutatóra nem szükséges fóliasorozatot készíteni, egy saját laptopot érdemes hozni bekonfigurált környezettel, ahol az egyes részfeladatok élőben bemutathatóak (tehát a tesztek lefuttathatóak, statikus ellenőrző eszköz eredményei megnézhetőek...).
  • A bemutató jellegében olyasmi, mintha a csapat a főnökének vagy megrendelőjének mutatná be a munkáját, tehát készüljetek fel rá adatokkal, összesítésekkel és érvekkel, hogy kellő információt tudjatok adni kérdések esetén, és meg tudjátok győzni az elvégzett munka minőségéről.
  • Alapesetben elvárt, hogy az összes csapattag megjelenjen. Ha bemutatási alkalomnak valamelyik gyakorlati alkalmat választja a csapat, és van olyan csapattag, aki nem abban a gyakorlati kurzusban van és akkor egyéb órarendi elfoglaltsága van, akkor neki nem kötelező megjelenni, de ezt is figyelembe véve a csapatnak olyan időpontot kell választani, amin legalább 2 csapattag részt vesz.
  • Egy-egy csapatra kb. 20 perc fog jutni.
  • A bemutatásra hozni kell egy kinyomtatott és minden csapattag által aláírt legfeljebb 2 oldalas dokumentumot, ami a végleges, részletes munkamegosztást tartalmazza (melyik csapattag pontosan milyen részfeladatokat végzett el, kb. mennyi időben). Figyelem, ennek konzisztensnek kell lennie a csapat GitHub tárhelyén lévő commit történettel!  A dokumentum ezen kívül tartalmazza a tárgy nevét, a csapat nevét és a csapattagok nevét, NEPTUN-kódját és GitHub azonosítóját. Használható ez a sablon.