Kriza programske opreme je neusklajenost med tem, kar programska oprema lahko zagotovi, in zmogljivostmi računalniških sistemov ter pričakovanji njihovih uporabnikov. To je v 20. stoletju postajalo vse večji problem, saj je računalništvo naglo raslo in programska oprema ni mogla slediti tempu. Ko kompleksnost sistemov raste, rastejo tudi potrebe uporabnikov, ki od svoje programske opreme pričakujejo vse večjo zmogljivost. Programerji se morda težko držijo koraka, kar povzroči krizo programske opreme.
Programska oprema za potrošnike se običajno premika skozi počasno vrsto razvojnih faz, vendar predstavlja majhen del obsega poslovanja v industriji. Večina razvoja programske opreme je potopljena v sisteme za posebne aplikacije, od programov, ki obravnavajo vodenje raket na krovu mornariških križark, do internega vodenja evidenc za zdravstvene zavarovalnice. Ta programska oprema na splošno zahteva znatne naložbe od stranke, pa tudi obsežno programiranje osebja, ki je zadolženo za njen razvoj, testiranje in vzdrževanje.
Takšni projekti lahko zaidejo v krizo programske opreme, kjer začnejo presegati proračun in trajajo veliko dlje, kot je pričakovano, da se razvijejo. Programerji, ki delajo na programski opremi, se bodo morda morali soočiti s stalnimi popravki napak, medtem ko se učijo novih vidikov sistema, prilagajajo odjemalcu in obravnavajo druga vprašanja, ki se pojavijo. Nizka kakovost je lahko zaskrbljujoča, saj lahko programerji občutijo vse večji pritisk, da za vsako ceno izpolnijo proračune, tudi če to pomeni, da programska oprema ne bo kakovostna. Prav tako se običajno izdela manj dokumentacije.
To ni samo vprašanje za razvoj novih programskih izdelkov. Druga skrb je lahko potreba po vzdrževanju starejše programske opreme, ki ima lahko težave, povezane s slabim razvojem ali neuspehom pri predvidevanju naraščajočih potreb. Programerji bi lahko porabili veliko časa za vzdrževanje delovanja stare programske opreme, da lahko podjetje še naprej deluje. Z velikimi naložbami v starejšo programsko opremo podjetje morda ne bo naklonjeno naročilu novega programa, četudi bi bolje ustrezal njihovim potrebam, ker bi to lahko povzročilo več stroškov in težav pri prehodu.
Pritisk za izdelavo zapletene, napredne kode lahko pomembno prispeva k krizi programske opreme. Lahko je težko nadzorovati pritisk, hkrati pa obdržati stroške pod nadzorom in ostati na urniku. Nekateri ukrepi za spopadanje s krizo programske opreme lahko vključujejo znatno napredno načrtovanje, izbor visoko usposobljenega osebja in stalne posodobitve, da zagotovimo, da projekt ostane pri nalogi in osredotočenosti.