O criză de software este o nepotrivire între ceea ce poate furniza software-ul și capacitățile sistemelor informatice, precum și așteptările utilizatorilor acestora. Aceasta a devenit o problemă din ce în ce mai mare în secolul al XX-lea, deoarece computerul a crescut cu un pas și software-ul nu a putut ține pasul. Pe măsură ce complexitatea sistemelor crește, la fel și nevoile utilizatorilor, care se așteaptă din ce în ce mai multă performanță de la software-ul lor. Programatorii se pot lupta să țină pasul, creând o criză de software.
Software-ul de larg consum trece de obicei printr-o serie lentă de faze de dezvoltare, dar reprezintă o mică parte din volumul de afaceri din industrie. Cea mai mare parte a dezvoltării de software este absorbită în sisteme pentru aplicații specifice, de la programele care se ocupă de ghidarea rachetelor la bordul crucișătoarelor navale până la păstrarea evidenței interne pentru companiile de asigurări de sănătate. Acest software necesită, în general, o investiție substanțială din partea clientului, precum și o programare extinsă din partea personalului însărcinat cu dezvoltarea, testarea și întreținerea acestuia.
Astfel de proiecte se pot confrunta cu o criză de software în care încep să depășească bugetul și să dureze mult mai mult decât se aștepta să se dezvolte. Programatorii care lucrează la software ar putea fi nevoiți să se ocupe de remedieri de erori în curs în timp ce învață noi aspecte ale unui sistem, fac ajustări pentru client și abordează alte probleme care apar. Calitatea scăzută poate fi o îngrijorare, deoarece programatorii pot experimenta o presiune crescândă pentru a îndeplini bugetele cu orice preț, chiar dacă aceasta înseamnă că software-ul nu va fi de bună calitate. De asemenea, tinde să fie produsă mai puțină documentație.
Aceasta nu este doar o problemă pentru dezvoltarea de noi produse software. O altă preocupare poate fi necesitatea de a menține software-ul mai vechi care poate avea probleme legate de o dezvoltare proastă sau de eșecul de a anticipa nevoile în creștere. Programatorii ar putea petrece o cantitate mare de timp pentru a menține funcțional software-ul moștenit, astfel încât o companie să poată continua să funcționeze. Cu investiții mari în software-ul mai vechi, compania poate fi reticente în a comanda un nou program, chiar dacă acesta le-ar satisface mai bine nevoile, deoarece acest lucru ar putea implica mai multe cheltuieli și probleme în timpul trecerii.
Presiunea de a produce cod complex și avansat poate contribui semnificativ la o criză de software. Poate fi dificil să controlezi presiunea ținând în același timp costurile sub control și respectând un orar. Unele măsuri pentru a face față unei crize de software pot include o planificare avansată substanțială, selecția de personal cu înaltă calificare și actualizări continue pentru a vă asigura că proiectul rămâne pe sarcină și concentrat.