Automatizált szoftverfejlesztés
VIMIAC20 | Mérnökinformatikus BSc | Félév: 5 | Kredit: 5
A tantárgy célkitűzése
A tantárgy a szoftver nyelvek tervezési folyamatát (software language engineering), a fejlesztőkörnyezetek és szoftverfejlesztés automatizálható funkcióit mutatja be, beleértve a környezetfüggetlen nyelvtanok tervezését, nyelvtani elemzés (parsing) folyamatát, automatizált folytonos integráció (continuous integration) megvalósítását, valamint a különböző tesztelési és teljesítménymérési technikák végrehajtását és statisztikai elemzését. A tantárgy célja, hogy a hallgatók megismerjék és kipróbálják a témában elérhető korszerű technológiákat, és tapasztalatot szerezzenek a nyelvtervezés és fejlesztés automatizálása terén.
A tantárgy tanulási eredményei
A tantárgy követelményeit eredményesen teljesítő hallgató képes lesz
A tantárgy követelményeit eredményesen teljesítő hallgató képes lesz
A tárgy oktatói

Semeráth Oszkár
adjunktus
tárgyfelelős
A tantárgy részletes tematikája
Az előadások és gyakorlatok részletes tematikája
- Bevezetés: Automatizálás a szoftverfejlesztésben. Milyen termékek szerepelnek a szoftverfejlesztés különböző fázisaiban, milyen lépések vannak az egyes fázisokban, hogyan támogathatóak vagy automatizálhatóak ezek?
- Folytonos integráció és automatizálási lehetőségek. Automatikus fordítási, transzformációs lépések és tesztelés futtatása.
Gyakorlat: build automatizálás (Gradle) és folytonos integráció (GitHub Actions) használatának gyakorlása. - Nyelvtervezés (language engineering), szakterületspecifikus nyelvek. Modellezés, metamodellezés, gráf alapú modellek a gyakorlatban.
Gyakorlat: Ecore, EMF példa nyelvtan készítése. - Környezetfüggetlen nyelvtanok. Nyelvtanok fogalma, nyelvtervezés, nyelvtani elemzés.
Gyakorlat: nyelvtervezés Xtext technológiával. - Szerkesztő funkciók (Editorok), modern fejlesztőeszközök. Milyen funkciókat nyújt egy modern fejlesztőeszköz? Hogyan lehet kiegészíteni, személyre szabni ezeket?
Gyakorlat: Eclipse plugin, Language Server Protocol és CodeMirror - Kódgenerálás és modelltranszformációk. Kódgenerátorok és fordítóprogramok kapcsolata. Kódgenerálási technológiák. Gráf- és modelltranszformációk.
Gyakorlat: Kódgenerálás példa. - Szimulációs és hibakeresés (debugging). Modellek interpretálása, modell szemantikák. Megfigyelhetőség és kontrollálhatóság.
Gyakorlat: Modellek futtatása és értékek megfigyelése. - Programkód reprezentálása modellekkel. Vezérlési folyam (control flow) és adatfolyam (data flow) fogalmai.
Gyakorlat: Absztrakt szintaxisfa (AST) építése és bejárása. - Modellek és programkód ellenőrzése statikus analízis technikákkal. Mintaalapú statikus ellenőrzési technikák alkalmazása és kiegészítése.
Gyakorlat: Új szabály készítése statikus analízis eszközhöz (SonarLint). - Tesztelési technikák, fedettségi metrikák. Teszttervezési és generálási módszerek, automatizált tesztelés.
Gyakorlat: Különböző fedettségmetrikák mérése (JaCoCo). - Karbantartható és hatékony egységtesztelés (unit testing). Tesztelési minták és mit érdemes elkerülni (test smell). Izoláció megvalósítása teszt dublőrök segítségével (stub, mock).
Gyakorlat: Egységtesztek refaktorlása, izoláció megvalósítása (Mockito). - Teljesítménymérés és metrikák (szoftver komponensek). Teljesítménytesztek tervezése és futtatása, mérési adatok értékelése.
Gyakorlat: teljesítmény mutatók mérése Java Microbenchmark Harness (JMH) és VisualVM technológiákkal. - Tesztelési és mérési eredmények statisztikai elemzés. Mérési adatok vizualizálása, adatelemzése. Minőségi mutatók elemzése.
Gyakorlat: szoftvertesztelési és teljesítménymérési adatok elemzése Jupyter Notebook használatával. - Ipari esettanulmány, meghívott előadó.