Održavanje softvera je proces kojim se računalni program mijenja ili ažurira nakon što je objavljen. Iako izraz “održavanje” može podrazumijevati popravke i ispravke grešaka, samo je dio ovog procesa namijenjen za tu svrhu, koji se naziva “popravak”. Mnogo se održavanja softvera koristi za “prilagodljivi” rad koji osigurava da program i dalje bude učinkovit i upotrebljiv u promjenjivim okruženjima, kao i “savršene” procedure koje poboljšavaju funkcionalnost. “Preventivno” održavanje koristi se za olakšavanje procesa u budućnosti, pružanjem dodatne dokumentacije i alata kako bi se kasnija ažuriranja lakše razvijala.
Velik dio održavanja softvera provodi se kroz zakrpe koje stvara programer i zatim ih objavljuje javnosti. Te datoteke instalira korisnik računala i one mijenjaju funkcionalnost i dizajn osnovnog programa na sustavu. To se radi nakon objavljivanja programa, iako bi rani razvoj softvera trebao uzeti u obzir održavanje.
Korektivno održavanje softvera je proces razvoja promjena programa koji popravljaju greške ili probleme. Ovo ne dodaje nikakve nove značajke, osim ako već postoje, ali se ne mogu koristiti zbog greške u programiranju. Samo otprilike jedna četvrtina cjelokupnog održavanja softvera koristi se za ispravljanje problema, no korisnici programa često ga smatraju najvažnijim elementom.
Velik dio održavanja softvera naziva se “prilagodljivim”, što se koristi za prilagodbu programa za funkcioniranje u novom okruženju. Programi su obično dizajnirani i razvijeni za funkcioniranje na određenim operativnim sustavima (OS). Iako neki softver može funkcionirati na novijim verzijama, postoji mnogo programa koji to ne mogu učiniti. Prilagodljiva zakrpa za program mogla bi promijeniti kod kako bi mu omogućila ispravno funkcioniranje na novom sustavu, održavajući ga aktualnim i upotrebljivim.
Savršeno održavanje softvera koristi se za dodavanje novih značajki proizvodu i za izmjene koje mogu izravno utjecati na korisnika. Tvrtka bi mogla izdati program za obradu teksta, na primjer, koji uključuje nekoliko značajki provjere pravopisa. Ako izdaju zakrpu koja ažurira rječnik u programu i stvara dodatne opcije za ispravljanje pogrešaka, onda bi se to smatralo savršenim održavanjem. Te su nadogradnje obično prilično male, jer velike revizije obično zahtijevaju izdavanje nove verzije ili softverskog “klijenta”.
Programeri također mogu raditi na preventivnom održavanju softvera, koji se koristi za još jednostavnije buduće promjene. Nakon razvoja, tvrtka može shvatiti da postoji potencijal za bug koji se još nije razvio. Možda će objaviti zakrpu koja rješava ovaj problem prije nego što on zapravo postane problem. Dodatna dokumentacija i čišćenje koda također se mogu izvesti kako bi se buduće održavanje učinilo lakšim ili nepotrebnim.