Szoftvertechnológia

VIMIAB04  |  Mérnökinformatikus BSc  |  Félév: 3  |  Kredit: 5

A tantárgy célkitűzése

A tantárgy szoftver rendszerek tervezésének, fejlesztésének, karbantartásának tanítását tűzi ki célul, bemutatva a szoftver, mint termék előállításához szükséges mérnöki, támogató és menedzsment tevékenységeket, ezek néhány alapvető technikáját és módszerét.

A tantárgy fő célja, hogy a hallgatók átfogó képpel rendelkezzenek a teljes szoftverfejlesztési folyamatról, beleértve a fejlesztési-, projektmenedzsment- és támogató folyamatokat.  Tudást szereznek az alapvető életciklus modellekről, folyamatfejlesztési modellekről és szabványokról.

A tantárgyban megismert technikákat és módszereket tovább mélyítik a hallgatók a következő félévben a Szoftver projekt laboratórium c. tárgy (VIIIAB11) keretében projektszerű keretekben.

A tantárgy sikeres teljesítése után a hallgató képes lesz

  • (K2) elmagyarázni a szoftverfejlesztés tipikus lépéseit és módszertanait,
  • (K3) verziókezelő és szoftverfejlesztést támogató eszközöket alapvető szinten használni,
  • (K3) alapvető teszteket tervezni követelmények és kód struktúra alapján,
  • (K3) egyszerűbb struktúra és viselkedési UML modelleket készíteni.
  • A tárgy oktatói

    Micskei Zoltán
    Micskei Zoltán

    habilitált docens

    tárgyfelelős

    A tantárgy részletes tematikája

    1. Bevezetés. A szoftverről és a szoftverfejlesztésről. Különbözik-e a szoftverfejlesztés más mérnöki területektől? Miben több a szoftvertechnológia, mint a programozás? Példák komplex szoftverekre és szoftverprojektekre. Mi kell egy sikeres szoftverfejlesztéshez?

    Szoftverfejlesztési gyakorlatok

    2. Verziókezelés alapelvek. Központosított és elosztott verziókezelés. Tipikus munkafolyamatok és minták (GitHub Flow, Mainline...).

    3. Követelmények kezelése: A követelmények fontossága. Követelmények felmérése, elemzése, priorizálása. Követelmények típusai: funkcionális és nemfunkcionális követelmények. Kétirányú követhetőség. Követelmények változásának kezelése.
    4. Tervezés és architektúra: Tervezési alapelvek (absztrakció, modularizáció). Szoftver architektúra elemei. Tervezési minták (design patterns). Tervek dokumentálása.
    5. Forráskód kezelése: jó forráskód tulajdonságai. Kódolási ajánlások és szabványok alkalmazása. Kód felülvizsgálat (code review). Statikus analízis eszközök használata.
    6. Tesztelés I: tesztelési alapfogalmak és célok. Tesztelés folyamata. Tesztelési szintek. Kockázatalapú tesztelés.
    7. Tesztelés II: teszttervezési technikák (specifikáció és struktúra alapján).

    Szoftver modellezése és UML

    8. Szoftver modellezése: Miért modellezünk? Mit lehet modellezni? A Unified Modeling Language (UML) modellezési nyelvcsalád. Struktúra modellezése: osztálydiagram, példányok kezelése, csomagdiagram, komponensdiagram.
    9. UML viselkedés modellezése I: használati eset (use case), aktivitásdiagram, szekvenciadiagram.
    10. UML viselkedés modellezése II: állapotgép diagram, különböző nézőpontok összekapcsolása. Kitekintés.

    Szoftverfejlesztési folyamatok

    11. Szoftver életciklus lépései és termékei. Népszerű életciklus modellek (vízesés, V-modell, iteratív, inkrementális...).
    12. Hagyományos és agilis szoftverfejlesztés. Agilis és Lean alapelvek. Példák: Scrum, XP.

    Projekt- és people-menedzsment

    13. A szoftver projektek irányítási vonatkozásai. Becslés, tervezés, követés, vezérlés. Agilis projektmenedzsment technikák és eszközök.
    14. Mérés és elemzés a szoftverfejlesztésben. Folyamatok definiálása és követése.

    1.     Szoftverfejlesztési munkafolyamatok, komplex szoftverek kezelése

    2.     Verziókezelő eszköz használata (git), automatikus fordítás, folytonos integráció (GitHub)

    3.     Kód stílus ellenőrzése, kód felülvizsgálat, statikus analízis eszköz használata

    4.     Teszttervezés és implementálás, kódfedettség mérése 

    5.     UML modellező eszköz használata alapvető diagramok segítségével

    6.     UML-alapú objektumorientált tervezés gyakorlása