Evolucija softvera
description
Transcript of Evolucija softvera
Evolucija softveraEvolucija softvera
Procena troškovaProcena troškova
Predikcija izmenaPredikcija izmena
Analiza uticajaAnaliza uticaja
SadržajSadržaj
UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja
Održavanje softveraOdržavanje softvera
Održavanje softvera se definiše kao: Održavanje softvera se definiše kao: ““Promene koje trebaPromene koje treba izvršiti na računarskom izvršiti na računarskom programu nakon što je on isporučen programu nakon što je on isporučen korisniku.korisniku.””
Održavanje softvera obuhvataOdržavanje softvera obuhvata::– Održavanje ispravnosti (Održavanje ispravnosti (engl. engl. Corrective Corrective
maintenancemaintenance))– Adaptivno održavanje (Adaptivno održavanje (engl. engl. Adaptive Adaptive
maintenancemaintenance))– Održavanje savršenosti (Održavanje savršenosti (engl. engl. Perfective Perfective
maintenancemaintenance))– Povećanja (Povećanja (engl.engl.EnhancementsEnhancements))
Svaka nova promena utiče na ukupne troškove Svaka nova promena utiče na ukupne troškove projektaprojekta
SadržajSadržaj
UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja
Procena troškovaProcena troškova (1) (1)
Procene troškova se bazirana na jednostavnoj Procene troškova se bazirana na jednostavnoj pretpostavci da što više posla mora da se uradi, veći će pretpostavci da što više posla mora da se uradi, veći će biti troškovibiti troškovi
Troškovi održavanja predstavljaju značajan deo ukupnih Troškovi održavanja predstavljaju značajan deo ukupnih troškova tokom celokupnog životnog veka projektatroškova tokom celokupnog životnog veka projekta
Obično su veći od troškova razvoja projekta:Obično su veći od troškova razvoja projekta:– Sa faktoromSa faktorom 2 2 dodo 100 100 zavisno od aplikacije zavisno od aplikacije
Uvećavaju se tokom odUvećavaju se tokom odrržavanja softvera:žavanja softvera:– Održavanje kvari strukturu softvera čineći dalje Održavanje kvari strukturu softvera čineći dalje
održavanje još težimodržavanje još težim– Ovo se potvrđuje Lemanovim zakonima evolucije softvera:Ovo se potvrđuje Lemanovim zakonima evolucije softvera:
Uvećanje kompleksnostiUvećanje kompleksnosti Nastavak rastaNastavak rasta Smanjenje kvalitetaSmanjenje kvaliteta
Procena troškova Procena troškova (2)(2)
Spoljni faktori koji utiču na troškove održavanja:Spoljni faktori koji utiču na troškove održavanja:– Stabilnost timaStabilnost tima
Troškovi održavanja su smanjeni ako isti tim programera Troškovi održavanja su smanjeni ako isti tim programera održava softver duže vremeodržava softver duže vreme
– Ugovorena odgovornostUgovorena odgovornost Ako programeri koji razvijaju softver nemaju ugovorenu Ako programeri koji razvijaju softver nemaju ugovorenu
odgovornost za održavanjodgovornost za održavanjee, tada ne postoji podsticaj za , tada ne postoji podsticaj za dizajniranje koje se odnosi na buduće promene. Ovo dizajniranje koje se odnosi na buduće promene. Ovo rezultira loše struktuiranim softveromrezultira loše struktuiranim softverom
– Iskustvo timaIskustvo tima Tim za održavanje obično čine neiskusni programeri koji Tim za održavanje obično čine neiskusni programeri koji
imaju ograničen domen znanja, uopšteno i u vezi sa samim imaju ograničen domen znanja, uopšteno i u vezi sa samim softverom koji se održava softverom koji se održava
– Starost i struktura programaStarost i struktura programa Kako programi stare, njihova struktura degradira i postaje Kako programi stare, njihova struktura degradira i postaje
sve teža za razumevanje i modifikacijusve teža za razumevanje i modifikaciju
Procena troškovaProcena troškova (3) (3)
U U 20012001. g.. g., , više od 50 posto softverske više od 50 posto softverske populacije bilo je zaduženo u populacije bilo je zaduženo u modifikovanju postojećih aplikacija, nego modifikovanju postojećih aplikacija, nego na pisanju novihna pisanju novih
Procene troškova održavanja i uloženog Procene troškova održavanja i uloženog napora pomažu da se adekvatno isplanira napora pomažu da se adekvatno isplanira i tim za održavanje softverai tim za održavanje softvera
Troškovi razvoja i održavanja Troškovi razvoja i održavanja softvera u velikim softvera u velikim organizacijama organizacijama
Distribucija uloženog napora Distribucija uloženog napora za održavanjza održavanjee softvera softvera
Modeli procene troškova Modeli procene troškova održavanjaodržavanja (1) (1)
COCOMO COCOMO model održavanja (model održavanja (procena uloženog procena uloženog naporanapora))– (MM)(MM)AMAM = (ACT)(MM)= (ACT)(MM)DEVDEV
(MM)(MM)AMAM : : godišnji napor održavanjagodišnji napor održavanja
(MM)(MM)DEVDEV : : napor razvojanapor razvoja
ACT : ACT : ((engl. engl. annual change trafficannual change traffic)) deo softvera koji je deo softvera koji je podložan promenama tokom jedne godinapodložan promenama tokom jedne godina
Koeficijent troškKoeficijent troškovaova održavanja održavanja//razvojarazvoja– (MM)(MM)MM = (M/D)(MM) = (M/D)(MM)DEVDEV
(MM)(MM)MM : : napor održavanja tokom celog životnog vekanapor održavanja tokom celog životnog veka
(MM)(MM)DEVDEV : : napor razvojanapor razvoja
M/D : M/D : koeficijent troškkoeficijent troškovaova održavanj održavanja/a/razvojrazvojaa
Modeli procene troškova Modeli procene troškova održavanjaodržavanja (2) (2) Koeficijen produktivnosti održavanjaKoeficijen produktivnosti održavanja
– (DSI)(DSI)MOD/YRMOD/YR = (ACT)(DSI) = (ACT)(DSI)DEVDEV
(DSI)(DSI)MOD/YRMOD/YR
– (MM)(MM)AMAM = ------------------= ------------------ (DSI/MM)(DSI/MM)MODMOD
(DSI)(DSI)MOD/YRMOD/YR : : broj izvornih instrukcija modifikovanih tokom broj izvornih instrukcija modifikovanih tokom jedne godinejedne godine
(DSI)(DSI)DEVDEV : : veličina softvera u izvornim instrukcijama veličina softvera u izvornim instrukcijama(MM)(MM)AMAM : : godišnji napor održavanjagodišnji napor održavanja ACT : annual change trafficACT : annual change traffic(DSI/MM)(DSI/MM)MODMOD : : koeficijen produktivnosti održavanja koeficijen produktivnosti održavanja ((broj broj
izvornih instrukcija modifikovanih po uloženom naporu izvornih instrukcija modifikovanih po uloženom naporu jednog programera za jedan mesec)jednog programera za jedan mesec)
SadržajSadržaj
UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja
Predikcija izmenaPredikcija izmena (1) (1)
Zadaci predikcije izmena su da Zadaci predikcije izmena su da predvidi:predvidi:– Koje sistemske izmene će se sa Koje sistemske izmene će se sa
najvećom verovatnoćom ostvaritinajvećom verovatnoćom ostvariti– Koji delovi sistema će najpre da Koji delovi sistema će najpre da
izazovu najveće poteškoće za tim izazovu najveće poteškoće za tim koji održava softverkoji održava softver
– Ukupne troškove održavanja sistema Ukupne troškove održavanja sistema u datom vremenskom perioduu datom vremenskom periodu
Predikcija izmena Predikcija izmena (2)(2)
Ove različite predikcije su usko povezane sa:Ove različite predikcije su usko povezane sa:1.1. Da li da bude ili ne prihvaćena izmena u Da li da bude ili ne prihvaćena izmena u
sistemu zavisi, do određene mere, od stepena sistemu zavisi, do određene mere, od stepena održavanja komponenti sistema koje su održavanja komponenti sistema koje su pogođene tom izmenompogođene tom izmenom
2.2. Implementacija izmena sistema često Implementacija izmena sistema često degradira strukturu sistema i time smanjuje degradira strukturu sistema i time smanjuje njegov stepene održavanjanjegov stepene održavanja
3.3. Troškovi održavanja zavise od broja promena, Troškovi održavanja zavise od broja promena, a cene implementacija izmena zavise od a cene implementacija izmena zavise od stepena održavanja komponenti sistemastepena održavanja komponenti sistema
Sistem i njegova Sistem i njegova okolinaokolina Predikcija izmena zahteva Predikcija izmena zahteva
razumevanje odnosa između sistema i razumevanje odnosa između sistema i njegove okolinenjegove okoline
Usko povezani sistemi imaju potrebe Usko povezani sistemi imaju potrebe za promenama svaki put kada se i za promenama svaki put kada se i okolina menjaokolina menja
Faktori koji utiču na ovaj odnos su:Faktori koji utiču na ovaj odnos su:– Broj i kompleksnost interfejsa sistemaBroj i kompleksnost interfejsa sistema– Broj nerazdvojivo Broj nerazdvojivo ““halapljivihhalapljivih””
sistemskih zahteva sistemskih zahteva – Biznis procesi u kojima se sistem koristiBiznis procesi u kojima se sistem koristi
TeTehhnike predikcije nike predikcije izmenaizmena Predikcija izmena zahteva tehnPredikcija izmena zahteva tehniike:ke:
– Analiza uticajaAnaliza uticaja Da bi predvidela koje će sve komponente Da bi predvidela koje će sve komponente
sistema biti pogođene izmenomsistema biti pogođene izmenom– Procena uloženog naporaProcena uloženog napora
Da bi predvidela napor koji je potreban za Da bi predvidela napor koji je potreban za modifikaciju ovih komponentimodifikaciju ovih komponenti
Zavisi od kvaliteta ovih komponentiZavisi od kvaliteta ovih komponenti– Procena troškovaProcena troškova
Da bi predvidela ukupne troškove Da bi predvidela ukupne troškove implementacije izmenaimplementacije izmena
Predikcija stepena Predikcija stepena održavanjaodržavanja Istraživanja pokazuju da se najveći deo uloženog Istraživanja pokazuju da se najveći deo uloženog
napora za održavanje odnosi na mali broj napora za održavanje odnosi na mali broj komponenti sistema, koje imaju veliki stepen komponenti sistema, koje imaju veliki stepen kompleksnostikompleksnosti
Predikcija stepena održavanja se može bazirati na Predikcija stepena održavanja se može bazirati na određivanju kompeksnostiodređivanju kompeksnosti
Metrike kompleksnosti:Metrike kompleksnosti:– Kompleksnost kontrolnih strukturaKompleksnost kontrolnih struktura– Kompleksnost struktura podatakaKompleksnost struktura podataka– Veličina procedura i modulaVeličina procedura i modula
Bilo bi korisno zameniti kompleksne komponete Bilo bi korisno zameniti kompleksne komponete jednostavnijimjednostavnijim
Predikcija stepena Predikcija stepena održavanja pomoću održavanja pomoću procesne metrikeprocesne metrike Merenje procesa može se koristiti za procenu Merenje procesa može se koristiti za procenu
stepena održavanjastepena održavanja– Broj zahteva vezanih za održavanje ispravnostiBroj zahteva vezanih za održavanje ispravnosti– Prosečno vreme neophodno za analizu uticajaProsečno vreme neophodno za analizu uticaja– Prosečno vreme potrebno za implementaciju Prosečno vreme potrebno za implementaciju
zahteva za promenomzahteva za promenom– Broj nerešenih zahteva za promenomBroj nerešenih zahteva za promenom
Ako bilo koji ili svi od ovih parametara počnu Ako bilo koji ili svi od ovih parametara počnu da se uvećavaju, to može značiti da dolazi do da se uvećavaju, to može značiti da dolazi do smanjenja stepena održavanjasmanjenja stepena održavanja
Predikcija stepena održavanja Predikcija stepena održavanja određivanjem nivoa kohezije i određivanjem nivoa kohezije i sparivanjasparivanja Dobar dizajn treba da obezbedi lakoDobar dizajn treba da obezbedi lako::
– Razumevanje, promene, ponovnu upotrebu, Razumevanje, promene, ponovnu upotrebu, testiranje, integraciju i kodiranjetestiranje, integraciju i kodiranje
Da bi se sve ovo postiglo neophodno je Da bi se sve ovo postiglo neophodno je razmotritirazmotriti:: – KohezijuKoheziju jedinice, modula ili komponente koja jedinice, modula ili komponente koja
se definiše kao se definiše kao ““stepen povezanostistepen povezanosti”” unutar unutar date jedinicedate jedinice,, modula modula ili komponenteili komponente
– SparivanjeSparivanje koje se definiše kao koje se definiše kao ““stepen stepen međuzavisnostimeđuzavisnosti”” između softverskih jedinica, između softverskih jedinica, modula ili komponentimodula ili komponenti
Nivo Nivo kohezijekohezije
ObjašnjenjeObjašnjenje
1.1. FunkcionalniFunkcionalni Jedinica (modul) obavlja Jedinica (modul) obavlja jednujednu glavnu glavnu aktivnost ili ostvaruje jedan cilj.aktivnost ili ostvaruje jedan cilj.
2.2. SekvencijalniSekvencijalni Jedinica (modul) obavlja jednu glavnu Jedinica (modul) obavlja jednu glavnu aktivnost ili ostvaruje jedan cilj. Može da aktivnost ili ostvaruje jedan cilj. Može da sadrži elemente koji nisu sasvim orijentisani sadrži elemente koji nisu sasvim orijentisani ka ostvarivanju jednog cilja.ka ostvarivanju jednog cilja.
3.3. KomunikacioniKomunikacioni Jedinica (modul) sadrži akcije koje pripadaju Jedinica (modul) sadrži akcije koje pripadaju nekoj kontrolnoj sekvenci, pri čemu su akcije nekoj kontrolnoj sekvenci, pri čemu su akcije usmerene ka istom podatku ili podacima.usmerene ka istom podatku ili podacima.
4.4. ProceduralniProceduralni Jedinica (modul) sadrži akcije koje pripadaju Jedinica (modul) sadrži akcije koje pripadaju nekoj kontrolnoj sekvenci.nekoj kontrolnoj sekvenci.
5.5. TemporalniTemporalni Jedinica (modul) sadrži niz elemenata koji su Jedinica (modul) sadrži niz elemenata koji su vremenski povezani.vremenski povezani.
6.6. LogičkiLogički Jedinica (modul) obavlja niz sličnih zadataka.Jedinica (modul) obavlja niz sličnih zadataka.
Ali su elementi jedinice poprilično nezavisni.Ali su elementi jedinice poprilično nezavisni.
7.7. PodudarniPodudarni Jedinica (modul) obavlja Jedinica (modul) obavlja viševiše nepovezanih nepovezanih zadataka.zadataka.
Što viši to
bolji nivo
KohezijaKohezija
Nivo Nivo sparivanjasparivanja
ObjašnjenjeObjašnjenje
1.1. SadržajniSadržajni Dve jedinice (modula) imaj pristup Dve jedinice (modula) imaj pristup internim (unutrašnjim) ili proceduralnim internim (unutrašnjim) ili proceduralnim podacima druge jedinice.podacima druge jedinice.
2.2. ZajedničkiZajednički Dve jedinice dele zajedničke globalne Dve jedinice dele zajedničke globalne promenljive.promenljive.
3.3. KontrolniKontrolni Jedna jedinica prosleđuje kontrolne Jedna jedinica prosleđuje kontrolne podatke i eksplicitno utiče na logiku druge podatke i eksplicitno utiče na logiku druge jedinice.jedinice.
4.4. MarkiraniMarkirani Jedna jedinica prosleđuje grupu (cele Jedna jedinica prosleđuje grupu (cele strukture ili zapise) podataka drugoj strukture ili zapise) podataka drugoj jedinici. jedinici.
5.5. Na nivou Na nivou podatakapodataka
Jedna jedinica prosleđuje samo neophodne Jedna jedinica prosleđuje samo neophodne podataka drugoj jedinici.podataka drugoj jedinici.
6.6. Nema sparivanjaNema sparivanja Idealan slučaj, ali ne i realIdealan slučaj, ali ne i realaan u praksi.n u praksi.
Što niži to
bolji nivo
SparivanjeSparivanje
Kohezija
Spariv
anje
Visok nivo
Nizak nivo
Jaka
Slaba Labavo
Tesno
Metrike kohezije i Metrike kohezije i sparivanjasparivanja
•Chidamber and Kemerer (C-K) OO metrike:
•Weighted Methods per class (WMC)•Depth of Inheritance Tree (DIT)•Number of Children (NOC)•Coupling Between Object Classes (CBO)•Response for a Class (RFC)•Lack of Cohesion in Methods (LCOM)
•Bieman and Ott metrika:•Using Program and Data Slices
SadržajSadržaj
UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja
Analiza uticaja (1)Analiza uticaja (1)
Analiza uticaja Analiza uticaja jeje postupak koji predviđa i određuje postupak koji predviđa i određuje delove softverskog sistema koji mogu biti pogođeni delove softverskog sistema koji mogu biti pogođeni promenama tog sistemapromenama tog sistema
Skup promena: Skup promena: Delovi softverskog sistema koji će biti Delovi softverskog sistema koji će biti promenjenipromenjeni
Skup uticajaSkup uticaja:: Delovi softverskog sitema koji će biti Delovi softverskog sitema koji će biti pogođeni tim novim promenamapogođeni tim novim promenama
Dva tipa analize:Dva tipa analize:– StatičkaStatička– DinamičkaDinamička
Skup promena Analiza uticaja Skup uticaja
Analiza uticaja (2)Analiza uticaja (2)
Analiza uticaja je sistematski pristup Analiza uticaja je sistematski pristup shvatanja uticaja izmena u softveru i shvatanja uticaja izmena u softveru i bitan je za:bitan je za:– Identifikaciju delova nad kojima je Identifikaciju delova nad kojima je
neophodno ponovo pokrenuti testoveneophodno ponovo pokrenuti testove– Poboljšanje procenjenog vremena, rada i Poboljšanje procenjenog vremena, rada i
novca za održavanje softveranovca za održavanje softvera– Smanjenje broja potencijalnih grešaka Smanjenje broja potencijalnih grešaka
nastalih usled neodkrivenih uticaja izmenanastalih usled neodkrivenih uticaja izmena– Poboljšanje ukupne efikasnosti održavanja Poboljšanje ukupne efikasnosti održavanja
softverasoftvera
Statička analiza uticajaStatička analiza uticaja
Zasniva se na analizi izvornog kodaZasniva se na analizi izvornog koda Bazirana na predpostavci o svim mogućim Bazirana na predpostavci o svim mogućim
ponašanjima softvera u vreme izvršavanjaponašanjima softvera u vreme izvršavanjaMože se desiti da rezultati neefikasno uključe veliki deoMože se desiti da rezultati neefikasno uključe veliki deosoftverskog sistema u skup uticajasoftverskog sistema u skup uticaja
Zahtevi za promenama
Ispitivanje izvornog koda
Zapisivanje mogućih ponašanja sistema
Skup uticaja
Analiziranje zavisnosti među programaskim entitetima
Dinamička analiza Dinamička analiza uticajauticaja Bazirana na podacima iz vremena izvršavanja softvera Bazirana na podacima iz vremena izvršavanja softvera
i dinamičkim interaktivnim ponašanjima softverskog i dinamičkim interaktivnim ponašanjima softverskog sistema sistema
Zavisi od skupa izvršavanja datog sistemaZavisi od skupa izvršavanja datog sistemaTeži da proizvede preciznije rezultate nego statička Teži da proizvede preciznije rezultate nego statička
analizaanaliza
Izvršavanje softverskog sistema
Skupljanje podataka iz vremena izvršavanja sistema
Zahtevi za promenama
Skup uticaja
Analiziranje zavisnosti među programaskim entitetima iz vremenu izvršavanja
Efekat talasaEfekat talasa
Efekat talasa (Efekat talasa (engl. engl. Ripple effectRipple effect))– Pojava gde promena u jednom delu softverskog Pojava gde promena u jednom delu softverskog
sistema utiče na još bar jednu oblast istog sistema utiče na još bar jednu oblast istog softverskog sistema (direktno ili indirektno)softverskog sistema (direktno ili indirektno)
Promena komponente
Propagacijaizmena
Propagacija izmenePropagacija izmene
Propagacija izmenePropagacija izmene– Javlja se kada pravljenje izmene jednog dela Javlja se kada pravljenje izmene jednog dela
softverskog sistema zahteva da ostali delovi softverskog sistema zahteva da ostali delovi sistema koji zavise od njega takođe budu sistema koji zavise od njega takođe budu izmenjeniizmenjeni
– Ovi zavisni delovi sistema, posle izmene, Ovi zavisni delovi sistema, posle izmene, takođe mogu zahtevati promene u drugim takođe mogu zahtevati promene u drugim delovima softveradelovima softvera
– Na taj način, jedna izmena u jednom delu Na taj način, jedna izmena u jednom delu sistema može dovesti do propagacije sistema može dovesti do propagacije promena kroz čitav softverski sistempromena kroz čitav softverski sistem
Analiza uticaja i Analiza uticaja i propagacija izmenapropagacija izmena Obići komponentu po komponentu sistemaObići komponentu po komponentu sistema Ako je posećena komponenta promenjena, moguće Ako je posećena komponenta promenjena, moguće
je da više ne odgovara kao takva u sistemu:je da više ne odgovara kao takva u sistemu:– Sekundarne izmene moraju biti načinjene u susednim Sekundarne izmene moraju biti načinjene u susednim
komponentama, tj. komponentama sa kojima postoji komponentama, tj. komponentama sa kojima postoji interakcijainterakcija
– Sekundarne izmene mogu pokrenuti nove dodatne Sekundarne izmene mogu pokrenuti nove dodatne izmene:izmene:
““efekat talasaefekat talasa””
Softver nije konzistentan tokom propagacije Softver nije konzistentan tokom propagacije Skrivena propagacijaSkrivena propagacija
– Sama klasa se ne menja, ali propagira promenuSama klasa se ne menja, ali propagira promenu
ReferenceReference
Seminar on Software Cost Estimation, WS 02/03, Arun Mukhija
Software EngineeringSoftware Engineering, , 6th Edition6th Edition, , Ian Ian Sommerville Sommerville
Essentials of Software EngineeringEssentials of Software Engineering, , Frank F. Frank F. Tsui, Tsui, Orlando Orlando KaramKaram
Object-oriented Software Change Dynamic Impact Analysis, Lulu Huang and Lulu Huang and YeongYeong-Tae -Tae SongSong