Una crisis de software es un desajuste entre lo que el software puede ofrecer y las capacidades de los sistemas informáticos, así como las expectativas de sus usuarios. Esto se convirtió en un problema creciente en el siglo XX a medida que la informática crecía a pasos agigantados y el software no podía seguir el ritmo. A medida que crece la complejidad de los sistemas, también aumentan las necesidades de los usuarios, que esperan cada vez más rendimiento de su software. Los programadores pueden tener dificultades para seguir el ritmo, creando una crisis de software.
El software de consumo generalmente atraviesa una serie lenta de fases de desarrollo, pero constituye una pequeña parte del volumen de negocios de la industria. La mayor parte del desarrollo de software se concentra en sistemas para aplicaciones específicas, que van desde los programas que manejan la guía de misiles a bordo de cruceros navales hasta el mantenimiento de registros internos para las compañías de seguros de salud. Este software generalmente requiere una inversión sustancial por parte del cliente, así como una amplia programación del personal encargado de desarrollarlo, probarlo y mantenerlo.
Estos proyectos pueden encontrarse con una crisis de software en la que comienzan a exceder el presupuesto y tardan mucho más de lo esperado en desarrollarse. Los programadores que trabajan en el software pueden tener que lidiar con correcciones de errores continuas mientras aprenden nuevos aspectos de un sistema, hacen ajustes para el cliente y abordan otros problemas que surjan. La baja calidad puede ser una preocupación, ya que los programadores pueden experimentar una presión cada vez mayor para cumplir con los presupuestos a toda costa, incluso si eso significa que el software no será de buena calidad. También se tiende a producir menos documentación.
Este no es solo un problema para el desarrollo de nuevos productos de software. Otra preocupación puede ser la necesidad de mantener un software más antiguo que puede tener problemas relacionados con un desarrollo deficiente o la imposibilidad de anticipar las necesidades crecientes. Los programadores podrían dedicar una gran cantidad de tiempo a mantener funcional el software heredado para que una empresa pueda seguir funcionando. Con una alta inversión en el software más antiguo, la empresa puede ser reacia a solicitar un nuevo programa, incluso si satisface mejor sus necesidades, porque esto podría implicar más gastos y problemas durante el cambio.
La presión para producir código complejo y avanzado puede contribuir significativamente a una crisis de software. Puede ser difícil controlar la presión mientras se mantienen los costos bajo control y se mantiene dentro de un calendario. Algunas medidas para lidiar con una crisis de software pueden incluir una planificación avanzada sustancial, la selección de personal altamente calificado y actualizaciones continuas para asegurarse de que el proyecto se mantenga en la tarea y el enfoque.