66
Programrendszerek fejlesztése Bilicki Vilmos [email protected]

Programrendszerek fejlesztése

  • Upload
    gema

  • View
    29

  • Download
    1

Embed Size (px)

DESCRIPTION

Programrendszerek fejlesztése. Bilicki Vilmos bilickiv @ inf.u-szeged.hu. Bemutatkozás. Bilicki Vilmos Honvéd tér, 14-es szoba 6781 mellék www.inf.u-szeged.hu/~bilickiv. Követelmények. Előadás: év végi vizsga (80 pont) ZH (2009.03.26) (20 pont) Gyakorlat: Egy projekt (20 pont) - PowerPoint PPT Presentation

Citation preview

Page 1: Programrendszerek fejlesztése

Programrendszerek fejlesztése

Bilicki [email protected]

Page 2: Programrendszerek fejlesztése

Bemutatkozás Bilicki Vilmos Honvéd tér, 14-es szoba 6781 mellék www.inf.u-szeged.hu/~bilickiv

Page 3: Programrendszerek fejlesztése

Követelmények Előadás:

év végi vizsga (80 pont) ZH (2009.03.26) (20 pont)

Gyakorlat: Egy projekt (20 pont)

Mindkét esetben el kell érni az 50%-ot

Page 4: Programrendszerek fejlesztése

Források G. Alonso, H. Kuno, F. Casati and V. Machiraju,

Web Services: Concepts, Architectures and Applications, Springer, 2004.

http://www.cs.cornell.edu/courses/cs530/2004sp/lect.html

Wolfgang Emmerich: Engineering Distributed Objects

Martin L. Shooman: Reliability of computer systems and networks.

Floyd Marinescu: Advanced Patterns, Processes and Idioms

Page 5: Programrendszerek fejlesztése

A tantárgy tematikája Az Információs rendszerek architektúrája Középrétegek, ezek szolgáltatásai Üzenet alapú rendszerek Alkalmazásszerverek és szolgáltatásaik J2EE Objektum perzisztencia.

Különböző perziszetencia rendszerek bemutatása. (Hybernate, EJB2.1, EJB3.0, …)

Web Szolgáltatások Tervezési minták

Page 6: Programrendszerek fejlesztése

1. Elosztott rendszerek Mai trendek SOA Jellemzői Átteszőségek Architektúrák

Page 7: Programrendszerek fejlesztése

2. XML XSD XPath XSLT

Page 8: Programrendszerek fejlesztése

3. JDBC JDBC

Típusai Kapcsolat típusok Statement objektumok RecordSet Tranzakciók

Page 9: Programrendszerek fejlesztése

4. Hibernate Perzisztencia Object serialization API ORM Hibernate

Bevezetés Architektúra Hello world

Java File Mapping file Műveletek Konfiguráció

Interfaces Mappelés (Kollekciók,Asszociációk,Leszármazások) Lekérdezések Optimalizálás(fetching and caching) Tesztelés

Page 10: Programrendszerek fejlesztése

5. J2EE Fejlesztési modell Szerepkörök Java Enterprise Edition

EJB specifikáció (3.0) EJB komponensek

Injection Scope Transaction EJB

Session Bean Stateless Statefull

Entity Bean (Miért nem) BMP CMP

Message Driven Bean Durable Non Durable

Page 11: Programrendszerek fejlesztése

6. Alkalmazás szerverek Az alkalmazászerverek szerepe Jboss

Felépítése Elemei

Ear Klaszterezés

Page 12: Programrendszerek fejlesztése

7. WebBean JSF alapok JSF vs. EJB Mi hiányzik? Jboss Seam

Page 13: Programrendszerek fejlesztése

8. Üzleti folyamatok Megközelítésmódok Technológiák JBPM Pageflow

Page 14: Programrendszerek fejlesztése

9. SOA Koncepció, trendek Elemek Szerepkörök, technológiák

Page 15: Programrendszerek fejlesztése

10. Web Szolgáltatások SOAP WSDL WS-* profilok

Page 16: Programrendszerek fejlesztése

11. Fontosabb WS profilok WS-Addressing WS-Security WS-Transactions

Page 17: Programrendszerek fejlesztése

12. Magas szintű üzleti folyamatok BPEL

Absztrakt modell Futtatható modell

Elemei Tervezési minták

Page 18: Programrendszerek fejlesztése

13. SOA- rendszer Biztonság: SSO Szolgáltatás fellelés: UDDI Szolgáltatás leírás: Ontológiák

Page 19: Programrendszerek fejlesztése

C@R

Page 20: Programrendszerek fejlesztése

ECOSPACE

Page 21: Programrendszerek fejlesztése

PECES

Page 22: Programrendszerek fejlesztése

Egy példa rendszer

Page 23: Programrendszerek fejlesztése

Szoftver architektúra

Page 24: Programrendszerek fejlesztése

Egy példánya

Page 25: Programrendszerek fejlesztése

Egy másik példa

Page 26: Programrendszerek fejlesztése

Példák

Page 27: Programrendszerek fejlesztése

27

Számítógép rendszerek 1950 katonai célok

Titkosítás, visszafejtés 1960 kötegelt feldolgozás

Nem interaktív 1970 Mainframe

Időosztásos interaktív 1980 PC

Az asztali gép felé irányult a figyelem Elosztott információ feldolgozás (Autonóm rendszerek)

1990 Vállalati információs rendszerek (Enterprise Computing) Megbízható adatátvitel (sávszélesség, válaszidő) Központi fájl, Adatbázis, Alkalmazás szerverek + PC-k Elosztott rendszerek

Page 28: Programrendszerek fejlesztése

28

Elosztott rendszer Az elosztott rendszer ismérvei:

Skálázhatóság – a rendszer tetszőlegesen bővíthető Nyílt rendszer – képes más rendszerekkel is együttműködni, a

régi elemekkel is Heterogén – Több különböző alkalmazás, platform is képes az

együttműködésre Erőforrás megosztás Hibatűrés – kritikus komponensek többszörözése, … …

Definíció: Autonóm gépek olyan halmaza melyek számítógép hálózattal

vannak összekötve . Minden gép szoftver komponenseket futtat és egy olyan középréteget üzemeltet mely lehetővé teszi a különböző komponensek koordinálását úgy, hogy a felhasználók számára a rendszer egy gépnek tűnik. (Áttetszőség)

Leslie Lamport: „Olyan rendszer melyben a munkám olyan komponensek hibája

érinti melyek létezéséről nem is tudtam”

Page 29: Programrendszerek fejlesztése

29

Elosztott rendszer

User

Node B Node C

Node FNode E

Node ANode D

Komponens Komponens…Hálózati Operációs Rendszer

Hardver

HOSTKomponens Komponens…

Hálózati Operációs RendszerHardver

HOST

Középréteg (Middleware)

Page 30: Programrendszerek fejlesztése

30

Elosztott vs. Központosított rendszer Központosított rendszer

A komponensek nem autonómok Homogén technológia (hatékony kommunikáció) Több felhasználó is használhatja egy időben Akár egy processzben és egy szálban futó alkalmazás Egy központi vezérlés, hiba pont (ritka a

kommunikációs hiba) Elosztott rendszer

Autonóm komponensek, nincs mester komponens Heterogén technológia Komponensek között eloszlik a terhelés, a

komponensekhez exkluzív használati jog is tartozhat Párhuzamos végrehajtás (komponensenként vagy

ezeken belül is) Több meghibásodási pont

Page 31: Programrendszerek fejlesztése

31

Példák: SZTE – LanStore: Elosztott tárolás (.NET C#)

200 gép x 20 Gbyte = 4 TByte Párhuzamos hozzáférés -> nagyságrendekkel gyorsabb mint egy fájlszerver Pl.: Video On Demand

Video-on-Demand (Java, C++) Hong Kong 90000 előfizető

Repülő konfiguráció menedzsment (meglévő komponensekből építette fel) Boeing Minden gép minden alkatrésze, javításnál azonnal szükség van az adott

dokumentumokra 1,5 milliárd alkatrész évente (3 millió gépenként) A MainFrame nem bírta a terhelést

Google Több mint 10000 mezei PC Napi 200 millió keresés Több 100 millió weboldal (tömörítve, …) Nagyfokú redundancia

Page 32: Programrendszerek fejlesztése

32

Skálázhatóság Tervezés (pl. elektromos rendszer) A terhelés mértéke: Online user, tranzakció

szám, … Elektromos rendszer – elvárjuk az állandó

szolgáltatást A szolgáltatás minőség fontos! A szoftver rendszereket is így kellene

tervezni… Skálázható egy rendszer ha a ma még nem

látható terhelésnövekedéseket is elviseli Internet, e-business, B2C, …

Page 33: Programrendszerek fejlesztése

33

Nyílt rendszer Könnyen bővíthető, módosítható A tervezésnél szabványos technológiák,

megoldások (pl.: tervezési minták,…) Jól definiált interfészek Jól definiált szolgáltatások

Együtt fejlődik az intézménnyel Az egyszer befektetett idő/pénz ne menjen

veszendőbe

Page 34: Programrendszerek fejlesztése

34

Heterogén rendszer Külön-külön vásárolt komponensek

Hardver OS Hálózati protokoll Programozási nyelv

Gyakran autonóm egységeknek kell együttműködniük

Heterogén komponensek integrálása

Page 35: Programrendszerek fejlesztése

35

Erőforrás hozzáférés és megosztás Erőforrás

Hardver Szoftver Adat

Többen használhatnak egy erőforrást Biztonsági megfontolások Ki mikor, hogyan férhet hozzá

Elosztott objektum foglalja magába az erőforrást

N rétegű alkalmazás

Page 36: Programrendszerek fejlesztése

36

Hibatűrés Merevlemez 2-5 év a várható élettartam Hibatűrő az a rendszer amely hibák fellépése

esetén is folytatni tudja működését Ideális esetben emberi beavatkozás nélkül

(pl.: EJB tároló, cluster) Redundáns elemek, replikáció

Page 37: Programrendszerek fejlesztése

37

Az elosztott rendszer tulajdonságai ANSA 1989, ISO/IEC 1996 International Standard on

Open Distributed Processing Helyszín áttetszőség Hozzáférés áttetszőség Replikáció áttetszőség Hiba áttetszőség Párhuzamosság áttetszőség Migráció áttetszőség Feladat áttetszőség Teljesítmény áttetszőség Skálázás áttetszőség Programozási nyelv áttetszőség

Az elosztott rendszer mérőléce (middleware mérőléce)

(Áttetszőség – Transparency)

Page 38: Programrendszerek fejlesztése

38

Hozzáférés áttetszőség A helyi és a távoli hozzáférés interfész azonos Pl.: NFS – a helyi gépen lévő erőforrásokat

ugyanúgy érem el mint a távoliakat (azonosak a függvényhívások is)

Az ilyen komponensekre épülő komponensek könnyen áthelyezhetőek egyik helyről a másikra

Page 39: Programrendszerek fejlesztése

39

Helyszín áttetszőség Nem kell tudnunk a komponens pontos helyét,

van egy olyan mechanizmus mellyel megtaláljuk és megcímezzük

Pl.: NFS – a felhasználóknak nem kell tudniuk a szerver IP címét

Page 40: Programrendszerek fejlesztése

40

Migráció áttetszőség A komponensek tetszés szerint mozgathatóak

a hostok között anélkül, hogy a felhasználó ezt érzékelné és módosítanunk kellene más komponenseket

Függ helyszín és hozzáférés áttetszőségtől

Page 41: Programrendszerek fejlesztése

41

Replikáció áttetszőség Replikák Adott komponens több helyen is megtalálható Replikáció Ha állapottal rendelkezik akkor ezt

szinkronizálni kell minden példányban A felhasználó és a többi komponens nem veszi

észre, hogy másolatot használ Nagyobb teljesítmény, hibatűrés

Page 42: Programrendszerek fejlesztése

42

Párhuzamosság áttetszőség Az egyes komponensek egy időben

használhatják a megosztott erőforrásokat anélkül, hogy ez fennakadást okozna.

A felhasználó nem veszi észre, hogy más ia használja a rendszert

Jó esetben sem az alkalmazás tervező sem a felhasználó sem foglalkozik vele (a middleware feladata)

Page 43: Programrendszerek fejlesztése

43

Teljesítmény áttetszőség Sem az alkalmazás fejlesztő sem a felhasználó

nem tudja hogyan éri el a rendszer az adott teljesítményt

Middleware dolga (ma még kevés tudja autómatikusan) Replikáció Load Balancing

Page 44: Programrendszerek fejlesztése

44

Hiba áttetszőség Sem a felhasználó sem az alkalmazás fejlesztő

nem tudja hogyan kezeli a rendszer a hibákat Nem veszik észre a hibákat Pl.: bank automata

Page 45: Programrendszerek fejlesztése

45

Középréteg Tranzakció orientált középréteg

Tranzakciók integrálása több különböző adatbázis-kezelőn, adatbázison át

IBM CISC, Tuxedo Üzenet orientált középréteg

Megbízható üzenetküldés IBM MQSeries, MSMQ

Objektum Orientált középréteg Corba RMI COM

Page 46: Programrendszerek fejlesztése

Tranzakció kezelő rendszerek Üzleti tranzakciók

Valódi interakció Leggyakrabb esetei

Vállalat és egy személy között Vállalat – Vállalat között

Tranzakció kezelő program Osztott adatokon végez műveleteket

Online Tranzakció Kezelő rendszer Tranzakció kezelő programok gyűjteményét futtatja

Page 47: Programrendszerek fejlesztése

Az ACID tulajdonságok Atomiság

Minden vagy semmi (Bank, Rakéta), kompenzálás Konzisztencia

Jó állapotból jó állapotba kerüljön Izoláció

A párhuzamos tranzakciók sorbarendezhetőek (Serializable)

Mint ha külön életet élnének (Konzisztencia+Izoláció) Tartósság

Az elfogadott tranzakciók nem vesznek el Stabil tároló (log)

Nehéz a központosított adatbázisoknál Még nehezebb az elosztott rendszereknél

Page 48: Programrendszerek fejlesztése

Erőforrás kezelő Hogyan vannak az ACID tranzakciók

implementálva Erőforrás allokálás a programok számára

Zárolás, … Erőforrások begyűjtése Erőforrás kezelő réteg

Page 49: Programrendszerek fejlesztése
Page 50: Programrendszerek fejlesztése
Page 51: Programrendszerek fejlesztése

Adat vs. Logika

Page 52: Programrendszerek fejlesztése

Absztrakciós szintek

Page 53: Programrendszerek fejlesztése
Page 54: Programrendszerek fejlesztése

Az információs rendszer 3 rétege

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 55: Programrendszerek fejlesztése

Megjelenítés Az információ

megjelenítését adja meg

Megadja azt is hogy hogyan fogadjuk el az információt

A társ entitás itt a felhasználó vagy más rendszer

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 56: Programrendszerek fejlesztése

Alkalmazás logika A program Az üzleti folyamat Az üzleti logika Az üzleti szabályok Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 57: Programrendszerek fejlesztése

Erőforrás kezelő réteg A domain modell

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 58: Programrendszerek fejlesztése

Top-down tervezés1. Definiáljuk a hozzáférési

csatornákat2. Definiáljuk a

megjelenítés formátumot és protokollt

3. Definiáljuk a funkcionalitást amellyel a fent definiált tartalmat előállíthatjuk

4. Definiáljuk az adat struktúrát és szervezést amely az alkalmazás logikát támogatja

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 59: Programrendszerek fejlesztése

Bottom-up tervezés1. Definiáljuk a hozzáférési

csatornákat2. Megvizsgáljuk a

erőforrásokat és a szolgáltatásokat

3. Becsomagoljuk a meglévő szolgáltatásokat konzisztens interfészekkel

4. Az alkalmazás logikához adaptáljuk a megjelenítésiréteget.

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 60: Programrendszerek fejlesztése

Egy rétegű architektúra Monolitikus Nagyon hatékony

lehet A régi rendszerek

problémájaMegjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Kliens

Információs rendszer

Page 61: Programrendszerek fejlesztése

Kliens

Két rétegű architektúra Felxibilis

megjelenítési réteg

Stabil, publikált API

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Információs rendszer

Page 62: Programrendszerek fejlesztése

2 Rétegű szerver Egy szerver

nem skálázható

A kliens dolga a szolgáltatások integrálása

Erőforrás kezelő réteg

Információs

rendszerSzolg.

Szolg.

Szolg.

Szolg.

Szolg.

Szerver APISzolg. Int

Szolg. Int

Szolg. Int

Szolg. Int

Szolg. Int

KliensMR 1

Page 63: Programrendszerek fejlesztése

Három rétegű architektúra Skálázható az

alkalmazás logika réteg

Több alkalmazásszerver

Alkalmazás integráció A középrétegben

csináljuk meg Stabil API az

erőforrás kezeléshez

Kliens

Megjelenítés réteg

Alkalmazás logika réteg

Erőforrás kezelő réteg

Információs rendszer

Középréteg

Page 64: Programrendszerek fejlesztése

N rétegű architektúra

Megjelenítés réteg

Alkalmazás logika réteg

Információs rendszer

Középréteg

Kliens

R1

W1

R2

W2

R1

W1

R1

W1

Erőforrás kezelő réteg

C2

Page 65: Programrendszerek fejlesztése

65

Internet, Web alkalmazások architektúrája N rétegű architektúrák Vékony kliens Biztonsági megfontolások Skálázhatóság

Page 66: Programrendszerek fejlesztése

Második előadás XML

XSD XPath XSLT