Komponens alapú fejlesztés Szoftvertechnológia elıadás
Tartalom
Újrafelhasználás Komponens alapú fejlesztés Példák
Újrafelhasználás alapú tervezés
A mérnöki tudományágakban a tervezés már létezı komponensek újrafelhasználásán alapszik A szoftverfejlesztésnek is szüksége van hasonló elvő megközelítésre
Költségek csökkentése Gyorsabb átadás Növekvı minıség
Újrafelhasználás alapú tervezés
Az újrafelhasználhatóságot figyelembe kell venni a tervezésnél Lehetıségek:
Alkalmazási rendszerek újrafelhasználása Komponensek újrafelhasználása Mőveletek (függvények) újrafelhasználása
Újrafelhasználás alapú tervezés Követelmények: 1.
2.
3.
Elérhetıvé kell tenni az újrafelhasználható komponenseket A komponensek felhasználóinak bízni kell a komponensek helyes és biztonságos mőködésében A komponenshez tartozó dokumentációnak segíteni kell az újrafelhasználót az illesztésben
Újrafelhasználás alapú tervezés
Problémák:
Növekvı karbantartási költségek Az eszköztámogatás hiánya „Nem-itt-találták-ki” szindróma Komponenskönyvtárak karbantartása Az újrafelhasználható komponensek megtalálása és adaptálása
Megoldás: Szervezet szintő újrafelhasználási program kell
Programgenerátor
Más nézıpontú megközelítés Szakterület-orientált nyelven programozható programgenerátor Az alkalmazás leírása tartalmazza a felhasználandó komponenseket Alkalmazási területek:
Üzleti adatfeldolgozó alkalmazások Szintaktikus elemzık CASE-eszközök
Programgenerátor Alkalmazás leírása
Programgenerátor
Generált program
Szakterületi alkalmazás ismeretek
Adatbázis
Komponens alapú fejlesztés
1990-es évek végén alakult ki Csalódottság az OO fejlesztésben
Nem váltotta be az újrafelhasználás terén hozzá főzött reményeket Túl specifikusak az osztályok Részletes ismeretük szükséges Az egyedi objektumoknak soha nem alakult ki jelentıs piaca
Komponens
Absztraktabb az objektumosztálynál Önálló szolgáltató
Független, végrehajtható entitás Forráskódja nem elérhetı Minden interakció a komponens által közzétett interfészeken keresztül történik
Biztosított interfészek (komponens szolgáltatásai) Szükséges interfészek (komponens mőködéséhez szükséges szolgáltatások)
Komponens (példa) PrintService GetPDFile PrintInt
Print GetQueue Remove Transfer Register Unregister
Szükséges interfészek
Biztosított interfészek
Absztrakciós szintek Funkcionális absztrakció
1.
Egyszerő funkció
Laza csoportosítások
2.
Lazán összekapcsolódó entitások
Adatabsztrakciók
3.
Absztrakt típus / osztály
Klaszterabsztrakciók
4.
Együttmőködı osztályok csoportja (keretrendszer)
Rendszerabsztrakció
5.
Teljes, önálló rendszer
Alkalmazkodó újrafelhasználási folyamat
Lépések: 1. 2. 3. 4.
Rendszer-architektúra tervezés Komponensek meghatározása Újrafelhasználható komponensek megkeresése Felderített komponensek egyesítése
Jellemzık:
Jelentıs újrafelhasználás Különbözik a többi mérnöki tudományban alkalmazott felfogástól
Újrafelhasználással történı fejlesztés (Lépések) 1. 2. 3. 4. 5. 6.
Vázlatos rendszer-követelmények Újrafelhasználható komponensek keresése Követelmények módosítása a felderített komponenseknek megfelelıen Architektúrális terv Újrafelhasználható komponensek keresése Rendszer megtervezése az újrafelhasználható komponensek használatával
Újrafelhasználással történı fejlesztés (Jellemzık)
Kompromisszumok a követelmények tervezésekor (kevésbé hatékony terv) Alacsonyabb fejlesztési költségek, rövid fejlesztési idı, megnövekedett megbízhatóság (ellensúlyozza a terv kompromisszumait)
Nehézségek
Karbantartás
Szoftverevolúció
A komponens forráskódja nem elérhetı A követelmények változásával a komponensek egyre kevésbé felelnek meg az új elvárásoknak
Követési költségek nagyobbak
A módosítás/javítás új komponensek felhasználását teheti szükségessé
Példák
A feladat:
Készítsünk egy erıforrás-kezelı eszközt, amellyel elkészíthetı egy iskola szünetfelügyeleti beosztása.
Megvalósítás
JavaBeans ActiveX
A rendszerterv
Szereplık
A beosztásért felelıs személy (felelıs) A beosztást elkészítı személy (készítı) Felügyelı tanár
Név Foglalkoztatás (fı- vagy mellékállású) Rossz idıpontok (amikor nem felügyelhet)
A rendszerterv
Kimenet
Egy olyan beosztás, amelyben
Minden szünetet 2 vagy 3 tanár felügyel Akik közül legalább egy fıállású tanár Akik közül az egyik a felügyelet felelıse
Állapotai
Készítés Ellenırzés Használat (amíg új beosztás nem születik)
A rendszerterv
Funkciók
Felelıs
Készítı
Adatok módosítása A beosztás állapotának megváltoztatása Adatok módosítása
Felügyelı tanár
A saját adatainak módosítása (készítés állapotban) A beosztás olvasása (ellenırzés és használat állapotban)
Példa munkamenet Az iskola igazgatója megbízza a titkárát a beosztás elkészítésével
1.
2. 3. 4. 5.
Igazgató = felelıs Titkár = készítı
A titkár felviszi a számításba vehetı felügyelı tanárok adatait a rendszerbe A tanárok módosítják ezeket az adatokat (megjelölik a számukra alkalmatlan idıpontokat) A titkár elkészíti az új beosztást (készítés állapot) Az igazgató átnézi a beosztást (esetlegesen módosít rajta), majd az állapotát ellenırzés-re változtatja
Példa munkamenet 6.
7. 8. 9.
A titkárnı összegyőjti a módosítási kérelmeket a felügyelı tanároktól, és továbbítja az igazgatónak Az igazgató felvezeti a változtatást vagy visszautasítja a kérelmet Az igazgató elvégzi a végsı ellenırzéseket Az igazgató a tervet használati állapotba helyezi (az ütközéseket kijelzi a program és amíg van ütközés nem engedi ezt az állapotváltoztatást)
A rendszer felépítése
Rétegek
Adat réteg
Hozzáférési réteg
Kommunikációs közeg az adat és az alkalmazás réteg között
Alkalmazás réteg
Az alkalmazás-specifikus adatmodellek
A program funkcionalitásának megvalósítása
Kezelıfelületi réteg
Grafikus felhasználói interfészek
Implementáció
Célok:
A lehetı legtöbb létezı komponens felhasználása Az elkészült szoftver egyes részeinek vagy a szoftver egészének újrafelhasználhatóvá tétele
JavaBean implementáció
Kezelıfelületi réteg
UI Bean elemekbıl összerakva A szükséges új elemek elkészítése Az elkészített kezelıfelület újrafelhasználhatóvá tétele új JavaBean komponensek definiálásával
Alkalmazás réteg
Nagyrészt új fejlesztés (minimális mennyiségben használ meglévı komponenseket) Önállóan nem újrafelhasználható
JavaBean implementáció
Hozzáférési réteg
RMI az adat és az alkalmazás réteg között
Adat réteg
Adatkezelési Bean komponensek Adatbázis-illesztési komponensként újrafelhasználható
ActiveX implementáció
Kezelıfelületi réteg
Windows Foundation Classes elemekbıl összerakva Új komponensek definiálhatók az újrafelhasználás érdekében
Alkalmazás réteg
Új fejlesztés
ActiveX implementáció
Hozzáférési réteg
DCOM alapú elérése az adat rétegnek
Adat réteg
A használt adatbázishoz a használt programozási nyelven elérhetı illesztı komponensek
Eredmény
A teljes program újrafelhasználható
másfajta beosztások elkészítésére is alkalmas Integrálható komplexebb alkalmazásokba
A program szerkezetének egyes rétegei újrafelhasználhatók
Kezelıfelületi réteg Adatbázis réteg
Irodalom
Kötelezı
I. Sommerville: Szoftver rendszerek fejlesztése, 14. fejezet (348-371 o.)
Ajánlott
http://www.sze.hu/~heckenas/okt/compon .pdf http://www.swe.unilinz.ac.at/publications/pdf/TR-SE99.16.pdf