Szoftvertechnológia

VIMIAB04  |  Mérnökinformatikus BSc  |  Félév: 3  |  Kredit: 5  |  Hivatalos tantárgyi adatlap

A tantárgy célkitűzése

A tantárgy szoftverrendszerek 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.
  •  

    Micskei Zoltán
    Micskei Zoltán

    habilitált docens

    tárgyfelelős

    A tárgy oktatói

    Dobos-Kovács Mihály
    Dobos-Kovács Mihály

    tudományos segédmunkatárs

    Micskei Zoltán
    Micskei Zoltán

    habilitált docens

    2 fő

    további közreműködő

    A tantárgy részletes tematikája

    Az előadások 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. 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).
    12. Hagyományos és agilis szoftverfejlesztés. Agilis és Lean alapelvek. Példák: Scrum, XP, Kanban.

    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.

     

    A gyakorlatok/laborok részletes tematikája

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

    2.     Verziókezelő eszköz használata (git): alapok, ágak, konfliktus; automatikus fordítás

    3.     GitHub Flow, Folyamatos integráció (CI), 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és: struktúra modellezése

    6.     UML modellezés: viselkedés modellezése I. (használati eset, aktivitás)

    7.     UML modellezés: viselkedés modellezése II. (állapotgép, interakció)