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. Elérhetıvé kell tenni az újrafelhasználható komponenseket 2. A komponensek felhasználóinak bízni kell a komponensek helyes és biztonságos mőködésében 3. 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 1. Funkcionális absztrakció Egyszerő funkció 2. Laza csoportosítások Lazán összekapcsolódó entitások 3. Adatabsztrakciók Absztrakt típus / osztály 4. Klaszterabsztrakciók Együttmőködı osztályok csoportja (keretrendszer) 5. Rendszerabsztrakció Teljes, önálló rendszer
Alkalmazkodó újrafelhasználási folyamat Lépések: 1. Rendszer-architektúra tervezés 2. Komponensek meghatározása 3. Újrafelhasználható komponensek megkeresése 4. 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. Vázlatos rendszer-követelmények 2. Újrafelhasználható komponensek keresése 3. Követelmények módosítása a felderített komponenseknek megfelelıen 4. Architektúrális terv 5. Újrafelhasználható komponensek keresése 6. 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 A komponens forráskódja nem elérhetı Szoftverevolúció 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 1. Az iskola igazgatója megbízza a titkárát a beosztás elkészítésével Igazgató = felelıs Titkár = készítı 2. A titkár felviszi a számításba vehetı felügyelı tanárok adatait a rendszerbe 3. A tanárok módosítják ezeket az adatokat (megjelölik a számukra alkalmatlan idıpontokat) 4. A titkár elkészíti az új beosztást (készítés állapot) 5. 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. 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 7. Az igazgató felvezeti a változtatást vagy visszautasítja a kérelmet 8. Az igazgató elvégzi a végsı ellenırzéseket 9. 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 Az alkalmazás-specifikus adatmodellek 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 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.uni- linz.ac.at/publications/pdf/tr-se- 99.16.pdf