Szoftvertervezés
A tantárgy angol neve: Software Design
Adatlap utolsó módosítása: 2014. október 31.
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ó.
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.
Heti 3 óra előadás
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.
[1] Sommerville, I. – Szoftver rendszerek fejlesztése 2. bővített kiadás, Panem Kiadó, Debrecen, 2007.
[3] Kondorosi, László, Szirmay-Kalos: Objektum orientált szoftver fejlesztés, Kempelen Farkas Digitális Tankönyvtár, www.hik.hu
[5] Booch, G., Rumbaugh, J., Jacobson, I. – The Unified Modeling Language User Guide, Addison-Wesley, 1999.