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  
3. A tantárgyfelelős személy és tanszék Dr. Benyó Balázs István,
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