31
Evolucija softvera Evolucija softvera Procena troškova Procena troškova Predikcija izmena Predikcija izmena Analiza uticaja Analiza uticaja

Evolucija softvera

  • Upload
    denna

  • View
    53

  • Download
    1

Embed Size (px)

DESCRIPTION

Evolucija softvera. Procena troškova Predikcija izmena Analiza uticaja. Sadržaj. Uvod Procena troškova Predikcija izmena Analiza uticaja. Održavanje softvera. - PowerPoint PPT Presentation

Citation preview

Page 1: Evolucija softvera

Evolucija softveraEvolucija softvera

Procena troškovaProcena troškova

Predikcija izmenaPredikcija izmena

Analiza uticajaAnaliza uticaja

Page 2: Evolucija softvera

SadržajSadržaj

UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja

Page 3: Evolucija softvera

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

Page 4: Evolucija softvera

SadržajSadržaj

UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja

Page 5: Evolucija softvera

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

Page 6: Evolucija softvera

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

Page 7: Evolucija softvera

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

Page 8: Evolucija softvera

Troškovi razvoja i održavanja Troškovi razvoja i održavanja softvera u velikim softvera u velikim organizacijama organizacijama

Page 9: Evolucija softvera

Distribucija uloženog napora Distribucija uloženog napora za održavanjza održavanjee softvera softvera

Page 10: Evolucija 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

Page 11: Evolucija softvera

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)

Page 12: Evolucija softvera

SadržajSadržaj

UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja

Page 13: Evolucija softvera

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

Page 14: Evolucija softvera

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

Page 15: Evolucija softvera

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

Page 16: Evolucija softvera

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

Page 17: Evolucija softvera

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

Page 18: Evolucija softvera

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

Page 19: Evolucija softvera

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

Page 20: Evolucija softvera

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

Page 21: Evolucija softvera

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

Page 22: Evolucija softvera

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

Page 23: Evolucija softvera

SadržajSadržaj

UvodUvod Procena troškovaProcena troškova Predikcija izmenaPredikcija izmena Analiza uticajaAnaliza uticaja

Page 24: Evolucija softvera

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

Page 25: Evolucija softvera

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

Page 26: Evolucija softvera

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

Page 27: Evolucija softvera

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

Page 28: Evolucija softvera

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

Page 29: Evolucija softvera

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

Page 30: Evolucija softvera

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

Page 31: Evolucija softvera

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