Szoftver újrafelhasználás (Software reuse) Irodalom Ian Sommerville: Software Engineering, 7th e. chapter 18. Roger S. Pressman: Software Engineering, 5th e. chapter 27. 2
Szoftver újrafelhasználás Szoftver fejlesztésekor korábbi fejlesztésekkor létrehozott kód felhasználása architektúra felhasználása tudás felhasználása Nem azonos a portolással 3 Szoftver újrafelhasználás vs. portolás Környezet 1 Rendszer 1 Újrafelhasználás Rendszer 2 Portolás Környezet 2 Rendszer 1 4
Életciklus objektumok újrafelhasználása Újrafelhasználási szintek Alkalmazás rendszer testreszabható alkalmazások Komponens újrafelhasználás Osztály, függvény újrafelhasználás 5 Az újrafelhasználás el!nyei Nagyobb megbizhatóság Csökkentett fejlesztési kockázat Specialisták, domén szakért!k hatékonyabb kihasználása Szabványos megoldások Gyorsabb fejlesztés 6
Újrafelhasználási problémák Karbantartási költségek n!hetnek újrafelhasznált részek kevésbé hozzáférhet!k Nem minden fejleszt! eszköz támogatja az újrafelhasználást Nem mi fejlesztettük szindróma Komponens könyvtárak kezelése költséges Megfelel! újrafelhasználható komponensek megtalálása, megértése, adaptálása er!forrás igényes 7 Újrafelhasználási megközelítések Tervezési minták Komponens alapú fejlesztés Alkalmazás keretrendszerek Örökölt rendszerek becsomagolása Szolgáltatás orientált rendszerek Szoftver termékvonalak, családok COTS integrálás Testreszabható vertikális alkalmazások Programgenerátorok Aspektus orientált programozás 8
Tervezési minták Probléma és a megoldás lényegének leírása tervezési szótár (pattern language) azonosított minták struktúrált invariáns értékek formális dokumentáció Tervezési alapelvek, keretrendszerek Tervezési ajánlások Konkrét megvalósított rendszerek Pattern language Tervezési minták 9 Generátor alapú újrafelhasználás Program generálás standardizált minták és algoritmusok alapján Domén absztrakciók rögzítése modellek, szabályok Generálási paraméterek 10
Generátor típusok Alkalmazás generátorok üzleti alkalmazások, adatbázisok Parszer generátorok pl. yacc CASE eszközök kódgenerátorai UML -> Java Alk. leírás, modellek Alkalmazás generátor Generált alkalmazás Tervezé si minták 11 Alkalmazás generátor (pl.) Windev RAD OlivaNova 12
Parszer generátor (pl.) 13 Kódgenerátor (pl.) JUDE (Java UML Development Environment) 14
Aspektus orientált fejlesztés Érdekeltségek szeparálása Átfed! érdekeltségek problémája Aspektusok létrehozása és beszövése a generált kódba 15 Alkalmazás keretrendszerek Absztrakt és konkrét osztályok és interfészek gy"jtményei Alrendszerek létrehozása leszármaztatással és instanciálással 16
Keretrendszer típusok Rendszer infrastruktúra keret rendszer szolgáltatások, felh. felület Middleware integrációs keret komponens kommunikáció, információ csere Vállalati alkalmazás keret 17 Rendszer infrastruktúra keret Alkalmazás Alkalmazás Fv. könyvtár Keretrendszer Op. rendszer Hardver 18
Alkalmazás újrafelhasználás Teljes alkalmazás újrafelhasználása Testreszabható alkalmazások (COTS specializálás) COTS (Commercial O#-the-Shelf) szoftverek integrációja Szoftver termékvonalak 19 COTS specializálás Komplett alkalmazás, spec. API-val Specializálás platform specializálás környezeti specializálás funkcionális specializálás folyamat specializálás Telepítés utáni konfigurálás, testreszabás 20
COTS integrálás Rendszer integrálás adapterek, middleware Integrációs problémák nincs funkcionalitási és teljesítmény kontrol nem irányítható a termék fejlesztése támogatási nehézségek 21 COTS integrálás middleware-rel Transzparens összeköttetés különböz! architektúrák, protokollok között Üzleti folyamatok automatizálása Middleware kategóriák alkalmazás middleware információ cserél! middleware management és támogató middleware 22
COTS integrálás middleware-rel (folyt.) Middleware típusok adatbázis middleware alkalmazásszerver middleware üzenet orientált middleware tranzakciófeldolgozó middleware web middleware 23 Felhasználói COTS integrálási (pl.) alkalmazás kiterjeszt! nyelvek inter application communication vbscript (COM), DDE, OLE rendszer szint" szript nyelv küls! szkript nyelv, alkalmazások vezérlésére Apple OSA (AppleScript, Frontier), Automator UNIX shell scriptek, pipe-ok 24
Szoftver termékvonalak Alkalmazáscsaládok generikus funkcionalitással, specifikus felhasználásokhoz adaptálva, konfigurálva Adaptációs területek komponensek konfigurálása új komponensek hozzáadása komponensek módosítása 25 Meglév! rendszerek Szoftver termékvonalak Platform fejlesztés Visszacsatolás Domén Domén követelmény elemzés Domén architektúra elemzés Platform komponensek létrehozás Platform komponensek verifikálás Domén szakértelem Referencia követelmények Referencia architektúra Platform komponensek Platform er!források Specifikus követelmény elemzés Új követelmény Specifikus rendszer tervezés Specifikus komponens létrehozás Specifikus komponens adaptálás Specifikus komponens integrálás Specifikus rendszer verifikálás Specifikus termékek fejlesztése 26