Title: KompAlap
1Komponens alapú programozásBevezetés
- Ficsor Lajos
- Miskolci Egyetem
- Általános Informatikai Tanszék
- Ez a tananyag felhasználja a
- TEMPUS S_JEP-12495-97Network Computing
- Chapter 8
- Developing of Network Computing Applications
- Component Based System Development
- (Lajos Ficsor)
- egyes részeit, magyar nyelvre fordítva
- Utolsó módosítás 2007. 10. 08.
2Tartalom
- Miért kell a software komponens?
- A software komponens koncepció
3Miért kell a software komponens?
- A többrészes (multi-tier) architektúra
elválasztja legalább a - prezentáció
- üzleti logika
- adatmanipuláció
- rétegeket, de ezek a rétegek még így is túl
komplexek maradnak - A rétegek további szétválasztása lehetséges és
sokszor szükséges is
4Miért kell a software komponens? (folyt.)
- Üzleti nyomás a minél rövidebb fejlesztési ciklus
érdekében - A komponensek segítik az újrahasználható részek
fejlesztését - Könnyebbé teszik a skálázható alkalmazások
fejlesztését.
5Mi a komponens?
- A komponens legjellegzetesebb tulajdonságai
- A komponens egy függetlenül telepítheto egység
- A komponens jól elhatárolt a környezetétol és más
komponensektol - Egy komponenst a használatához telepíteni kell
- Egy komponens sohasem telepítheto részlegesen
- A komponens magába zárja az általa nyújtott
szolgáltatásokat - A komponens felhasználójának nem kell ismernie a
komponens felépítésének részleteit
6Mi a komponens? (folyt.)
- A komponens egy harmadik fél számára fejlesztési
egység (A component is a unit of third-party
composition) - Egy komponensnek elegendoen zártnak kell lennie
- A komponenshez pontos specifikáció kell tartozzon
- Egy komponens a környezetével a jól definiált
interface-én keresztül kommunikál
7Mi a komponens? (folyt.)
- Egy komponensnek nincs perzisztens állapota
- Egy komponenst és a saját másolatát nem lehet
megkülönböztetni - lehetséges kivétel nem funkcionális attribútumok
(például licensz szám) - Egy komponens tetszoleges példányban betöltheto
és aktivizálható egy adott rendszerben. A
rendszerben jelenlevo másolatok száma
lényegtelen.
8Komponens és objektum összehasonlítása
- Komponens
- Telepítési egység
- Kompozíció egysége
- Nincs perzisztens állapota
- Egységbe zárja a lehetséges funkcióit (features)
- Objektum
- Példányosítás egysége
- Van "terve" (osztály)
- Az osztály újrafelhasználható egység
- Van perzisztens állapota
- Egységbe zárja az állapotát és a viselkedését
9A komponens definíciója
- A szakirodalom számos definíciót ismer.
- Mi az alábbit használjuk
- Clemens Szyperski (Component Software, p.34)
- "Egy software komponens egy kompozíciós egység
szerzodésszeruen specifikált interfésszel és csak
explicit módon függ a környezetétol. Egy software
komponens függetlenül telepítheto és harmadik fél
által kompozíciós egységként használható."
10A definíció magyarázata
- Az elobbi definíció tömör, de több lényeges
dolgot foglal össze. - Jobb megértéséhez a továbbiakban kiemeljük és
értelmezzük az egyes részeit.
11A komponens interfésze
- A definíció része
- "kompozíciós egység, szerzodésszeruen specifikált
interfésszel" - Az interfész a kliens elérési pontja a komponens
szolgáltatásaihoz - Egy komponensnek több interfésze lehet a
különbözo igényu kliensek kiszolgálásához - Direct (procedural) interfész
- Közvetlenül a komponens biztosítja
12A komponens interfésze (folyt.)
- Indirect (object) interfész
- A komponens által elérhetové tett objektum(ok)
biztosítját - Az indirekció módja method dispatch (kb. metódus
hívás továbbítás, továbbadás) - Az objektum osztálya meghatározza az objektum
interfészének implementációját - Futásidoben egy metódus hívás feloldásánál az
objektum megkeresi a cél objektum osztályát és a
hívást az adott osztály megfelelo metódusához
irányítja
13Indirekt interfész egy példa
- A nyelvtani ellenorzo ismeri a közvetítot
(mediator) - A nyelvtani elemzo regisztrálja magát - a
közvetíto csak az absztrakt interfészt ismeri - A szövegszerkeszto tud a közvetítorol
- A szövegszerkeszto szerez egy referenciát az
aktuális nyelvtani ellenorzohöz (a szerkeszto
csak az absztrakt ellenorzo interfészt ismeri)
Word processing component
Grammar checking component
Word processor class
Grammar checker class
has-a
1
has-a
4
has-a
3
implements
2
Text services class
Checker interface
has-a
Text services mediator component
14Szerzodésszeru interfész
- Eredetileg "contractually specified interface"
- Az interfész specifikáció egy szerzodés
- a kliens és a komponens,
- a kliens és a komponens készítoje
- között
- A szerzodés rögzíti, mit kell a kliensnek tennie
ahhoz, hogy használhassa az interfészt - Elméletben a szerzodés futásidoben finomítható
15A szerzodés tartalma
- Minden operációra specifikálnia kell az
alábbiakat - Prekondíciók a kliensnek kell ezeket
biztosítania az operáció igénybevétele elott - Postkondíciók a komponensnek kell biztosítani,
mielott visszatér a klienshez - Specifikálni kell a muködés helyességének
szintjét - Részlegesen helyes (partially correctness) az
operáció vagy helyes postkondíciókkal
terminálódik, vagy egyátalán nem terminálódik - Teljes helyesség (total correctness) az operáció
mindenképpen terminálódik
16A szerzodés tartalma (folytatás)
- A szerzodés tartalmazhat a komponens muködésére
vonatkozó nem funkcionális követelményeket, mint
például - teljesímény
- rendelkezésre állás
- adatbiztonság
- kapacitás
17Explicit környezeti függoség
- A definíció része
- "csak explicit módon függ a környezetétol"
- Pontosan specifikáltnak kell lennie, mit kell a
komponens környezetének biztosítania a komponens
muködéséhez - más komponensektol igényelt interfészek
- a környezo komponens világ pontos specifikációja
(komponens modell fajtája, verziószáma). Például
CORBA x.x, Java x.x.x, COM/DCOM x.x
18Komponens modellek
- Minden komponens modell egy adott osztott
objektum modellt használ middleware-ként. - A három legelterjedtebb komponens modell
Name Middleware Programming Language Platform
JavaBeans/ Enterprise JavaBeans Java RMI Java Any
ActiveX DCOM Any Microsoft
CORBA Beans CORBA Any Any
19References
- Component-based programming
- Clemens Szyperski Component Software. Beyond the
Object-Oriented ProgramingAddison-Wesley, 1999 - Lajos Ficsor Component based system development
http//mazsola.iit.uni-miskolc.hu/tempus/discom/co
urses/net/component2.zip