350 likes | 582 Views
Nasle đeni sistemi. UVOD. Karakteristike savremenog procesa proizvodnje softvera Nasleđeni sistemi Softversko reinženjerstvo. NASLEĐENI SISTEMI. Perspektiva proizvođača softvera skupi, kompleksni (100K-10M) sistemi razvijani zastarelim jezicima i alatima (asembler, COBOL,…)
E N D
UVOD • Karakteristike savremenog procesa proizvodnje softvera • Nasleđeni sistemi • Softversko reinženjerstvo
NASLEĐENI SISTEMI • Perspektiva proizvođača softvera • skupi, kompleksni (100K-10M) sistemi • razvijani zastarelim jezicima i alatima (asembler, COBOL,…) • u održavanju ne učestvuju ljudi koji su pravili sistem • slaba dokumentacija, “razmekšana” arhitektura => održavanje i izmena teški • korisniku neophodni za obavljanje posla • Perspektiva “mode” (tehnološkog razvoja) • funkcionalan i dobro održavan sistem smatra se nasleđenim ako je tehnološki zastareo • Poslovna perspektiva • sistem je zastareo ako ne može da se prilagodi tempu promena u domenu poslovanja
NASLEĐENI SISTEMI (2) • U SAD se procenjuje da ima oko 100 milijardi linija operativnog COBOL koda • U Evropi i SAD 3/4 informacionih sistema u javnim službama, bankarstvu itd. zasnovano na centralizovanim sistemima • Stari COBOL, PL/I sistemi sa hijerarhijskim ili mrežnim bazama podataka • 80% tog nasleđenog softvera biće u upotrebi i posle 2000. godine • Izvori [Micros96], [Dedo97]
SOFTVERSKO REINŽENJERSTVO • Transformacija sistema u novu formu. Ciljevi: • da sistem bude pogodniji za održavanje, funkcionalnu dopunu, poboljšanje performansi i prilagođavanje tehnološkim promenama • uz sniženje troška, radnog napora ili rizika za korisnika reinženjerstvo reverzno inženjerstvo restrukturiranje inženjerstvo Zah- Zah- tevi tevi restrukturiranje projekat Projekat restrukturiranje Implementacija Implementacija Model potkovice
SOFTVERSKO REINŽENJERSTVO • Ekonomski aspekt • Organizacioni aspekt • Pravni aspekt • Tehnički aspekt
EKONOMSKI ASPEKT • Da li je reinženjerstvo softvera ekonomski opravdano ili treba primeniti neku alternativnu strategiju? • Opravdavanje projekta • povratak investicije - do kog nivoa će kvalitet softvera porasti, održavanje biti poboljšano, poslovna vrednost porasti • Portfolio analiza • trijaža aplikacija • Procena ukupnih troškova reinženjerstva • Analiza troškovi - dobit • poredi se trošak reinženjerstva sa očekivanim smanjenjem troškova održavanja i povećanjem poslovne vrednosti
EKONOMSKI ASPEKT (2) • Portfolio analiza • trijaža aplikacija Tehnički kvalitet Održavanje Poboljšavanje Otpis Reinženjering Poslovna vrednost
ORGANIZACIONI ASPEKT • Model procesa reinženjerstva. Aktivnosti: 1. Definisanje ciljeva i pravaca 2. Formiranje reinženjerskog tima 3. Provera postojećeg procesa održavanja/razvoja softvera 4. Selekcija skupa softverskih metrika 5. Analiza nasleđenog softvera 6. Definisanje procesa sprovođenja reinženjerstva 7. Razvijanje/dopunjavanje testnih primera 8. Analiza i izbor reinženjerskih alata 9. Obuka članova tima
6. STRATEGIJE SPROVOĐENJA REINŽENJERSTVA • Reinženjerstvo celog sistema • prednosti: ceo sistem u istom trenutku u novom operativnom stanju • mana: povećan rizik Nasleđeni Nasleđeni Nasleđeni Softver Softver Softver Sistem transformisan Reinženjerstvom
STRATEGIJE SPROVOĐENJA REINŽENJERSTVA (2) • Inkrementalno reinženjerstvo • poći od delova koji zahtevaju modifikaciju, spojiti izmene sa neizmenjenim ostatkom • prednosti: lakše lociranje eventualnih problema • mana: višestruke verzije softvera dok se ceo ne obradi Nasleđeni Nasleđeni Nasleđeni Program X Program Y Program Z a e i b f j c g k d h l Komponenta “d” Podvrgnuta reinženjerstvu Nova verzija Programa X a a b b c c novo novo Nova komponenta “d” d d prevedena sa ostatkom programa
STRATEGIJE SPROVOĐENJA REINŽENJERSTVA (3) • Delimično reinženjerstvo • poći od delova koji zahtevaju modifikaciju, izmenjene delove držati odvojeno u novom operativnom okruženju • prednosti: lakše lociranje eventualnih problema • mana: degradacija vremena odziva Nasleđeni Nasleđeni Nasleđeni Program X Program Y Program Z a e i b f j c g k d h l Komponenta “d” Podvrgnuta reinženjerstvu Eventualno u novomoperativnom okruženju a b c novo d Interfejs prema novojkomponenti “d”
PRAVNI ASPEKT • Mere zaštitite od potencijalne tužbe za kršenje autorskih prava kod reverznog inženjerstva: • nabaviti legalnu kopiju softvera koji se želi podvrgnuti reverznom inženjeringu • paziti da se ne prekrše pravila licenciranja • proveriti da ne postoji bilo kakav drugi način da se dođe do informacija osim reverznim inženjeringom • podvrgnuti analizi samo neophodni deo softvera da se spoznaju funkcionalnosti od interesa • Proces razvoja: dva tima, prvi radi reverzno inženjerstvo, drugi projektuje program. Drugi nema pristup do korisničkog interfejsa originalnog programa
TEHNIČKI ASPEKT • Rekonstrukcija koda • Rekonstrukcija arhitekture • Migracija podataka • Oblaganje nasleđenog softvera
Analiza koda Čitanje koda Statičke analize (Parsiranje koda u grafove struktura odnosno kontrola toka) Dinamička analiza (Ispitivanje ponašanja sistema) Profiling( sekvence poziva, tok podataka ) Snooping (interakcija između različitih komponenata sistema) Rekonstrukcija koda
Najveći izazov predstavlja transformacija zastarelog koda u struktuirani oblik Stari programski jezici koriste goto Kontrola toka nejasna, program težak za transformaciju (spaghetti code) Male spaghetti kodove programer može restruktuirati ručno Softverski alati generišu grafove kontrole toka izvršavanja kada su u pitanju ogromni spaghetti kodovi Rekonstrukcija koda (2)
Instrumentacija (dinamička analiza) Praćenje izvršavanja instrukcija red po red Otkrivanje razloga loših performansi Pomaže u razumevanju koda Rezanje koda (program slicing) Svaki izrezani deo koda predstavlja mesto gde se menja vrednost ili se pristupa odabranoj variable Pomaže u debug-ovanju i otklanjanju grešaka Standarda redokumentacija Refaktorisanje Rekonstrukcija koda (2)
Razni softverski alati Automatizovan proces rekonstrukcije Abstrakcija koda Konverzija iz jednog programskog jezika u drugi Rekonstrukcija koda (3)
OBJEKTIFIKACIJA • Transformacija proceduralnog programa u ekvivalentni objektno-orijentisani • Xinotech Object Abstractor: FORTRAN, COBOL => ADA 95 b Interne tabele eksterno predstaviti a sve pojave podatka x a.1.3 funkcija c a.1.7 funkcija e c.2 funkcija f.3.1 funkcija slicing po x f.3.2 funkcija f d Projektni repozitorijum objedinjavanje potencijalni objekat X X Y podatak x function a.1.3 Z function a.1.7 V function c.2 function f.3.1 W function f.3.2 kandidati za objekte
Izmene na funkcionalnom nivou Zamenjivanje komponenata i/ili interfejsa sistema Rekonstrukcija GUI-ja Rekonstrukcija interfejsa ka ostalim sistemima Izmene na funkcionalnom nivou obično zahtevaju modernizaciju tehnologija Veći vremenski interval između tehnologija povećava verovatnoću neuspeha izmene Modernizacija tehnologija treba biti inkrementalna (npr. COBOL – C - Java a ne COBOL - Java) Rekonstrukcija koda (4)
Najniži nivo potkovice Velike rekonstrukcije mogu znatno izmeniti kod Programeri koji su održavali stari sistem mogu prestati da prepoznaju kod Dokumentacija i komentari se moraju paralelno menjati sa kodom Restruktuirani kod može biti manje čitljiv od početnog Mane rekonstrukcije koda
REKONSTRUKCIJA ARHITEKTURE SOFTVERA • Sistem: kolekcija arhitekturnih komponenata • Arhitektura definiše: globalnu strukturu, protokole komunikacije, dodela funkcionalnosti delovima, fizička distribucija, skaliranje i performanse • Arhitekturni pogledi: • funkcionalni • strukturni • po slojevima • sloj sprege sa korisnikom • sloj poslovnih pravila • perzistentni sloj (sloj podataka) • ...
Obnavljanje dizajna Kompleksnije od rekonstrukcije koda Teško automatizovan proces Za razliku od reverse engineering-a na nivou koda Zastareli programski jezici ne podržavaju organizaciju koda – mehanizme enkapsulacije, komponentizacije Postoji implicitna organizacija dobijena poznavanjem koda Rekonstrukcija arhitekture
Originalni dizajn ne mora biti loš ali može postati takav evolucijom Rekonstrukcija zahteva proces “potkovice” na sva tri nivoa Obnovljena arhitektura pomaže i boljoj komunikaciji razvojnog tima sa korisnicima/naručiocima Potpuno upoznavanje sa sistemom (poslovna pravila i slično) Rekonstrukcija arhitekture (2)
Primer: alat Dali (SEI CMU) • Poluautomatski metod • Ekstrakcija različitih arhitekturnih pogleda • statički dinamički • popunjavanje repozitorijuma • Spajanje pogleda u složenije poglede
Baza podataka je često „usko grlo“ u sistemu Rizično je modernizovati celu bazu odjednom Moguće je koristiti dve baze odjednom Pri čemu se koristi adapter pri pristupu bazi Modernizacija korišćenjem dve baze odjednom Nova baza podataka čuva deo podataka koji se unose iz sistema na osnovu adaptera ugrađenog u sam pristup baze (Data access layer) Vremenom, cela baza se modernizuje i data access layer više nije potreban Migracija baze podataka
Extraction, transformation and loading (ETL) Standalone softver Uzimanje podataka iz zastarele baze Transformacije na osnovu definisanih pravila ili kombinovanjem sa drugim podacima Učitavanje novih podataka u modernizovanu bazu ili bazu koja je već postojala Pored migracije podataka, koriste se i u druge svrhe Migracija baze podataka (2)
OBLAGANJE NASLEĐENOG SOFTVERA • Oblaganje (wrapping) softvera jeftinija i brža alternativa kompletnoj zameni, dobija se više vremena za postepenu zamenu • Neki ili svi spoljni interfejsi aplikacije prekrivaju se slojem softvera koji prevodi ili modifikuje interfejsne informacije => drugi protokol, format podataka ili skup komandi
OBLAGANJE NASLEĐENOG SOFTVERA(2) • aplikativni omotač: stari sistem se ne menja • omotač podataka: neposredan pristup nasleđenim podacima • prezentacioni omotač: samo drugačija prezentacija istih podataka
ZAKLJUČAK • Od kvaliteta koda zavisi koju strategiju reinženjerstva primeniti: • za kvalitetan kod, delovi mogu biti ponovo upotrebljeni pakovanjem u komponente • u suprotnom, kod se eliminiše nakon što se ekstrahuju poslovna pravila • visoko spregnuti sistemi => inkrementalna zamena jako teška. Rešenje: oblaganje • oblaganje korisno i u povezivanju izmenjenih i starih delova sistema kod inkrementalnog reinženjerstva
IZVORI INFORMACIJA: ISTRAŽIVAČKI • Centar za reinženjering Instituta za softversko inženjerstvo, SAD http://www.sei.cmu.edu/reengineering • Centar za održavanje softvera, Univ. of Durham, VB http://www.dur.ac.uk/~dcs0www1/csm • Grupa za reverzni inženjering, Georgia Tech http://www.cc.gatech.edu/reverse • Microsoft Reserach Grupa za programsku analizu, http://www.research.microsoft.com/research/analysis/ • IEEE TCSE, Komitet za reverzno inženjerstvo, SAD http://www.tcse.org/revengr/ • Bibliografija o reinženjerstvu, Univerzitet u Štutgartu, Nemačka http://www.informatik.uni-stuttgart.de/ifi/ps/reengineering/reengineering.html
IZVORI INFORMACIJA: KOMERCIJALNI • Blair and Associates http://www.baiengineering.com/reeng.html • CADRE http://www.cadre.com/ • Imagix http://www.imagix.com/ • Innovative Software http://www.isg.de/ • IntegriSoft http://www.hindsight.com/ • Leverage Technologies http://stout.levtech.com/ • McCabe & Associates http://www.mccabe.com/ • Reasoning Systems http://www.reasoning.com/ • Software Emancipation http://www.setech.com/ • TakeFive Software http://www.takefive.com/ • Viasoft http://www.viasoft.com/ • Verilog http://www.verilogusa.com/ • Xinotech http://www.xinotech.com/