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ó    

    Szoftvertechnológia

    A tantárgy angol neve: Software Engineering

    Adatlap utolsó módosítása: 2026. július 10.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Alapképzés (BSc), mérnökinformatikus
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIMIAB04 3 3/0/1/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Micskei Zoltán Imre,
    A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAB04
    4. A tantárgy előadója

    Dr. Micskei Zoltán, egyetemi docens, MIT

    Dr. Gönczy László, egyetemi docens, MIT
    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) megoldani modellezési problémákat egyszerűbb modellezési nyelvek használatával (pl. állapotgépek vagy objektumorientált modellek).
    6. Előtanulmányi rend
    Kötelező:
    ([ HA
    EgyenCsoportTagja("INFO - 2022 - MINTATANTERV HALLGATÓI")

    AKKOR

    ( TárgyTeljesítve("BMEVIIIAA03") ÉS
    (TárgyTeljesítve_Képzésen("BMEVIIIAB00") VAGY
    TargyFelvetelekSzama("BMEVIIIAB00") >= 1 ))

    EGYÉBKÉNT

    TárgyTeljesítve("BMEVIIIAA03") ]


    ÉS

    NEM ( TárgyTeljesítve("BMEVIIIAB01") ) ÉS

    (Training.Code=("5N-A8") VAGY Training.Code=("5NAA8")) )


    VAGY EgyenCsoportTagja("Kreditpótlás_2023/24/2")

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

    Ajánlott:

    -

    Kötelező:

    A programozás alapjai 2

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

     

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

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Előadás: az előadások célja a tananyaggal kapcsolatos fogalmak, mérnöki problémák és módszerek bemutatása (tudás kompetenciaelem). A mélyebb megértést az előadáson bemutatott és közösen megoldott gyakorlati feladatok segítik (pl. kódfelülvizsgálat, tesztelés vagy UML modellezés témákban). A tananyag folyamatos elsajátítását rögzített előadásvideók és azok szöveges leirata segíti. A feladatmegoldás gyakorlását kidolgozott, részletes megoldásokat is tartalmazó példatárak segítik (képesség kompetenciaelem). Az önértékelést elektronikus formában elérhetővé tett ellenőrző kérdések támogatják.

    Számítógépes laboratórium: A bemutatott módszerek és technológiák megismerését számítógépes laborfoglalkozások segítik. Az egyes laboralkalmakra felkészülési segédletek vannak előre kiadva, a használandó szoftvereket előre ki lehet próbálni. A laborfoglalkozások során a laborvezető bemutatója után egyéni feladatmegoldás során gyakorolhatják a hallgatók a tantárgy teljesítéséhez szükséges szoftverfejlesztési és modellezési alapképességeket (képesség kompetenciaelem).

    Otthoni feladat: Az alapvető szoftverfejlesztési gyakorlatok készség szintű elsajátítását egy összetett, valós munkafolyamatokat követő otthoni feladat teszi lehetővé. A feladat végigvezet a követelmények elemzése, kódolás, tesztelés és felülvizsgálat tipikus lépésein modern, iparilag is releváns szoftverfejlesztési környezetek segítségével (képesség kompetenciaelem). Az otthoni feladat több fázisból áll, ahol egyrészt kiemelt jelentőségű a határidők betartása, másrészt a jó minőségű eredménytermékek létrehozása (attitűd kompetenciaelem). Az otthoni feladat önálló munkaszervezést és munkavégzést igényel, továbbá hangsúlyos az elkészült eredmények értékelése (autonómia és felelősség kompetenciaelem).

    10. Követelmények

    A követelmények kialakításánál fontos szempont volt a folyamatos tanulás, a hallgatói érdeklődés fenntartása és a gyors visszajelzések támogatása.

    Szorgalmi időszakban:

    • Labor:
      • A laborok elkezdéséhez szintfelmérő értékelés sikeres teljesítése szükséges.
      • A laborokon elvárt az aktív részvétel. Az aktív részvételt a laborfeladatok teljesítésének ellenőrzésével vizsgálja a laborvezető.
      • A laborfeladatok megoldása során elvégzett munka vizsgálata alapján a labort nem felelt meg, megfelelt és kiválóan megfelelt szintekre értékeli a laborvezető.
      • Az aláírás megszerzésének szükséges feltétele az összes labor teljesítése (labor szintfelmérő sikeres teljesítése és a laborfeladatok legalább megfelelt szintű teljesítése). 
    • Otthoni feladat:
      • Az otthoni feladat egy több, egymásra épülő fázisból álló, szoftverfejlesztési feladat elkészítése.
      • A feladat teljesítéséhez szükséges az összes fázis megfelelő színvonalú teljesítése (képesség).
      • A feladat elkészítése során elvárt az ütemes előrehaladás (attitűd, önállóság és felelősségvállalás).

    Vizsgaidőszakban:

    • Az írásbeli vizsga három részből áll.
    • Azon hallgatók számára, akik az első két részt külön-külön min. 50%-on teljesítik, elégséges érdemjegy kerül megajánlásra. A hallgató azonban a harmadik vizsgarész megkezdésével automatikusan nyilatkozik arról, hogy ezt a megajánlott érdemjegyet nem fogadja el, így számára a három rész összesített eredménye alapján kerül az érdemjegy meghatározásra.
    • Ha a hallgató a megajánlott elégséges osztályzatot nem fogadta el, akkor a sikeres vizsgához mindhárom rész külön-külön min. 50%-os teljesítése szükséges.

    Vizsgaérdemjegy meghatározás

    • A vizsgaeredmény a félévközi teljesítményértékelések és a vizsga eredménye alapján kapott pontok alapján számítódik.
    • A félévközi kötelező teljesítményértékelések (laborok, otthoni feladat) eredménye alapján 30%-nak megfelelő pont szerezhető a félév elején kihirdetett felosztás alapján.
    • A vizsgán elért eredmény alapján 70%-nak megfelelő pont szerezhető.
    • A félév során kiírásra kerülhetnek szorgalmi teljesítményértékelések is, amelyek eredménye a vizsgaeredményjegybe a fentieken túl beszámításra kerül.

    11. Pótlási lehetőségek
    • Labor
      • Egy hallgató legfeljebb összesen 2 laboralkalmat pótolhat vagy javíthat.
      • Minden laborhoz egy meghatározott időablakban (legfeljebb két héten belül) biztosított a pótlási és javítási lehetőség előre meghirdetett időpontokban.
    • Otthoni feladat
      • Az otthoni feladat minden fázisa beadható késedelmesen az eredeti határidő utáni legfeljebb egy hétben.
      • Az otthoni feladat jellege nem teszi lehetővé a sikeres otthoni feladat ismétlését.

    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édanyagok a tantárgy weboldalán.
    • Ian Sommerville: Szoftverrendszerek fejlesztése [Software Engineering], 2. kiadás, Panem Kiadó, 2007
    • Harald Störrle: Unified Modeling Language - UML 2, Panem, 2007
    • Robert C. Martin: Tiszta kód - Az agilis szoftverfejlesztés kézikönyve, Kiskapu Kft., 2010
    • Dorothy Graham et al.: A szoftvertesztelés alapjai, Alvicom Kft., 2010
    • Titus Winters et al.: Software Engineering at Google, O'Reilly, 2020
    • Gergely Orosz. The Software Engineer's Guidebook, Pragmatic Engineer BV, 2023
    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ákra10+12
    Felkészülés zárthelyire0
    Házi feladat elkészítése32
    Kijelölt írásos tananyag elsajátítása0
    Vizsgafelkészülés40
    Összesen150
    15. A tantárgy tematikáját kidolgozta

    Dr. Balla Katalin, docens, IIT

    Dr. Goldschmidt Balázs, docens, IIT

    Dr. Micskei Zoltán, docens, MIT

    Dr. Simon Balázs, docens, IIT
    IMSc tematika és módszer

    Egyrészt az egyes tananyagokhoz elérhetők olyan kiegészítő cikkek, amik a tantárgy anyagrészeinek matematikai, algoritmikus vagy technológiai alapozásait ismertetik meg az érdeklődő hallgatókkal.

    Másrészt bizonyos szorgalmi feladatok a tananyag mélyebb megértését vagy a kötelező tananyagban nem szereplő módszerek és technológiák megismerését kínálják fel.


    IMSc pontozás

    A tárgyban összesen 25 IMSc pont szerezhető az előre megjelölt szorgalmi feladatok teljesítésével.

    Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.