Tartalom Komponens alapú fejlesztés Szoftvertechnológia előadás Ú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 1
Ú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 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 Alkalmazás leírása Programgenerátor Szakterületi ti alkalmazás l ismeretek Generált program Adatbázis 2
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) Absztrakciós szintek GetPDFile PrintInt Szükséges interfészek PrintService Print GetQueue Remove Transfer Register Unregister Biztosított interfészek 1. Funkcionális absztrakció 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 3
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é 4
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 Adatok módosítása A beosztás állapotának megváltoztatása Készítő 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) 5
Példa munkamenet 1. Az iskola igazgatója g 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. Atitká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 l 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 6
JavaBean implementáció 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ó 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 7
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 8