Evolucija softvera je proces u kojem komercijalni računalni program zahtijeva kontinuirano ažuriranje, održavanje i poboljšanje tijekom vremena kako bi ostao održiv proizvod. U tom smislu, evoluciju softvera pokreću vanjske poslovne i potrošačke potrebe koje se mijenjaju kako drugi softver i tehnologije napreduju oko njega. Međutim, pokretački čimbenik koji stoji iza evolucije softvera često je interni faktor koji je usredotočen na inženjerski tim koji je proizveo proizvod i tvrtku koja ovisi o njegovu uspjehu za profitabilnost. Imperial College of London, Engleska, prvi je objavio tri temeljna zakona evolucije softvera početkom 1970-ih, koji su od tada prošireni na ukupno osam zakona od 2011. Također su napravljeni i drugi pokušaji da se kvantificira proces korištenjem modela kao što su linearni sekvencijalni model i model prototipa, ali paradigma koja se čini da najbolje odgovara životnim ciklusima entropije softvera je paradigma koja nalikuje darvinističkoj evoluciji živih bića.
Osnovni pokretački čimbenici koji stoje iza promjena u arhitekturi softvera nalikuju istim silama koje motiviraju tvrtke na nadogradnju industrijskih strojeva ili standardnih operativnih postupaka kako se društvene potrebe mijenjaju. Kako se softver sve više koristi, nove potrebe ili funkcije za njega postaju očite koje se moraju razraditi u kasnijim izdanjima proizvoda. Sav softver također se izdaje s prethodno nepoznatim pogreškama, pa se moraju provoditi periodične zakrpe i postupci održavanja kako bi se ispravile situacije kao što su sigurnosne rupe koje bi mogle učiniti tvrtku ranjivom na napade kroz sam softver. Ključ za evoluciju softvera je i činjenica da se takvi programi moraju sve više prilagođavati za rad na različitim vrstama nove računalne opreme i unutar različitih arhitektura operacijskog sustava kako bi program bio više privlačan.
Zadovoljavanje svih ovih potreba ključno je za određivanje ostaje li softverski program održiv, a budući da je softverska imovina tako ključni aspekt informacijske ekonomije od 2011. godine, evolucija softvera postala je temeljni aspekt poslovne prilagodbe i rasta. Meir Lehman, informatičar na Imperial Collegeu u Londonu, zaslužan je za stvaranje Lehmanovih zakona, koji su sažeto definirali proces evolucije softvera i vodili programere u naprednom razmišljanju o vizualizaciji softvera. Lehmanovi zakoni temelje se na pretpostavci da se softver razvija kako se povećava povratna informacija o njegovoj izvedbi i da je njegova neizbježna tendencija da postaje sve složeniji.
Lehman je izjavio da priroda evolucije softvera odražava prirodne promjene kao što su mutacije u voćnim mušicama, način na koji se gradovi šire tijekom vremena i kako vojne strukture postepeno poboljšavaju sustave oružja. Prva tri zakona procesa oponašaju ove trendove u detaljima kontinuirane promjene, povećanja složenosti i onoga što je poznato kao velika evolucija programa. Kontinuirana promjena odnosi se na činjenicu da se program mora prilagoditi trenutnim uvjetima poslovanja u stvarnom svijetu, a to odražava sve veću složenost jer program mora zadovoljiti sve veću raznolikost neočekivanih potreba. Velika evolucija programa odnosi se na nužnost ispravljanja pogrešaka i novih izdanja programa koja su neumoljivo povezana sa zahtjevima tržišta.
Od pet preostalih zakona u evoluciji softvera, broj četiri je organizacijska stabilnost i odnosi se na činjenicu da rast programa zaživljava samostalno bez obzira na razinu resursa koji su mu namjerno posvećeni, a broj pet je očuvanje poznatosti. koji navodi da je inkrementalni rast programa neizbježan. Broj šest u osam Lehmanovih zakona je kontinuirani rast, koji je neophodan da bi se zadovoljila potražnja potrošača, a broj sedam je opadanje kvalitete, što naglašava činjenicu da se sav softver na kraju suočava s ograničenjima funkcionalnosti koja ne može zadovoljiti. Konačni Lehmanov zakon za evoluciju softvera je sam sustav povratnih informacija, koji povezuje sve sile koje utječu na održivost softverskog programa kako bi ga brzo doveli do većeg uspjeha ili neizbježne zastarjelosti i smrti.