Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Automatizált szoftverfejlesztés

    A tantárgy angol neve: Automated Software Engineering

    Adatlap utolsó módosítása: 2024. január 28.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Alapképzés (BSc), mérnökinformatikus szak
    Szoftverfejlesztés specializáció
    Szoftverfejlesztés ágazat

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIMIAC20 5 2/2/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Semeráth Oszkár,
    A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAC20
    4. A tantárgy előadója Dr. Semeráth Oszkár adjunktus, BME Méréstechnika és Információs Rendszerek Tanszék
    5. A tantárgy az alábbi témakörök ismeretére épít

    A tárgy felvétele előtt a hallgatónak képesnek kell lennie

    • (K2) elmagyarázni az imperatív programozási nyelvek működését,
    • (K3) elkészíteni önállóan egy összetettebb programot magas szintű specifikáció alapján,
    • (K3) struktúramodellekkel szoftvert modellezni.
    6. Előtanulmányi rend
    Kötelező:
    Szakirany("AMIN22-SZOFTFEJL/AUT", _) VAGY

    Szakirany("AMIN22-SZOFTFEJL/IIT", _) VAGY

    Szakirany("AMIN22-SZOFTFEJL/MIT", _) VAGY
    Szakirany("VIABI2022-SOFTWE", _)

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    7. 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

    Előadás

    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.

    Gyakorlat

    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.

     

    8. 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ó.

     

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás és számítógépes gyakorlat.
    10. Követelmények Szorgalmi időszakban
    A félévvégi aláírás feltétele a tárgy anyagához kapcsolódó önálló otthoni feladat megfelelő színvonalú elkészítése.

    Vizsgaidőszakban
    A hallgatók a 15 fő alatti kurzuslétszám esetén szóbeli, egyéb esetben írásbeli vizsgát tesznek.

    11. Pótlási lehetőségek Az otthoni feladat beadható késedelmesen az eredeti határidő utáni legfeljebb egy hétben.
    12. Konzultációs lehetőségek Igény szerint, az előadóval egyeztetve.
    13. Jegyzet, tankönyv, felhasználható irodalom
    • Előadásfóliák és segédletek a tantárgy weboldalán.
    • Martin Fowler, Rebecca Parsons, „Domain Specific Languages", Addison-Wesley, 2010.
    • Anneke G. Kleppe, „Software Language Engineering", Addison-Wesley, 2008.
    • Gerard Meszaros, „xUnit Test Patterns", Addison-Wesley, 2007.
    • Jez Humble, David Farley, „Continuous Delivery", Addison-Wesley, 2010.
    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra56
    Félévközi készülés órákra7+14
    Felkészülés zárthelyire0
    Házi feladat elkészítése33
    Kijelölt írásos tananyag elsajátítása0
    Vizsgafelkészülés40
    Összesen150
    15. A tantárgy tematikáját kidolgozta

    Dr. Semeráth Oszkár adjunktus, BME Méréstechnika és Információs Rendszerek Tanszék

    Dr. Micskei Zoltán egyetemi docens, BME Méréstechnika és Információs Rendszerek Tanszék
    IMSc tematika és módszer A tananyag mélyebb megértésére a házi feladathoz kapcsolódó extra részfeladatok megoldásával nyílik lehetőség. Ezek az extra részfeladatok segítenek jobban megérteni az előadáson kevésbé részletezett ismereteket, valamint elmélyedni egy kapcsolódó problémában.
    IMSc pontozás

    IMSc pontokat csak a jelest elért hallgatók szerezhetnek.

    A tárgyban összesen 25 IMSc pont szerezhető a házi feladat extra részfeladatának megoldásáért.

    Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.
    Idegen nyelvi részteljesítés követelményei Angol nyelven elkészített házi feladat és beszámoló: 2 nyelvi kredit.
    Egyéb megjegyzések A tantárgy angol neve: Automated Software Engineering.