A crise do software foi um fenômeno que se originou do aumento do tamanho e complexidade dos sistemas, sem que houvesse um planejamento estruturado e sem que existisse um processo definido de avaliação da qualidade do processo de construção de sistemas.
Este processo teve como consequência direta um aumento dos estudos na área de Engenharia de Software, sobretudo com o objetivo de incrementar os métodos, processos e tecnologias utilizadas no desenvolvimento de sistemas.
Os métodos, técnicas e ferramentas, alvos de estudo da Engenharia de Software, são comumente organizados e estruturados em etapas, que são definidas como componentes de um processo maior, definido como “ciclo de vida do desenvolvimento de software”. O principal modelo de ciclo de vida formalmente definido foi o modelo em cascata. Outros modelos importantes são: o modelo de prototipação, o modelo em espiral, o iterativo e incremental e o modelo ágil.
Mesmo com todo o avanço observado no estudo da Engenharia de Software, ainda é comum nos depararmos com erros na implementação de sistemas, já que, apesar da existência de uma série de padrões e modelos, trata-se de uma tarefa que é extremamente dependente do componente humano. Alguns dos principais problemas de software da história são o bug do milênio, o problema do ano 2038, o bug do sistema de defesa patriot e o blackout americano de 2003.