Softverska kriza je neusklađenost između onoga što softver može isporučiti i kapaciteta računalnih sustava, kao i očekivanja njihovih korisnika. To je postalo sve veći problem u 20. stoljeću jer je računalstvo raslo skokovima i granicama, a softver nije mogao držati korak. Kako složenost sustava raste, tako rastu i potrebe korisnika koji od svog softvera očekuju sve više performansi. Programeri se mogu boriti da održe korak, stvarajući softversku krizu.
Potrošački softver obično prolazi kroz spori niz razvojnih faza, ali čini mali dio obima poslovanja u industriji. Najveći dio razvoja softvera utonuo je u sustave za specifične aplikacije, u rasponu od programa koji upravljaju navođenjem projektila na brodovima pomorskih krstarica do internog vođenja evidencije za zdravstveno osiguranje. Ovaj softver općenito zahtijeva značajna ulaganja od korisnika, kao i opsežno programiranje od strane osoblja zaduženog za njegov razvoj, testiranje i održavanje.
Takvi projekti mogu upasti u softversku krizu u kojoj počinju prelaziti proračun i treba im puno dulje od očekivanog da se razviju. Programeri koji rade na softveru možda će se morati nositi s tekućim ispravcima pogrešaka dok uče nove aspekte sustava, prilagođavaju klijenta i rješavaju druge probleme koji se pojave. Niska kvaliteta može biti zabrinjavajuća jer programeri mogu iskusiti sve veći pritisak da ispune proračune pod svaku cijenu, čak i ako to znači da softver neće biti dobre kvalitete. Također se proizvodi manje dokumentacije.
To nije samo problem za razvoj novih softverskih proizvoda. Druga zabrinutost može biti potreba za održavanjem starijeg softvera koji može imati problema u vezi s lošim razvojem ili nemogućnošću predviđanja rastućih potreba. Programeri bi mogli trošiti veliku količinu vremena na održavanje funkcionalnog naslijeđenog softvera kako bi tvrtka mogla nastaviti s radom. S velikim ulaganjem u stariji softver, tvrtka može biti nesklona naručiti novi program, čak i ako bi bolje zadovoljio njihove potrebe, jer bi to moglo uključivati više troškova i problema tijekom promjene.
Pritisak za stvaranje složenog, naprednog koda može značajno pridonijeti softverskoj krizi. Može biti teško kontrolirati pritisak, a istovremeno držati troškove pod kontrolom i držati se na rasporedu. Neke mjere za rješavanje softverske krize mogu uključivati značajno napredno planiranje, odabir visokokvalificiranog osoblja i stalna ažuriranja kako bi se osiguralo da projekt ostane na zadatku i u fokusu.