U ovoj lekciji ćemo obrađivati:
Pod pojmom održavanje, kada se govori o softveru, podrazumeva se drugačije značenje u odnosu na bilo koju drugu inženjersku oblast. Naime, mnoge inženjerske oblasti podrazumevaju održavanje kao proces pomoću kojeg se nešto održava u ispravnom radu, putem tekućih popravki. Ključni koncept je pogoršavanje inženjerskih artifakata tokom korišćenja i prolaskom vremena, pa je stoga cilj održavanja, očuvanje funkcionalnosti objekta u skladu sa definisanom i registrovanom funkcionalnošću u vremenu puštanja u rad.
Naravno, ovakav opis održavanja se ne može primeniti na softver zbog toga što se softver ne može “pokvariti” tokom vremena. Ipak, potreba za modifikacijom dela softvera nakon isporuke istog uvek postoji, a takva potreba postoji još od pojave prvih programa. Stav koji je iznet u okviru Lemanovog zakona evolucije govori da su uspešni softverski sistemi “osuđeni” na promene tokom vremena. Preovlađujući udeo promena se odnosi na zadovoljavanje promenljivih korisničkih potreba. Ovo je obuhvaćeno prvim Lemanovim zakonom: “Program koji se koristi u realnom okruženju se mora promeniti ili postaje manje koristan u tom okruženju”. Značajne promene takođe proizilaze iz potrebe za prilagođavanjem softvera da deluje sa spoljnim entitetima, uključujući ljude, organizaciju i veštačke sisteme. Zapravo, softver je “beskrajno savitljiv”, i zato se često posmatra kao deo sistema koji je najlakše promeniti.
Najprostije rečeno, održavanje obuhvata modifikaciju i dopune programa nakon što je pušten u upotrebu. Održavanje ne bi trebalo da uključuje velike promene na arhitekturi sistema. Promene se implementiraju modifikovanjem postojećih komponenti i dodavanjem novih komponenti u sistem.
Postoji više vrsta aktivnosti koje nazivamo održavanjem, ali su tri osnovne:
Slika 1. Vrste održavanja
Sa slike se vidi da najveći deo održavanja, gotovo dve trećine otpada na dodavanje funkcionalnosti i modifikacije, dok manji uzimaju ispravke i prilagođavanja.
Troškovi održavanja su veći od troškova razvoja. Povećavaju se trajanjem softverskog održavanja, odnosno održavanje utiče na softversku strukturu otežavajući dalje održavanje. Timska saradnja i podrška igraju značajnu ulogu u ovom procesu, a sami troškovi održavanja su manji, ako je angažovano isto osoblje kao i na razvoju. Međutim, najčešće su situacije kada je angažovan poseban tim na održavanju, koji uglavnom nema iskustvo, veštinu i znanje razvojnog tima.
Shodno velikom udelu u troškovima poželjno je na vreme uraditi planiranje i predvideti:
Detaljnije analize pokazuju da se najviše vremena i sredstava troši na održavanju i prepravkama relativno malog broja sistemskih komponenti. U tim slučajevima, troškovi zavise od kompleksnosti tih komponenti. Kompleksnost komponente zavisi od:
Poželjno je uraditi procenu broja zahteva za promenama pri održavanju, kao i procenu utrošenog vremena na jednoj prosečnoj promeni na osnovu zahteva. Takođe, značajna stavka je i provedeno vreme i broj izlazaka na teren radi održavanja.
Aktivnosti u održavanju softvera, a koji služe i kao pokazatelji kvaliteta softverskog proizvoda su:
Ostale aktivnosti tokom procesa održavanja su:
Slika 2. Troškovi razvoja softvera
Na slici su prikazani troškovi životnog ciklusa razvoja softvera. Relativno mali deo troškova softverskog razvoja, oko 5%, se troši na kodiranje. Najveći deo troškova otpada na održavanje. (Izvor: Schach 2002 [S. Schach, Object-Oriented and Classical Software Engineering, 5th ed., McGraw-Hill, 2002]).
Održavanje isporučenog softverskog sistema obično zahteva više vremena i sredstava od same realizacije i implementacije sistema. Moguće je angažovanje razvojnog ili posebno formiranog tima na održavanju. Održavanje obuhvata:
Ako održavanje sistema ne može da se sprovede u skladu sa gore navedenim zahtevima, postavlja se pitanje opravdanosti i dalje upotrebljivosti čitavog sistema.