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ó    

    Szoftvertervezés

    A tantárgy angol neve: Software Design

    Adatlap utolsó módosítása: 2023. január 12.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Villamosmérnöki MSc Szak

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIMA20   3/0/0/v 5  
    A tantárgy tanszéki weboldala https://www.iit.bme.hu/targyak/BMEVIIIMA15
    4. A tantárgy előadója

    dr. Benyó Balázs egyetemi tanár - Irányítástechnika és Informatika Tanszék

    dr. Szlávecz Ákos egyetemi docens - Irányítástechnika és Informatika Tanszék

    5. A tantárgy az alábbi témakörök ismeretére épít Objektum-orientált programozás, UML modellezés
    6. Előtanulmányi rend
    Kötelező:
    NEM
    (TárgyEredmény( "BMEVIIIMA15", "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVIIIMA15", "FELVETEL", AktualisFelev()) > 0)

    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:
    Objektum-orientált programozás alapjai (BMEVIIIM110)

    NEM ( TárgyEredmény( "BMEVIIIM110" , "jegy" , _ ) >= 2 

    VAGY 

    TárgyEredmény("BMEVIIIM110", "FELVETEL", AktualisFelev()) > 0)
    7. A tantárgy célkitűzése A tárgy célja a modern szoftvertervezés elméleti és gyakorlati alapjainak ismertetése, a szoftver rendszerek fejlesztése során alkalmazott legfontosabb elvek és módszerek, valamint azok gyakorlatban történő alkalmazásának bemutatása. A hallgatók közvetlenül alkalmazható tudást szereznek az objektum-orientált szoftvertervezés gyakorlatából, megismerhetik a szoftvertervezési minták alkalmazását. Képesek lesznek átlátni a szoftvertervezés és fejlesztés folyamatát, a szoftverek létrehozása során alkalmazott különböző típusú követelményeket, valamint az azokat kielégítő szoftver rendszer megvalósításának folyamatát.
    8. A tantárgy részletes tematikája
    1. A szoftver rendszerek létrehozásának folyamata. A software engineering fogalmának meghatározása. Alapfogalmak definíciója: szoftver, szoftverfejlesztési módszertan, életciklus modell. A szoftverfejlesztési módszertanok és szoftverfejlesztési környezetek fejlődésének bemutatása. A szoftver életciklus modelljeinek bemutatása és azok összehasonlítása: vízesés modell, V modell, iteratív-inkrementális fejlesztés, spirál modell. Modell vezérelt fejlesztés jellemzői.
    2. Modern szoftverfejlesztési módszertanok jellemzői, agilis fejlesztési módszertanok meghatározása. Néhány elterjedt agilis tervezés módszertan és módszer bemutatása: SCRUM, Extreme Programming, Test First Development, Test Driven Development.  
    3. SCRUM keretrendszer: A keretrendszer mint módszertan bemutatása, az agile szemléletmód és annak megvalósítása a fejlesztés során. A Product Backlog és annak használata a fejlesztés során. A Scrum Folyamat és a Scrum Csapat bemutatása. Az egyes szerepkörök ismertetése: Scrum Master szerep, Product Owner szerep, Fejlesztő (Developer) szerep.
    4. SCRUM keretrendszer: A Scrum folyamat végrehajtása a gyakorlatban, ceremóniák és fogalmak. A Product Backlog kezelésének részletei, különböző típusú Backlog Item-ek definiálása, azok leírásának kezelése a fejlesztés során. User Story fogalma és használata. A ráfordítás becslése és előrejelzése a Scrum folyamat végrehajtása során.
    5. Objektum orientált szoftver fejlesztés meghatározása. Objektum orientált megközelítés, ill. szoftver fejlesztési elvek alkalmazása az elemzés, a tervezés és a megvalósítás során: legfontosabb alapelvek és módszerek ismertetése. Unified Process (UP) fejlesztési módszertan bemutatása.  A UP fázisai, diszciplínák vagy munkafolyamatok, a UP során létrejövő szoftverfejlesztési termékek. A sikeres fejlesztés kockázatainak kezelése. Unified Modelling Language (UML) bemutatása.
    6. A Unified Process Előkészítés (Inception) fázisa. Jellemző termékek tartalmának meghatározása: Vízió, Use Case modell,  Kiegészítő követelmények leírása (Supplementary Specification), Glossary. A funkcionális és nem funkcionális követelmények meghatározásának módszerei. A FURPS+ modell a követelmények meghatározására.  
    7. A Use Case modellezés meghatározása. A Use Case-ek és Aktorok definiálása és azok leírása. A Use Case diagramok felépítése és azok strukturálása. A System Sequence Diagram (SSD) szintaktikája és elkészítése. Az SSD viszonya más fejlesztési termékekkel. Gyakorlati példa ismertetése.
    8. Az Aktivitás diagram és annak használata a Use Case modellezés során. Az Aktivitás diagram és a Use Case leírás viszonya. Gyakorlati példa ismertetése.
    9. Az UML osztály diagram. A Domain modell felépítése, értelmezése és létrehozásának módszerei. Gyakorlati példa ismertetése.
    10. A Unified Process Kidolgozás (Elaboration) fázisa. Felelősségek meghatározásának és kiosztásának módszerei. Gyakorlati példa ismertetése.
    11. Az UML interakciós diagramjainak (szekvencia és kommunikációs, ill. együttműködési diagramok) szintaktikája, azok alkalmazása a tervezés során. A Unified Process Design Modell elemei és azok létrehozásának módszerei. Gyakorlati példa ismertetése.
    12. A szoftverfejlesztés során alkalmazott szoftver tervezési minták fogalma, típusai, alkalmazásuk. Tervezési minták a szoftver felelősségek meghatározásához: Genenal Responsibility Assignment Software Patterns (GRASP). Gyakorlati példák ismertetése.
    13. A Unified Process Megvalósítás (Construction) és Átadás (Transition) fázisai. Modellek és a szoftver kód viszonya, kódgenerálás módszerei és lehetőségei. UML modellek és alkalmazásuk a Megvalósítás és Átadás fázisaiban. A szoftver rendszerek verifikációja és validációja: a feladatok meghatározása, helyük a fejlesztési folyamatában, jellemző típusai. A szoftver verifikáció és validáció során felhasznált legfontosabb módszerek.  
    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás. 
    10. Követelmények

    A szorgalmi időszakban egy komplex csoportmunkában készített otthoni házi feladat elkészítése. A félévközi jegy megszerzésének feltétele a házi feladat elfogadása.

    A vizsgaidőszakban írásbeli vizsgát tesznek a hallgatók. A tárgy teljesítéséhez legalább elégséges vizsgazárthelyi szükséges. Az évvégi jegyet a vizsgazárthelyi (60%) és a házi feladat (40%) eredménye alapján kapja a hallgató. 

    11. Pótlási lehetőségek A házi feladat a pótlási hét kijelölt napjáig pótolható. 
    12. Konzultációs lehetőségek A tárgyhoz igény szerint tartunk konzultációt. 
    13. Jegyzet, tankönyv, felhasználható irodalom Larman, Craig. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd edition, 2012. 

    Jeff Sutherland, Ken Schwaber:The Scrum Guide - The Definitive Guide to Scrum: The Rules of the Game, 2020. 

    Satzinger, John W., Robert Jackson, and Stephen D. Burd. Systems analysis and design in a changing world. Cengage Learning, 2011. 

    Mike Cohn: Agile Estimating and Planning, Prentice Hall, 2005. 

    Sommerville, Ian: Software Engineering. International computer science series, 2004. 

    Sommerville, Ian: Szoftverrendszerek fejlesztése, Software Engineering, 6th edition, PANEM Könyvkiadó, Budapest, 2002. 

    Pressman, Roger S.: Software engineering: a practitioner's approach. McGraw-Hill, 2001. 

    Rumbaugh, James, Ivar Jacobson, and Grady Booch. Unified Modeling Language Reference Manual, The. Pearson Higher Education, 2004. 

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra42
    Félévközi készülés órákra 14
    Felkészülés zárthelyire 44
    Házi feladat elkészítése 50
    Kijelölt írásos tananyag elsajátítása -
    Vizsgafelkészülés -
    Összesen 150
    15. A tantárgy tematikáját kidolgozta

    dr. Benyó Balázs egyetemi tanár - Irányítástechnika és Informatika Tanszék