Softverska trulež je spora degradacija računalnog softvera kao rezultat neuspjeha da se njegovo programiranje održi tekućim s ostatkom računalnog sustava. Izraz “propadanje softvera” pogrešan je naziv, jer softver zapravo ne propada; jednostavno se ne ažurira kako treba, zbog čega radi sporije i čini se kao da posustaje. To obično nije neopoziva promjena, a ponovna instalacija softvera ili učinkovita ažuriranja često mogu riješiti problem. U širem smislu, ova vrsta truljenja klasificira se kao aktivna ili neaktivna, ovisno o korištenju softvera.
Kada softver stari, može doći do fizičkih problema koji se javljaju s njegovim bitovima i kodiranjem. U većini slučajeva, to se ne događa u softverskoj truli. Istodobno, promjene uočene s oba problema mogu biti slične, jer se softver usporava i postaje manje učinkovit. Jedan manji razlog za to je neiskorišteno programiranje, koje ima veću tendenciju truljenja u usporedbi s aktivnijim kodiranjem.
Glavni uzrok truljenja softvera je taj što se softver više ne bavi trenutnim računalnim okruženjem. To može biti rezultat loših ažuriranja koja ne rješavaju takve probleme ili uopće nema ažuriranja. Na primjer, ako postoji program koji u potpunosti ovisi o određenoj brzini takta da bi funkcionirao, tada će ovaj program postati manje učinkovit kako se brzine takta povećavaju s boljim hardverom. Program se ne bi znao nositi s većim brzinama i počelo bi truljenje.
Gniloba na ovaj način obično se može popraviti na jedan od dva načina. Ako softver još uvijek ili djelomično odražava trenutačno računalno okruženje, korisnik bi trebao ponovno instalirati program. Ovo ima mogućnost uklanjanja artefakata i ubrzavanja programa na onaj kakav je bio kada ga je korisnik prvi put dobio. Drugi način popravljanja truljenja softvera je ažuriranje programa, ali to obično može učiniti samo programer, a ažuriranja bi trebala riješiti sve probleme s funkcionalnošću.
Postoje dvije glavne vrste truljenja softvera: neaktivan i aktivan. Neaktivno truljenje odnosi se na probleme sa softverom koji se rijetko otvara ili ažurira, što može uzrokovati pojavu artefakata ili da program više ne odražava ono što korisnici i računala trebaju. Aktivno truljenje događa se kada se program koristi i ažurira, ali ažuriranja ili ne odražavaju promjene potrebne za ispravnu prilagodbu računalnom okruženju ili je izvorni izvorni kod promijenjen toliko da se pojavljuju problemi.