Szoftver újrafelhasználás 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 2
Szoftver újrafelhasználás vs. portolás Környezet 1 Rendszer 1 Újrafelhasználás Rendszer 2 Portolás Környezet 2 Rendszer 1 3 Életciklus objektumok újrafelhasználása Újrafelhasználási szintek Alkalmazás rendszer testreszabható alkalmazások Komponens újrafelhasználás Osztály, függvény újrafelhsználás 4
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 5 Ú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 6
Ú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 7 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 8
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 9 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 10
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 11 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 12
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 13 Rendszer infrastruktúra keret Alkalmazás Alkalmazás Fv. könyvtár Keretrendszer Op. rendszer Hardver 14
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ék vonalak 15 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 16
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 17 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 18
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 19 Szoftverek fejl!dése
Szoftverváltozások A szoftverek változtatása elkerülhetetlen Új követelmények megjelenése Alkalmazási környezet változása Hibajavítások Számítási infrastruktúra cseréje 21 Lehman törvényei Folytonos változtatás igénye Növekv! komplexitás Nagy rendszerek változása Szervezési stabilitás Inkrementális változtathatóság Növekv! méret Csökken! min!ség Visszacsatolás szükségessége 22
Szoftver karbantartás Használatbavett program módosítása A változtatás nem érinti a rendszer architektúráját Létez! komponensek módosítása, új komponensek hozzáadása 23 Karbantartástípusok Szoftverhibák javítása korrekciók a követelményeknek megfelel!en Adaptációs karbantartás megváltozott m"ködési (infrastruktúrális) környezethez igazítás Funkcionalitás megváltoztatása, kiegészítése (b!vítés) 24
Hibaszám alakulása Hibaszám változtatások valódi ideális Id! 25 Karbantartási költségek Magasabbak, mint a fejlesztési költségek A karbantartásokkal n!nek Régi szoftverek magas támogatási költséggel járnak 26
Karbantartási költségek (folyt.) Meghatározó tényez!k Fejleszt! csapat stabilitása Szerz!déses kötöttségek Karbantartók szakértelme A program kora, szerkezete 27 Karbantartási költségek megoszlása 18% 64% 18% Javító Adaptív Kib!vít! 28
Karbantartási becslések Karbantarthatóság nehezen, drágán karbantartható részek meghatározása Karbantartási költségek becslése id!beli eloszlás Változtatási igények becslése 29 Változtatási igények Rendszer és környezetének kapcsolata Meghatározó tényez!k a rendszer interfészeinek száma és komplexitása eredend!en változékony követelmények száma a rendszert használó üzleti folyamatok száma 30
A változtatási folyamat Változtatási igény Hatás elemzés Tervezés Változtatás implementálás Kibocsátás Hiba javítás Adaptáció Kib!vítés 31 Rendszer újratervezés A rendszer egy részének újrafejlesztése Funkcionalitás nem változik A karbantartás megkönnyítésére El!nyök (a teljes új rendszer bevezetéséhez képest) kockázat csökkentése költségek csökkentése 32
Az újratervezési folyamat Eredeti program Eredeti adatok Visszafejtés Forráskód transzláció Dokumentáció Újramodularizálás Adat újratervezés Struktúra elemzés Modularizált program Újratervezett adatok Program struktúra 33 Örökölt (!s) rendszerek Örökölt rendszerek evolúciója A rendszer eltávolítása az üzleti folyamatból A rendszer karbantartása A rendszer újratevezése A rendszer lecserélése A megoldás a rendszer min!ségét!l és üzleti értékét!l függ 34
Alkalmazás értékelési szempontok Érthet!ség Dokumentáció Adatok szerkezete Teljesítmény Programozási nyelv Konfiguráció kezelés Tesztadatok Rendelkezésre álló szaktudás 35