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
Micskei Zoltán
habilitált docens
tárgyfelelős
A tárgy oktatói
Dobos-Kovács Mihály
tudományos segédmunkatárs
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ó)
BME-MIT