Szoftvertervezés

A tantárgy angol neve: Software Design

Adatlap utolsó módosítása: 2014. október 31.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Villamosmérnöki szak, MSc képzés
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIM110 1 3/0/0/f 4  
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/szoftvertervez%C3%A9s
4. A tantárgy előadója Dr. Benyó Balázs egyetemi tanár - Irányítástechnika és Informatika Tanszék 
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ó.

7. A tantárgy célkitűzése A tantárgy célja a szoftverfejlesztés elméleti és gyakorlati vonatkozásainak bemutatása. A fejlesztési folyamat vizsgálatakor mindazon eljárásokat, módszereket, lépéseket, termékeket, dokumentációkat, erőforrásokat, szervezeteket és személyeket számba kell venni, amelyek a termék létrehozásához, üzembe állításához és karbantartásához szükségesek. A tervezés, fejlesztés során látni és ismerni kell a megoldási lehetőségeket – tervezési teret – és döntések sorozatát kell meghozni, amíg eljutunk a kész rendszerig. Az elméletet tekintve a hallgatók megtanulják a szoftvertechnológia alapelveit és korszerű módszereit, kitérve az elosztott és beágyazott rendszerekre is. A hallgatóság egyszerű gyakorlati fejlesztési feladatok megoldásával szerez tapasztalatokat a technológia egyes lépéseinek idő- és erőforráskorlátok közötti precíz végrehajtásában, beleértve a szabványos dokumentálást.
8. A tantárgy részletes tematikája

Bevezetés és áttekintés: Számítógépes rendszerek, a rendszer és környezete, a rendszer különböző modelljei. A rendszer komponensei, azok kapcsolatai. Megvalósítási lehetőségek, hardver és szoftver. A szoftver fejlesztés, mint kihívás. Mikor sikeres egy projekt, és melyek a sikert meghatározó tényezők. A felhasználói igények kielégítése. A szoftver technológia lényege. A szoftver és a technológia definíciója.

A szoftver életciklusa: Az életciklus fázisai, a probléma feltérképezése, megismerése, megoldás kidolgozása, az eredmény megfelelőségének ellenőrzése, vizsgálata, a termék karbantartása. A különböző életciklus modellek és azok összehasonlítása: Fázisos, vízesés, V, evolúciós, spirál, agilis módszerek, XP.

Követelmények kezelése: Követelmények összegyűjtése. Stratégia a megismerendő tényezők meghatározása. Felhasználói követelmények transzformálása rendszer illetve szoftver követelményekké. Funkcionális és nem-funkcionális követelmények. Követelmények menedzselése. A követelmények követése, változások kezelése.

Objektumorientált modellezés: Az UML jelölésrendszer használata. Use-case diagramok. Objektum-modellek. Csomagok, alrendszerek, interakciós diagram. Objektumok és felelősségek. Egységbezárás és interfészek. Szolgáltatások, a szolgáltatás szemantikája. Objektumok implementálása: osztályok. Asszociációk és multiplicitás. Öröklés, aggregáció. Többalakúság és kollekciók.

Az objektumorientált fejlesztés életciklus modellje: Use-case vezéreltség és architektúra-központúság. Iteratív és inkrementális fejlesztés. A rendszer viselkedésének modellezése use-case-zel. Include és extend függőségek. Generalizáció a use-case-eken értelmezve. Use-case-ek finomítása. Az alkalmazói tér objektumainak modellezése. Elemzési osztályok felismerése. Objektum-katalógus építése. A bonyolultság kezelése csomagokkal és alrendszerekkel.

Viselkedési modell építése: A use-case-ek megvalósítása. Szekvencia diagramok, objektumok élettörténete, üzenettípusok. Szekvencia-diagramok finomítása. Állapotgép modell. Állapotok, események, akciók. Skatulyázott és konkurens állapotok. Szekvencia-diagram konvertálása állapotgéppé. Az objektum-modell finomítása az állapotok figyelembe vételével. Az objektumok viselkedésének elemzése. Metódusok leírása aktivitás diagrammal. Sávok, konkurencia és szinkronizáció. A metódusok allokálása, propagálás, delegálás.

Objektumorientált tervezés: Általános tervezési elvek: függőség, kohézió, csatolás, Demeter törvénye. Objektum szintű tervezés. Metódusok konkurenciája. Ütemezés objektumon belül. Összefüggő attribútumok normalizálása. Rendszer szintű tervezés. Telepítés és komponensek. Perzisztencia kezelése. Rendszer szintű ütemezés. Konkurens, elosztott objektumok. Köztesrétegek lényege.

Tervezési minták: Tervezési minták célja, architektúra tisztítása, újrafelhasználhatóság, robusztusság. Fontosabb tervezési minták: Viselkedési és szerkezeti minták. Objektum létrehozásával kapcsolatos minták. Minták kombinálása. Web alkalmazások fejlesztése: Beágyazott alkalmazások (routerek, modemek) web-es felületei. A web-es alkalmazással szembeni követelmények, az alkalmazások többrétegű architektúrái. Szerver oldali szkript technikák: cgi, php, asp.net, asp, servlet, jsp

XML bevezetés: XML kialakulása, szintaktikája. XML sémák. Sémák transzformációja, gráfok újraírása, XSLT.

Servlet-alapú felületfejlesztés: Servlet alapok, J2EE Servlet API alapfogalmai, servletek életciklusa, POST és GET metódusok használata, Request és Response. Területi beállítások. Web-alapú űrlapok kialakítása, konfigurációs fájlok szerkezete, servlet kivételeinek kezelése, servlet-telepítő fájlok felépítése. Java Web alkalmazások állapotai, session-kezelés, cookie-k, Java objektumok tárolása session változókban. Adatbázis elérése servletből JDBC segítségével, JNDI alapok.

Verifikálás és validálás: Statikus verifikáció. Felülvizsgálatok, áttekintések, inspekciók. Dinamikus ellenőrzés. Tesztelés, célja, típusa, módszerei. JUnit.

Konfigurációs menedzsment: Konfigurációs elemek kiválasztása és menedzselése. Változáskezelés, programépítés és változatok menedzselése. CM eszközök: CVS, Subversion, ClearQuest, Ant

Valósidejű rendszerek fejlesztése: Tipikus időbeli követelmények. Időkezelés számítógépes rendszerekben. Méretezési elvek. Megvalósítási kérdések. Valósidejű ütemezés. Fokozott megbízhatósági követelmények. Hibatűrő architektúrák. Elosztott valósidejű rendszerek.

 


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

Heti 3 óra előadás

10. Követelmények

a. A szorgalmi időszakban:

Egy csoportmunkában készített otthoni házi feladat beadása és egy nagyzárthelyi megírása. A félévközi jegy megszerzésének feltétele a házi feladat elfogadása és legalább elégséges nagyzárthelyi. A félévközi jegy a nagyzárthelyi (60%) és házi feladat (40%) eredménye alapján kerül meghatározásra.

b. A vizsgaidőszakban: nincs.

11. Pótlási lehetőségek A nagyzárthelyi a szorgalmi időszakban és pótlási héten pótolható egy-egy alkalommal, az otthoni házi feladat a pótlási héten különeljárási díj megfizetése mellett pótolható.
13. Jegyzet, tankönyv, felhasználható irodalom

[1] Sommerville, I. – Szoftver rendszerek fejlesztése 2. bővített kiadás, Panem Kiadó, Debrecen, 2007.

[2] Sommerville, I. - Software Engineering 8th ed., Pearson Education Ltd, 2007,

[3] Kondorosi, László, Szirmay-Kalos: Objektum orientált szoftver fejlesztés, Kempelen Farkas Digitális Tankönyvtár, www.hik.hu

[4] Harald Störrle: UML 2, Panem Kiadó, Budapest, 2007

[5] Booch, G., Rumbaugh, J., Jacobson, I. – The Unified Modeling Language User Guide, Addison-Wesley, 1999.

[6] Andersson E., Greenspun P., Grumet A. – Software Engineering for Internet Applications, MIT Press, 2006.

 

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 
Felkészülés zárthelyire21
Házi feladat elkészítése57
Kijelölt írásos tananyag elsajátítása 
Vizsgafelkészülés 
Összesen120
15. A tantárgy tematikáját kidolgozta Dr. László Zoltán egyetemi adjunktus