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