Szoftvertechnológia

A tantárgy angol neve: Software Engineering

Adatlap utolsó módosítása: 2024. június 8.

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

(Kepzes("5N-A8") VAGY
Kepzes("5NAA8"))

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

 

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

 

A gyakorlatok/laborok részletes tematikája

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

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás és számítógépes laboratórium.
10. Követelmények Szorgalmi időszakban:
  • A laborokon való jelenlét a TVSZ szerinti mértékben kötelező.
  • A laborok elkezdéséhez szintfelmérő értékelés sikeres teljesítése szükséges. Az aláírás megszerzéséhez a labor szintfelmérők 2/3-ának sikeres teljesítése szükséges.
  • Egy darab otthoni feladat megoldása. Az aláírás megszerzésének feltétele az otthoni feladat megoldásának elfogadása.

Vizsgaidőszakban:

  • Az írásbeli vizsga két részből áll. Az elégséges vizsgához mindkét rész külön-külön min. 50%-os teljesítése szükséges.

  • Az otthoni feladat értékelése 20%-os súllyal számít bele a végső érdemjegybe.

 

11. Pótlási lehetőségek
  • A laboralkalmak nem pótolhatók, valamint nem javíthatók.
  • Az otthoni feladat beadható késedelmesen az eredeti határidő utáni 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é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
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 előadások tartalmaznak kiegészítő anyagrészeket, amik a tantárgy anyagrészeinek matematikai, algoritmikus alapozásait ismertetik meg az érdeklődő hallgatókkal.

Másrészt 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

A tárgyban összesen 25 IMSc pont szerezhető:

  • Maximum 5 pont a laborfoglalkozásokon megoldott extra feladatokra.
  • Maximum 10 pont a vizsga IMSc feladata.
  • Maximum 15 pont a házi feladat extra részéért.

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