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

  • (K3) szakterület-specifikus nyelvek tervezésére,
  • (K2) nyelvtani elemzés folyamatának használatára,
  • (K2) tesztelési és teljesítménymérés technikák bemutatására.
  • A tantárgy követelményeit eredményesen teljesítő hallgató képes lesz

  • (K3) szöveges szintaxisok fejlesztésére,
  • (K3) folytonos integrációs folyamatok konfigurációjára és használatára,
  • (K3) tesztek automatikus futtatására és fedettségi metrikák mérésére,
  • (K3) teljesítménytesztek futtatására és kiértékelésére.
  • A tárgy oktatói

    Semeráth Oszkár
    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

    1. 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?
    2. 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.
    3. 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.
    4. Környezetfüggetlen nyelvtanok. Nyelvtanok fogalma, nyelvtervezés, nyelvtani elemzés.
      Gyakorlat: nyelvtervezés Xtext technológiával.
    5. 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
    6. 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.
    7. 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.
    8. 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.
    9. 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).
    10. 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).
    11. 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).
    12. 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.
    13. 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.
    14. Ipari esettanulmány, meghívott előadó.