SlideShare uma empresa Scribd logo
1 de 42
Starenje Softvera
Sadržaj
 Proces starenja softvera
 Uzroci za starenje softvera
 Posledice starenja softvera
 Ublažavanje efekta starenja
 Neizbežnost starenja softvera
 lemanovi zakoni starenja softvera
 Literatura
Proces starenja softvera (1)
 Pro g ram i, kao i ljudi, stare . Mi ne m o ž e m o
z austaviti stare nje , ali m o ž e m o da shvatim o
uz ro ke stare nja so ftve ra, pre duz m e m o ko rake
ko ji bi o g ranicili e fe kte o vo g pro ce sa,
privre m e no po pravim o ne ke o d po sle dica ko je
je stare nje uz ro ko valo i pripre m im o se z a dan
kada taj so ftve r više nije o drž iv. Ne sm e m o da
se ko nce ntriše m o sam o na prvu prdstavu
so ftve ra ve i na dug o ro no z dravlje naše gć č
priz vo da.
 D.L. Parnas
Proces starenja softvera (2)
 Da li ima smisla pricati o starenju softvera?
 Softver je matematički proizvod, a matematika se
ne menja vremenom
 Ako je teorema bila tačna pre 200 godina ona će
biti tačna i sutra
 Ako program radi ispravno sada, radiće ispravno i
za 100 godina
 Ako se za 100 godina utvrdi da program ne radi
ispravno, mora biti da nije radio ispravno ni kada
je napisan
 Ovi iskazi su tačni ali ne i relevantni
Proces starenja softvera (3)
 Starenje softvera je neizbežan proces
 U mnogome je sličan procesu starenja ljudi
 Moguće je usporiti proces
 Ponekad, možemo čak da obrnemo proces
starenja (revitalizacija)
Starenje softvera (4)
 Sa vremenom raste značaj starenja softvera
 Rast ekonomske važnosti softvera
 Softver predstavlja veliki deo kapitala mnogih
modernih kompanija
 Mnogi programi su postali oslonac današnjeg
društva
 Zastarevanje programa koči dalji razvoj sistema
koji ih koriste
Starenje softvera (5)
 Autori i vlasnici novog softvera na proces
starenja softvera često gledaju sa prezirom
 Svaki program ima svoj vek
 Starenje softvera nije nov fenomen
Uzroci starenja softvera
 Postoje dva glavna razloga starenja softvera
 Izostanak napredka – starenje kao posledica
nemogućnosti programera da izvrši potrebne
izmene programa kako bi išao u korak sa
vremenom
 Narušavanje dizajna – promene u kodu programa
koje uzrokuju narušavanje originalnih pricipa
dizajna
 Rapidno dovode do degradacije vrednosti
softvera
Izostanaknapretka (1)
 Potreba za konstantnim izmenama programa
 Dodavanje novih funkcionalnosti
 Praćenje trendova
 Usled nedostatka izmena
 Smanjuje se konkurentnost softvera
 Smanjuje se zadovoljstvo korisnika
 Korisnik prelazi na novo rešenje
Izostanaknapretka (2)
 Odličan softver napravljen šezdesetih godina
će raditi savršeno dobro i danas ali ga niko
neće koristiti
 Taj softver je zastareo iako ga niko nije
menjao
 Zapravo on je i zastareo jer ga niko nije
menjao
Narušavanje dizajna (1)
 Iako neophodne, izmene softvera mogu
dovesti do starenja
 Svaka izmena zahteva izmenu dokumentacije
 Ovaj korak se često preskače u praksi
 Dokumentacija vremenom postaje netačna
 Izmene u kodu napravljene od strane ljudi koji
u potpunosti ne razumeju koncept uglavnom
dovode do degradacije strukture programa
Narušavanje dizajna (2)
 Nakon više ovakvih izmena skoro je
nemoguće razumeti koncept
 Programeri koji su dizajnirali i razvili originalni
koncept ne razumeju modifikovani proizvod
 Oni koji su pravili izmene i dalje ne razumeju
koncept
 Kod programa postaje “nečitljiv”
 Nove izmene dovode do pojavljivanja novih
grešaka (eng. bugs)
 Povećava se cena održavanja softvera
Posledice starenja softvera
 Neodrživost
 Gubitak performansi
 Smanjena pouzdanost
Neodrživost (1)
 Dok stari, softver postaje sve veći
 Najlakši način da se doda nova funkcionalnost
u već postojeći softver je dodavanje novog
koda
Neodrživost (2)
 Modifikacije postaju sve teže sa povećanjem
veličine softvera
 Raste veličina koda koji treba promeniti
 Sve je teze naći delove koje treba promeniti
 Kao rezultat dešava se to da se korisnik
prebaci na mlađi softver u potrazi za novim
funkcijama
Gubitakperformansi (1)
 Kako se veličina programa povećava on
zahteva više memorije za rad
 Brzina izvršavanja opada zbog lošeg dizajna
dobijenog dugoročnim ad-hoc održavanjem,
što podrazumeva brza rešenja koja nisu
obavezno i najoptimalnija
Gubitakperformansi (2)
 Korisnici moraju da poboljšaju svoje računare
kako bi od programa dobili prihvatljiv odziv
 Mlađi softver će raditi brže i koristiti manje
memorije
Smanjena pouzdanost
 Održavanje softvera dovodi do stvaranja
grešaka (eng. bugs)
 Jedna ispravljena greška može dovesti do
stvaranja više novih grešaka
 Može doći do narušavanja postojećih
funkcionalnosti
 Pokušaji smanjivanja broja grešaka mogu da
izazovu kontra efekat
Ublažavanje efekta starenja (1)
 Neiskusni programeri se polakome posle
prvog uspešnog kompajliranja ili
demonstracije
 Iskusni programeri znaju da je to tek
početak…
 Svaki ozbiljan proizvod zahteva opsežno
testiranje i rigorozne recenzije
Ublažavanje efekta starenja (2)
 U razvoju softvera najviše značaja se pridaje
izbacivanju prve verzije softvera
 Stvari treba posmatrati iz ugla kada softver
zastari, tj. mnogo posle izbacivanja prve
verzije
 Ublažavanje efekta starenja softvera zahteva
mnogo truda i iskustva
Mere prevencije
 Pametno projektovanje
 Pisanje dokumentacije
 Traženje drugog mišljenja (recenzija)
Pametno projektovanje (1)
 Softver treba projektovati tako da u budućnosti
bude pogodan za izmene (eng. design for
change)
 Ovaj princip je poznat i kao:
 Skrivanje informacija
 Apstrakcija
 Odvajanje kritičnih delova
 Skrivanje podataka
 Objektno orijentisani pristup
Pametno projektovanje (2)
 Da bi se primenio ovaj princip treba prepoznati
koje promene će se verovatno zahtevati u toku
životnog veka programa.
 Kako stvarne promene ne možemo da
predvidimo, naša predviđanja delimo u klase:
 Promene u korisničkom interfejsu
 Promene u opisu podataka
 Promene vezane za prelazak na novi operativni
sistem
Pametno projektovanje (3)
 Pošto je nemoguće napisati takav kod da će
svaka izmena biti laka, najvažnije je da:
 Procenimo verovatnoću svake klase (tipa)
promene
 Organizujemo softver tako da delove za koje je
verovatno da će se menjati ograničimo na mali
deo koda
 Problem: udžbenici uglavnom ne objašnjavaju
proces predviđanja učestalosti promena za
razne klase promena
Pametno projektovanje (4)
Ignorisanje loših uzora
 Programeri su nestrpljivi i željni da naprave
prvu radnu verziju softvera
 Dizajn koji je produkt ovog principa je drugačiji
od “prirodnog” rešenja
 Sklonost ka imitiranju postojećih (loših)
rešenja
 Mešanje principa dizajna sa programskim
jezicima
 Mnogi ljudi koji pišu programe nikad nisu imali
obuku iz razvoja softvera
Pisanje dokumentacije
 Inženjeri često ne dokumentuju glavne principe i
odluke donete tokom dizajniranja softvera
 Kada dokumentacija postoji, ona je često
 Loše organizovana
 Nedosledna
 Nepotpuna
 Pisana od strane ljudi koji nisu razimeli dati sistem
 Dokumentaciju ili ne koriste oni koji vrše dalje
izmene u sistemu ili, još gore, dokumentacija nije
ni napisana jer je usporavala prvi izlazak
programa na tržiste
Traženje drugog mišljenja (1)
 U razvoju softvera, kao i u medicini, traženje
drugog mišljenja je neophodno
 U procesu dizajniranja zgrada, brodova,
vazduhoplovnih prevoznih sredstava, postoji
uvek serija dokumentacije nad kojom se
obavezno vrši precizna recenzija od strane
drugih profesionalaca iz te oblasti
 Svako rešenje mora da bude provereno od
strane osobe koja je zadužena za dugotrajnost
proizvoda
Traženje drugog mišljenja (2)
 Ovaj princip se često ne poštuje u softverskoj
industriji
 Mnogi programeri nisu imali nikakvu
profesionalnu obuku
 Teško je naći ljude unutar firme koji mogu na
kvalitetan nacin da izvrše recenziju, a skupo je
unajmljivati ljude van firme
 Zadati rokovi obmanjuju programere pa im se čini
da nema nikad vremena za recenziju
 Mnogi programeri ne žele da se nad njihovim
radom vrši recenzija
Neizbežnost starenja softvera
 Naša sposobnost da napravimo softver koji je
lako menjati zavisi od naše sposobnosti da
predvidimo budućnost
 Napraviće se izmene koje će ugroziti
originalne predpostavke na kojima se bazira
rad sistema
 Dokumentacija nikad neće biti savršena
 Recenzenti će sigurno prevideti neke mane
 Preventivne mere se sigurno isplate ali svako
ko misli da će uspeti da eliminiše starenje
softvera nije u pravu
Softverska gerijatrija
 Retroaktivna dokumentacija – poboljšanje
kvaliteta dokumentacije starog softvera
 Retroaktivna modularizacija – promena
strukture tako da svaki modul sakriva delove
dizajna koje će se verovatno menjati
 Amputacija – ako je neki deo koda mnogo puta
(nepromišljeno) modifikovan, nije vredan
čuvanja
 Restruktuiranje – identifikovati i eliminisati
redundantne komponente i nepotrebne
zavisnosti
Lemanovi zakoni evolucije
 Dinamika evolucije programa je studija o
procesima promene softverskih sistema
 Posle značajnih empirijskih studija, Lehman i
Beladi su predložili niz “zakona” koji se mogu
primeniti na sve softverske sisteme koji
evoluiraju
Lemanovi zakoni evolucije
 Bazirani su na evoluciji IBM 360 mainframe
OS tokom perioda od 30 godina.
 Odnose se na sisteme E tipa [leh80b] -
softverski sistemi koji rešavaju neki problem ili
implemetiraju kompijutersku aplikaciju u
realnom svetu
Lemanovi zakoni evolucije
 1. Zakon: Kontinualno menjanje
 2. Zakon: Pove anje kompleksnostić
 3. Zakon: Samoregulacija
 4. Zakon: O uvanje organizacione stabilnostič
 5. Zakon: O uvanje upoznatostič
 6. Zakon: Kontinualni rast
 7. Zakon: Pad kvaliteta
 8. Zakon: Povratna sprega
Lemanovi zakoni evolucije
 1. Kontinualno menjanje: Softver E tipa koji se
koristi u realnom okruženju je nophodno
kontinualno adaptirati. U suprotnom postaje
neispravan
 Softverski sistem zavisi od uticaja okruženja
 Analogija sa živim organizmom i biološkim
okruženjem
 Kao rezultat napredka (evolucije) okruženja,
povećava se neusaglašenost izmedju sistema
i okruženja u kome radi
Lemanovi zakoni evolucije
 2. Pove anje kompleksnosti:ć Ukoliko se ne
preduzmu odgovarajuće mere, evolucija
softverskog sistema dovodi do povećanja njegove
kompleksnosti
 Razlozi:
 Nad sistemom se stalno vrše male promene kao bi se
prilagodio okruženju
 Svaka promena ima smisla sama za sebe ali globalno
ona uzrokuju povećanje kompleksnosti
 Ovim se povećava entropija (neuređenost) sistema
 Stvara potrebu za optimizacijom i reorganizacijom
(refactoring) koda
Lemanovi zakoni evolucije
 3. Samoregulacija: Evolucija softverskog
sistema je samo-regulativni proces
 Atributi sistema kao što su veličina, vreme
između dve radne verzije i broj prijavljenih
grešaka su približno isti za svaku radnu verziju
istog softvera.
 Vrednosti ovi atributa zavise od tima koji se bavi
unapređenjem softvera
 Postavljaju se kao cilj od strane menadžmenta
kompanije
Lemanovi zakoni evolucije
 4. O uvanje organizacione stabilnosti:č Prosečna
efektivna globalna stopa aktivnosti sistema koji
evoluira je nepromenljiva tokom radnog veka
sistema
 Uprkos verovanju, praksa je pokazala da odluke
menadžmenta nisu presudan faktor pri
određivanju napora potrebnog za razvoj softvera
 Najviše uticaja imaju spoljni faktori na koje
menadžment nema uticaja
 Korisnički zahtevi
 Stručnost tima koji razvija/održava softver
 Navedeno u kombinaciji sa uticajima okruženja
dovodi do stabilne stope aktivnosti sistema tokom
vremena
Lemanovi zakoni evolucije
 5. O uvanje upoznatosti:č Tokom aktivnog
radnog veka sistema broj promena nad
svakom radnom verzijom sistema je priblizno
isti
 Jedan od faktora koji uticu na progres razvoja
softvera je upoznatos svih koji u tome
ucestvuju sa krajnjim ciljem razvoja datog
softvera.
Lemanovi zakoni evolucije
 6. Kontinualni rast: Funkcionalni aspekt
softvera mora kontinualno da se povećava
(poboljšava) u cilju održanja stope
zadovoljstva korisnika
 Proizilazi iz prvog zakona (Kontinualno
menjanje), s tim što se odnosi na funkcionalne
zahteve
Lemanovi zakoni evolucije
 7. Pad kvaliteta: Kvalitet programa E tipa će
opasti ukoliko se rigoroznim održavanjem ne
adaptira promenljivom operacionom okruženju
 Proizilazi iz prvog zakona (Kontinualno
menjanje), sa fokusom na pouzdanost sistema
 Ranije uvedene ograničenja ne moraju više
biti validna
 Objasnjava pojavu kada posle dugotrajnog
zadovoljavajućeg rada softver odjednom ispolji
neočekivano, ranije nikad viđeno ponašanje
Lemanovi zakoni evolucije
 8. Povratna sprega: Proces programiranja
sistema E tipa obrazuje višeslojni sistem sa
povratnom spregom i petljama i mora se
tretirati kao takav da bi mogao uspešno da se
modifikuje i unapredjuje
Literatura
 Software Aging, David Lorge Pamas
 Laws of Software Evolution Revisited, M M
Lehman

Mais conteúdo relacionado

Destaque

Programiranje je samo pola price
Programiranje je samo pola priceProgramiranje je samo pola price
Programiranje je samo pola priceMerlin Rebrović
 
Wordpress - Sistem za upravljanje sadržajem na webu
Wordpress - Sistem za upravljanje sadržajem na webuWordpress - Sistem za upravljanje sadržajem na webu
Wordpress - Sistem za upravljanje sadržajem na webuMilan Stošić
 
Javascript #3 - StartIt centar Indjija
Javascript #3 - StartIt centar IndjijaJavascript #3 - StartIt centar Indjija
Javascript #3 - StartIt centar IndjijaDušan Stanković
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With YouDalibor Gogic
 
Javascript #4 - Startit Centar Indjija
Javascript #4 - Startit Centar IndjijaJavascript #4 - Startit Centar Indjija
Javascript #4 - Startit Centar IndjijaDušan Stanković
 
Javascript #2 - StartIt centar Indjija
Javascript #2 - StartIt centar IndjijaJavascript #2 - StartIt centar Indjija
Javascript #2 - StartIt centar IndjijaDušan Stanković
 
Responsive Web Design tehnike u WordPress-u
Responsive Web Design tehnike u WordPress-uResponsive Web Design tehnike u WordPress-u
Responsive Web Design tehnike u WordPress-uIgor Benić
 
Profiling php5 to php7
Profiling php5 to php7Profiling php5 to php7
Profiling php5 to php7julien pauli
 
Instalacija i podešavanje word press bloga
Instalacija i podešavanje word press blogaInstalacija i podešavanje word press bloga
Instalacija i podešavanje word press blogaKruno Klukovic
 
WordPress za početnike
WordPress za početnikeWordPress za početnike
WordPress za početnikeDejanVesic
 
Javascript #1 - StartIt centar Indjija
Javascript #1 - StartIt centar IndjijaJavascript #1 - StartIt centar Indjija
Javascript #1 - StartIt centar IndjijaDušan Stanković
 
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonAmar Kalabić
 

Destaque (14)

Programiranje je samo pola price
Programiranje je samo pola priceProgramiranje je samo pola price
Programiranje je samo pola price
 
CONS Vintage bulldozers-3
CONS Vintage bulldozers-3CONS Vintage bulldozers-3
CONS Vintage bulldozers-3
 
Biodivercidadkaren
BiodivercidadkarenBiodivercidadkaren
Biodivercidadkaren
 
Wordpress - Sistem za upravljanje sadržajem na webu
Wordpress - Sistem za upravljanje sadržajem na webuWordpress - Sistem za upravljanje sadržajem na webu
Wordpress - Sistem za upravljanje sadržajem na webu
 
Javascript #3 - StartIt centar Indjija
Javascript #3 - StartIt centar IndjijaJavascript #3 - StartIt centar Indjija
Javascript #3 - StartIt centar Indjija
 
May The Nodejs Be With You
May The Nodejs Be With YouMay The Nodejs Be With You
May The Nodejs Be With You
 
Javascript #4 - Startit Centar Indjija
Javascript #4 - Startit Centar IndjijaJavascript #4 - Startit Centar Indjija
Javascript #4 - Startit Centar Indjija
 
Javascript #2 - StartIt centar Indjija
Javascript #2 - StartIt centar IndjijaJavascript #2 - StartIt centar Indjija
Javascript #2 - StartIt centar Indjija
 
Responsive Web Design tehnike u WordPress-u
Responsive Web Design tehnike u WordPress-uResponsive Web Design tehnike u WordPress-u
Responsive Web Design tehnike u WordPress-u
 
Profiling php5 to php7
Profiling php5 to php7Profiling php5 to php7
Profiling php5 to php7
 
Instalacija i podešavanje word press bloga
Instalacija i podešavanje word press blogaInstalacija i podešavanje word press bloga
Instalacija i podešavanje word press bloga
 
WordPress za početnike
WordPress za početnikeWordPress za početnike
WordPress za početnike
 
Javascript #1 - StartIt centar Indjija
Javascript #1 - StartIt centar IndjijaJavascript #1 - StartIt centar Indjija
Javascript #1 - StartIt centar Indjija
 
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
 

Semelhante a Starenje softvera

Semelhante a Starenje softvera (20)

12 predavanja informaticke tehnologije.pdf
12 predavanja   informaticke tehnologije.pdf12 predavanja   informaticke tehnologije.pdf
12 predavanja informaticke tehnologije.pdf
 
PROGRAMIRANJE-C-IIRAZRED.pdf
PROGRAMIRANJE-C-IIRAZRED.pdfPROGRAMIRANJE-C-IIRAZRED.pdf
PROGRAMIRANJE-C-IIRAZRED.pdf
 
IT6-L3.pptx
IT6-L3.pptxIT6-L3.pptx
IT6-L3.pptx
 
ICK7-L2.pptx
ICK7-L2.pptxICK7-L2.pptx
ICK7-L2.pptx
 
IT10-L5.pptx
IT10-L5.pptxIT10-L5.pptx
IT10-L5.pptx
 
ICK2-L2.pptx
ICK2-L2.pptxICK2-L2.pptx
ICK2-L2.pptx
 
Seminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardverSeminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardver
 
The 5 Elements of User Experience Design.pdf
The 5 Elements of User Experience Design.pdfThe 5 Elements of User Experience Design.pdf
The 5 Elements of User Experience Design.pdf
 
P2_Modeli_Procesa.pdf
P2_Modeli_Procesa.pdfP2_Modeli_Procesa.pdf
P2_Modeli_Procesa.pdf
 
Projektovanje i implementacija SPPR
Projektovanje i implementacija SPPRProjektovanje i implementacija SPPR
Projektovanje i implementacija SPPR
 
Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...
Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...
Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...
 
IT6-L4.pptx
IT6-L4.pptxIT6-L4.pptx
IT6-L4.pptx
 
TeamViewer 5.0
TeamViewer 5.0TeamViewer 5.0
TeamViewer 5.0
 
ICK7-L3.pptx
ICK7-L3.pptxICK7-L3.pptx
ICK7-L3.pptx
 
21.čas.operativni sistemi
21.čas.operativni sistemi21.čas.operativni sistemi
21.čas.operativni sistemi
 
Evaluation of a user interface for www.sportsdirect.com
Evaluation of a user interface for www.sportsdirect.comEvaluation of a user interface for www.sportsdirect.com
Evaluation of a user interface for www.sportsdirect.com
 
IT7-L4.pptx
IT7-L4.pptxIT7-L4.pptx
IT7-L4.pptx
 
IT7-L3.pptx
IT7-L3.pptxIT7-L3.pptx
IT7-L3.pptx
 
ICK5-L5.pptx
ICK5-L5.pptxICK5-L5.pptx
ICK5-L5.pptx
 
IT6-L5.pptx
IT6-L5.pptxIT6-L5.pptx
IT6-L5.pptx
 

Starenje softvera

  • 2. Sadržaj  Proces starenja softvera  Uzroci za starenje softvera  Posledice starenja softvera  Ublažavanje efekta starenja  Neizbežnost starenja softvera  lemanovi zakoni starenja softvera  Literatura
  • 3. Proces starenja softvera (1)  Pro g ram i, kao i ljudi, stare . Mi ne m o ž e m o z austaviti stare nje , ali m o ž e m o da shvatim o uz ro ke stare nja so ftve ra, pre duz m e m o ko rake ko ji bi o g ranicili e fe kte o vo g pro ce sa, privre m e no po pravim o ne ke o d po sle dica ko je je stare nje uz ro ko valo i pripre m im o se z a dan kada taj so ftve r više nije o drž iv. Ne sm e m o da se ko nce ntriše m o sam o na prvu prdstavu so ftve ra ve i na dug o ro no z dravlje naše gć č priz vo da.  D.L. Parnas
  • 4. Proces starenja softvera (2)  Da li ima smisla pricati o starenju softvera?  Softver je matematički proizvod, a matematika se ne menja vremenom  Ako je teorema bila tačna pre 200 godina ona će biti tačna i sutra  Ako program radi ispravno sada, radiće ispravno i za 100 godina  Ako se za 100 godina utvrdi da program ne radi ispravno, mora biti da nije radio ispravno ni kada je napisan  Ovi iskazi su tačni ali ne i relevantni
  • 5. Proces starenja softvera (3)  Starenje softvera je neizbežan proces  U mnogome je sličan procesu starenja ljudi  Moguće je usporiti proces  Ponekad, možemo čak da obrnemo proces starenja (revitalizacija)
  • 6. Starenje softvera (4)  Sa vremenom raste značaj starenja softvera  Rast ekonomske važnosti softvera  Softver predstavlja veliki deo kapitala mnogih modernih kompanija  Mnogi programi su postali oslonac današnjeg društva  Zastarevanje programa koči dalji razvoj sistema koji ih koriste
  • 7. Starenje softvera (5)  Autori i vlasnici novog softvera na proces starenja softvera često gledaju sa prezirom  Svaki program ima svoj vek  Starenje softvera nije nov fenomen
  • 8. Uzroci starenja softvera  Postoje dva glavna razloga starenja softvera  Izostanak napredka – starenje kao posledica nemogućnosti programera da izvrši potrebne izmene programa kako bi išao u korak sa vremenom  Narušavanje dizajna – promene u kodu programa koje uzrokuju narušavanje originalnih pricipa dizajna  Rapidno dovode do degradacije vrednosti softvera
  • 9. Izostanaknapretka (1)  Potreba za konstantnim izmenama programa  Dodavanje novih funkcionalnosti  Praćenje trendova  Usled nedostatka izmena  Smanjuje se konkurentnost softvera  Smanjuje se zadovoljstvo korisnika  Korisnik prelazi na novo rešenje
  • 10. Izostanaknapretka (2)  Odličan softver napravljen šezdesetih godina će raditi savršeno dobro i danas ali ga niko neće koristiti  Taj softver je zastareo iako ga niko nije menjao  Zapravo on je i zastareo jer ga niko nije menjao
  • 11. Narušavanje dizajna (1)  Iako neophodne, izmene softvera mogu dovesti do starenja  Svaka izmena zahteva izmenu dokumentacije  Ovaj korak se često preskače u praksi  Dokumentacija vremenom postaje netačna  Izmene u kodu napravljene od strane ljudi koji u potpunosti ne razumeju koncept uglavnom dovode do degradacije strukture programa
  • 12. Narušavanje dizajna (2)  Nakon više ovakvih izmena skoro je nemoguće razumeti koncept  Programeri koji su dizajnirali i razvili originalni koncept ne razumeju modifikovani proizvod  Oni koji su pravili izmene i dalje ne razumeju koncept  Kod programa postaje “nečitljiv”  Nove izmene dovode do pojavljivanja novih grešaka (eng. bugs)  Povećava se cena održavanja softvera
  • 13. Posledice starenja softvera  Neodrživost  Gubitak performansi  Smanjena pouzdanost
  • 14. Neodrživost (1)  Dok stari, softver postaje sve veći  Najlakši način da se doda nova funkcionalnost u već postojeći softver je dodavanje novog koda
  • 15. Neodrživost (2)  Modifikacije postaju sve teže sa povećanjem veličine softvera  Raste veličina koda koji treba promeniti  Sve je teze naći delove koje treba promeniti  Kao rezultat dešava se to da se korisnik prebaci na mlađi softver u potrazi za novim funkcijama
  • 16. Gubitakperformansi (1)  Kako se veličina programa povećava on zahteva više memorije za rad  Brzina izvršavanja opada zbog lošeg dizajna dobijenog dugoročnim ad-hoc održavanjem, što podrazumeva brza rešenja koja nisu obavezno i najoptimalnija
  • 17. Gubitakperformansi (2)  Korisnici moraju da poboljšaju svoje računare kako bi od programa dobili prihvatljiv odziv  Mlađi softver će raditi brže i koristiti manje memorije
  • 18. Smanjena pouzdanost  Održavanje softvera dovodi do stvaranja grešaka (eng. bugs)  Jedna ispravljena greška može dovesti do stvaranja više novih grešaka  Može doći do narušavanja postojećih funkcionalnosti  Pokušaji smanjivanja broja grešaka mogu da izazovu kontra efekat
  • 19. Ublažavanje efekta starenja (1)  Neiskusni programeri se polakome posle prvog uspešnog kompajliranja ili demonstracije  Iskusni programeri znaju da je to tek početak…  Svaki ozbiljan proizvod zahteva opsežno testiranje i rigorozne recenzije
  • 20. Ublažavanje efekta starenja (2)  U razvoju softvera najviše značaja se pridaje izbacivanju prve verzije softvera  Stvari treba posmatrati iz ugla kada softver zastari, tj. mnogo posle izbacivanja prve verzije  Ublažavanje efekta starenja softvera zahteva mnogo truda i iskustva
  • 21. Mere prevencije  Pametno projektovanje  Pisanje dokumentacije  Traženje drugog mišljenja (recenzija)
  • 22. Pametno projektovanje (1)  Softver treba projektovati tako da u budućnosti bude pogodan za izmene (eng. design for change)  Ovaj princip je poznat i kao:  Skrivanje informacija  Apstrakcija  Odvajanje kritičnih delova  Skrivanje podataka  Objektno orijentisani pristup
  • 23. Pametno projektovanje (2)  Da bi se primenio ovaj princip treba prepoznati koje promene će se verovatno zahtevati u toku životnog veka programa.  Kako stvarne promene ne možemo da predvidimo, naša predviđanja delimo u klase:  Promene u korisničkom interfejsu  Promene u opisu podataka  Promene vezane za prelazak na novi operativni sistem
  • 24. Pametno projektovanje (3)  Pošto je nemoguće napisati takav kod da će svaka izmena biti laka, najvažnije je da:  Procenimo verovatnoću svake klase (tipa) promene  Organizujemo softver tako da delove za koje je verovatno da će se menjati ograničimo na mali deo koda  Problem: udžbenici uglavnom ne objašnjavaju proces predviđanja učestalosti promena za razne klase promena
  • 25. Pametno projektovanje (4) Ignorisanje loših uzora  Programeri su nestrpljivi i željni da naprave prvu radnu verziju softvera  Dizajn koji je produkt ovog principa je drugačiji od “prirodnog” rešenja  Sklonost ka imitiranju postojećih (loših) rešenja  Mešanje principa dizajna sa programskim jezicima  Mnogi ljudi koji pišu programe nikad nisu imali obuku iz razvoja softvera
  • 26. Pisanje dokumentacije  Inženjeri često ne dokumentuju glavne principe i odluke donete tokom dizajniranja softvera  Kada dokumentacija postoji, ona je često  Loše organizovana  Nedosledna  Nepotpuna  Pisana od strane ljudi koji nisu razimeli dati sistem  Dokumentaciju ili ne koriste oni koji vrše dalje izmene u sistemu ili, još gore, dokumentacija nije ni napisana jer je usporavala prvi izlazak programa na tržiste
  • 27. Traženje drugog mišljenja (1)  U razvoju softvera, kao i u medicini, traženje drugog mišljenja je neophodno  U procesu dizajniranja zgrada, brodova, vazduhoplovnih prevoznih sredstava, postoji uvek serija dokumentacije nad kojom se obavezno vrši precizna recenzija od strane drugih profesionalaca iz te oblasti  Svako rešenje mora da bude provereno od strane osobe koja je zadužena za dugotrajnost proizvoda
  • 28. Traženje drugog mišljenja (2)  Ovaj princip se često ne poštuje u softverskoj industriji  Mnogi programeri nisu imali nikakvu profesionalnu obuku  Teško je naći ljude unutar firme koji mogu na kvalitetan nacin da izvrše recenziju, a skupo je unajmljivati ljude van firme  Zadati rokovi obmanjuju programere pa im se čini da nema nikad vremena za recenziju  Mnogi programeri ne žele da se nad njihovim radom vrši recenzija
  • 29. Neizbežnost starenja softvera  Naša sposobnost da napravimo softver koji je lako menjati zavisi od naše sposobnosti da predvidimo budućnost  Napraviće se izmene koje će ugroziti originalne predpostavke na kojima se bazira rad sistema  Dokumentacija nikad neće biti savršena  Recenzenti će sigurno prevideti neke mane  Preventivne mere se sigurno isplate ali svako ko misli da će uspeti da eliminiše starenje softvera nije u pravu
  • 30. Softverska gerijatrija  Retroaktivna dokumentacija – poboljšanje kvaliteta dokumentacije starog softvera  Retroaktivna modularizacija – promena strukture tako da svaki modul sakriva delove dizajna koje će se verovatno menjati  Amputacija – ako je neki deo koda mnogo puta (nepromišljeno) modifikovan, nije vredan čuvanja  Restruktuiranje – identifikovati i eliminisati redundantne komponente i nepotrebne zavisnosti
  • 31. Lemanovi zakoni evolucije  Dinamika evolucije programa je studija o procesima promene softverskih sistema  Posle značajnih empirijskih studija, Lehman i Beladi su predložili niz “zakona” koji se mogu primeniti na sve softverske sisteme koji evoluiraju
  • 32. Lemanovi zakoni evolucije  Bazirani su na evoluciji IBM 360 mainframe OS tokom perioda od 30 godina.  Odnose se na sisteme E tipa [leh80b] - softverski sistemi koji rešavaju neki problem ili implemetiraju kompijutersku aplikaciju u realnom svetu
  • 33. Lemanovi zakoni evolucije  1. Zakon: Kontinualno menjanje  2. Zakon: Pove anje kompleksnostić  3. Zakon: Samoregulacija  4. Zakon: O uvanje organizacione stabilnostič  5. Zakon: O uvanje upoznatostič  6. Zakon: Kontinualni rast  7. Zakon: Pad kvaliteta  8. Zakon: Povratna sprega
  • 34. Lemanovi zakoni evolucije  1. Kontinualno menjanje: Softver E tipa koji se koristi u realnom okruženju je nophodno kontinualno adaptirati. U suprotnom postaje neispravan  Softverski sistem zavisi od uticaja okruženja  Analogija sa živim organizmom i biološkim okruženjem  Kao rezultat napredka (evolucije) okruženja, povećava se neusaglašenost izmedju sistema i okruženja u kome radi
  • 35. Lemanovi zakoni evolucije  2. Pove anje kompleksnosti:ć Ukoliko se ne preduzmu odgovarajuće mere, evolucija softverskog sistema dovodi do povećanja njegove kompleksnosti  Razlozi:  Nad sistemom se stalno vrše male promene kao bi se prilagodio okruženju  Svaka promena ima smisla sama za sebe ali globalno ona uzrokuju povećanje kompleksnosti  Ovim se povećava entropija (neuređenost) sistema  Stvara potrebu za optimizacijom i reorganizacijom (refactoring) koda
  • 36. Lemanovi zakoni evolucije  3. Samoregulacija: Evolucija softverskog sistema je samo-regulativni proces  Atributi sistema kao što su veličina, vreme između dve radne verzije i broj prijavljenih grešaka su približno isti za svaku radnu verziju istog softvera.  Vrednosti ovi atributa zavise od tima koji se bavi unapređenjem softvera  Postavljaju se kao cilj od strane menadžmenta kompanije
  • 37. Lemanovi zakoni evolucije  4. O uvanje organizacione stabilnosti:č Prosečna efektivna globalna stopa aktivnosti sistema koji evoluira je nepromenljiva tokom radnog veka sistema  Uprkos verovanju, praksa je pokazala da odluke menadžmenta nisu presudan faktor pri određivanju napora potrebnog za razvoj softvera  Najviše uticaja imaju spoljni faktori na koje menadžment nema uticaja  Korisnički zahtevi  Stručnost tima koji razvija/održava softver  Navedeno u kombinaciji sa uticajima okruženja dovodi do stabilne stope aktivnosti sistema tokom vremena
  • 38. Lemanovi zakoni evolucije  5. O uvanje upoznatosti:č Tokom aktivnog radnog veka sistema broj promena nad svakom radnom verzijom sistema je priblizno isti  Jedan od faktora koji uticu na progres razvoja softvera je upoznatos svih koji u tome ucestvuju sa krajnjim ciljem razvoja datog softvera.
  • 39. Lemanovi zakoni evolucije  6. Kontinualni rast: Funkcionalni aspekt softvera mora kontinualno da se povećava (poboljšava) u cilju održanja stope zadovoljstva korisnika  Proizilazi iz prvog zakona (Kontinualno menjanje), s tim što se odnosi na funkcionalne zahteve
  • 40. Lemanovi zakoni evolucije  7. Pad kvaliteta: Kvalitet programa E tipa će opasti ukoliko se rigoroznim održavanjem ne adaptira promenljivom operacionom okruženju  Proizilazi iz prvog zakona (Kontinualno menjanje), sa fokusom na pouzdanost sistema  Ranije uvedene ograničenja ne moraju više biti validna  Objasnjava pojavu kada posle dugotrajnog zadovoljavajućeg rada softver odjednom ispolji neočekivano, ranije nikad viđeno ponašanje
  • 41. Lemanovi zakoni evolucije  8. Povratna sprega: Proces programiranja sistema E tipa obrazuje višeslojni sistem sa povratnom spregom i petljama i mora se tretirati kao takav da bi mogao uspešno da se modifikuje i unapredjuje
  • 42. Literatura  Software Aging, David Lorge Pamas  Laws of Software Evolution Revisited, M M Lehman