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ó    

    Szoftverarchitektúrák

    A tantárgy angol neve: Software Architectures

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

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Mérnökinformatikus MSc, Közös tárgy
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIAUMA21   3/0/0/f 5  
    3. A tantárgyfelelős személy és tanszék Dr. Charaf Hassan,
    A tantárgy tanszéki weboldala https://www.aut.bme.hu/Course/VIAUMA06
    4. A tantárgy előadója

    Dr. Charaf Hassan, egyetemi tanár, AUT

    Dr. Lengyel László, egyetemi tanár, AUT
    5. A tantárgy az alábbi témakörök ismeretére épít A programozás alapjai 1-3, Szoftvertechnológia, Szoftvertechnikák
    6. Előtanulmányi rend
    Kötelező:
    NEM
    (TárgyEredmény( "BMEVIAUMA06", "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVIAUMA06", "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 áttekinti az alkalmazások, kutatások és fejlesztések élvonalába tartozó szoftverarchitektúrákat, tárgyalja ezen architektúrák szerepét, jelentőségét az információs rendszerek fejlesztésében. A szakma trendjeinek áttekintésére alapozva kitekintést nyújt a jövőben várhatóan megjelenő elosztott és nagy megbízhatóságú rendszerarchitektúrákra és technológiákra. A korábban megismert objektumorientált, komponensalapú és szolgáltatásalapú architektúrákat szintézis formájában foglaljuk össze. A tantárgy hangsúlyozza a szisztematikus szoftver-újrafelhasználhatóságot és a szoftverarchitektúrák területén folyó kutatási tevékenységek tükrében elemzi a lazán csatolt rendszerek kialakításának problémakörét, valamint az architekturális minták jelentőségét. Az tárgy egy fontos további célkitűzése a fentiekhez kapcsolódó naprakész ismeretek rendszerezése és átadása a hallgatóságnak. 

    A nagyvállalati (enterprise) rendszerek fejlesztési gyakorlatában a többrétegű objektumorientált platformok és a mikroszolgáltatások és felhő technológiák dominálnak. A gyakorlat azt bizonyítja, hogy ezek az eszközök és technológiák képesek hatékonyan támogatni alkalmazások fejlesztését, azonban a megfelelő architekturális ismeretek hiányában az implementáció során számos nehézség merülhet fel. A hibák és sikertelen fejlesztések törvényszerűen fakadnak abból, hogy a szoftverfejlesztők nem rendelkeznek kellően mély és széleskörű architekturális ismeretekkel. Ebben a tekintetben a tantárgy másik célkitűzése a hallgatók teljeskörű felkészítése nagyvállalati (enterprise) rendszerek professzionális fejlesztési feladatainak ellátására.
    8. A tantárgy részletes tematikája

    1.       Bevezetés

    -          Definíciók

    -          Történelmi áttekintés

    -          Architektúra alapok

    Célkitűzés: megismertetni a hallgatókkal a szoftverarchitektúrák tulajdonságait, jelentőségét és a megvalósított szoftverrendszerekre való hatását. Alapfogalmak. Tervezési és architekturális minták. Skálázhatóság, elosztottság, rendszerjellemzők.

    2.       Szoftverarchitektúra alapok

    -          Az architekt szerepe

    -          A szoftverarchitektúra célja és tervezési lépései

    -          Tipikus architektúra hibák

     

    3.       Szoftverarchitekturális minták

    -          Motiváció

    -          Minták csoportosítása: Szolgáltatáshozzáférés és konfiguráció, eseménykezelés, konkurencia, szinkronizáció

    -          Első csoport: Wrapper Facade, Component Configurator, Interceptor, Extension Interface

    Alapvető architekturális minták ismertetése és illusztrálása. Objektumorientált csomagolás (Wrapper Facade). Szolgáltatások konfigurálása (Component configurator). Szolgáltatás-keretrendszerek bővítése transzparens módon (Interceptor). Az interfészek egységes kezelése a hatékonyság érdekében (Extenstion Interface). További minták.

     

    4.       Eseménykezelési minták

    -          Reactor

    -          Proactor

    -          ACT

    -          Acceptor-Connector

    Architekturális minták ismertetése és illusztrálása. Szolgáltatáskérések szétosztása (Reactor). Aszinkron műveletek feldolgozása (Proactor). Aszinkron válaszok kezelése (Asynchronous Completion Token). Szolgáltatások létrehozásának különválasztása (Acceptor-Connector). További minták.

     

    5.       Konkurenciakezelési minták

    -          Active Object

    -          Monitor Object

    -          Half Sync/Half Async

    -          Leader-Followers

    -          Thread Specific Storage

    Architekturális minták ismertetése és illusztrálása. Konkurens objektumok (Active Object). Szálbiztos passzív objektumok (Monitor Object). Az aszinkron és szinkron szolgáltatásfeldolgozások szétválasztása (Half Sync-Half Async). Nagy teljesítőképességű többszálú szerverek (Leader/Followers). További minták.

     

    6.       Szinkronizáció minták, minták összefoglalása

    -          Scoped Locking

    -          Stragized Locking

    -          Thread-Safe Interface

    -          Double Checked Locking Optimization

    -          Összefoglaló a minták kapcsolatáról

    Architekturális minták ismertetése és illusztrálása. A kontextus lehetőségeinek felhasználása automatikus erőforrás-kezelésre (Scoped Locking). Parametrizált szinkronizálási mechanizmusok (Strategized Locking). Komponensen belüli szinkronizáció (Thread-Safe Interface). Megosztott erőforrások többszálú hozzáférése (Double-Checked Locking Optimazation).

     

    7.       Rétegezett architektúrák,

    -          Alapvető architekturális minták: MVC, Document/View, Rétegelés

    -          Tervezési szemlélet követelményei

    -          A szoftverrétegek tervezési kérdései

    A rétegezés szerepe, a réteghatárok definiálása. Többrétegű architektúrák. Szakterület logika (domain logic) kategorizálása. Webes megjelenítés. Relációs adatbázisok kezelése. Konkurenciakezelés. Elosztási stratégiák. Teljesítmény és egyéb jellemzők.

     

    8.       Esettanulmány

    Az esettanulmány célja, hogy szemléltető példán keresztül illusztráljuk a minták használatát és az előzőekben ismertetett témakörök felhasználása egy konkrét rendszerben. Igyekszünk meghívott ipari szakembert hívni minden esettanulmány alkalomra.

     

    9.       Felhő architektúrák

    Architekturális kihívások a felhő alapú fejlesztések esetén, minőségi kritériumok, A felhő alapú fejlesztés specifikus, gyakran előforduló tervezési minták ismertetése pl. Backends for Frontends, Circuit Breaker, Static Content Hosting, stb.

     

    10.   Mikroszolgáltatások architektúra

    A mikroszolgáltatások alapú fejlesztések architekturális kihívásai. A használatához kapcsolódó előnyök és következmények, valamint a teljesítmény, a megbízhatóság és rendelkezésre állási kérdések.

     

    11.   Esettanulmány

    A felhő alapú fejlesztést és a mikroszolgáltatásokat szemléltető példa tárgyalása.

     

    12.   Az architektúra dokumentálási kérdései

    -          Szoftver dokumentáció alapkérdései

    -          Célok, szereplők, feladatok

    -          Szoftver architektúrák dokumentálása

     

    13.   Architekturális módszertanok

    -          Top 4 Enterprise Architecture methodologies (mindig az aktuális módszerek) pl:

    -          Zachman Framework

    -          TOGAF

    -          Federal Enterprise Architecture

    -          Gartner Methodology

     

    14.   Szoftver rendszerek teljesítmény és performancia tuningolási kérdései

    -          Teljesítmény értékelési szempontok

    -          Teljesítmény modellek

    -          Tuningolási lehetőségek

     

    15.   Integrációs megoldások

    Integrációs megoldások ismertetése és illusztrálása. Rendszerintegrációs típusok. Üzenetalapú rendszerek. Rendszermenedzsment kérdések. Integrációs minták. Egyéb integrációs minták.

     

    16.   Esettanulmány

    Módszertanok, teljesítmény tuningolási kérdések, Integrációs megoldások illusztrálása példán keresztül.

     

    17.   Elosztott rendszerek architekturális kérdései

    Elosztott rendszerek elméleti alapjai, elosztott informatikai rendszerek tervezése és fejlesztése, elosztott rendszerek felépítéséhez szükséges alapszolgáltatások, Komponens és szolgáltatás alapú fejlesztés architekturális kérdései.

     

    18.   Tipikus elosztott rendszerek architektúrák, Middleware szolgáltatások

    Middleware szolgáltatások, gyakran előforduló Elosztott architektúrák összehasonlítása alkalmazási területeik. Rugalmas IT architektúrák.

     

    19.   Elosztott adatkezelés

    Elosztott adatfeldolgozás előnyei, felhasználási módja, az átlátszóság szerepe az elosztott adatfeldolgozásban.

     

    20.   Autonóm Informatikai rendszerek

    Autonom Computing Vision ismertetése, Az autonómia attribútumai, Intelligens hurok definíciója és szerepe az autonóm rendszerekben. Az előadás végén összegzésre kerülnek a félév során tanultak.

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

    -          Előadás 

    -          Önálló munka (házi feladat megoldása)

    Kijelölt írásos anyag elsajátítása 
    10. Követelmények

    1 db nagy zárthelyi 

    2 db kis zárthelyi

    1 db házi feladat 

     

    A tárgy teljesítésének feltétele a nagy zárthelyi elfogadható (legalább elégséges szintű) megoldása, és a 2 kis zh közül az egyik sikeres teljesítése, valamint a házi feladat megfelelő szintű teljesítése. 

    A jegy kialakítása: ZH 40%, kis ZH-k 10%, házi feladat 50%.
    11. Pótlási lehetőségek A zárthelyihez a TVSZ előírásai szerint mind a szorgalmi, mind a pótlási időszakban 1-1 pótlási lehetőséget biztosítunk.
    12. Konzultációs lehetőségek A tárgy előadójával történt egyeztetés szerint. Ezen kívül a házi feladathoz minden héten biztosítunk konzultációs lehetőséget.
    13. Jegyzet, tankönyv, felhasználható irodalom

    1.       Patterns of Enterprise Application Architecture. Martin Fowler et al.

    2.       Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects, Wiley press, vol.1 ,2.

    3.       Addison Wesley - Enterprise Integration Patterns - Designing, Building And Deploying Messaging Solutions (Fowler) – 2003.

    4.       Jain R., The Art of Computer Systems Performance Analysis, John Wiley and Sons, 1991

    5.       Menascé D.A., Almeida V., Capacity Planning for Web Services. Metrics, Models, and Methods, Prentice Hall, 2002

    6.       Meier J.D., Vasireddy S., Babbar A., Mackman A., Improving .NET Application Performance and Scalability (Patterns & Practices), Microsoft Corporation, 2004

    7.       Virgilio A.F. Almeida: Capacity Planning for Web Services, Techniques and Methodology

    8.       A tárgy weboldalán elhelyezett írásos anyagok.

    9.       Errol Simon, Distributed information systems, McGraw-Hill.

    10.   Mary Kirtland, Designing component-based applications, Microsoft Press.

    Elektronikus jegyzet
    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ákra12
    Felkészülés zárthelyire24
    Házi feladat elkészítése54
    Kijelölt írásos tananyag elsajátítása18
    Vizsgafelkészülés0
    Összesen
    15. A tantárgy tematikáját kidolgozta

    Dr. Charaf Hassan, egyetemi tanár, AUT

    Dr. Lengyel László, egyetemi Tanár, AUT