Nos anos 70 tivemos a Crise do Software. O que proporcionou a evolução dos softwares e trouxe complexidade para o mundo atual, e com isso os problemas com manutenções apareceram. Sistemas construídos nesses 20 e 30 anos passados hoje estão em alta com as manutenções.
Manutenção de software é definida como o processo de modificação de um produto de software.
Uma construção de projeto de forma desorganizada e não planejada traz problemas para se realizar a manutenção. Já o contrário, projeto usando uma metodologia, pode ser mais fácil na fase da manutenção.
A manutenção de software é, certamente, bem mais do que "consertar erros". A manutenção envolve também a evolução, adaptação e aperfeiçoamento do sistema pronto.
Existe uma série de motivos que influenciam os custos de manutenção de um sistema. Os custos da manutenção estão se elevando e é importante pensar na manutenibilidade na construção do projeto. Conforme é construído o projeto, pode ter custos menos elevados nas manutenções futuras.
As manutenções são planejadas e divididas em 3 tipos: Evolutivas, que tratam as evoluções, corretivas, que cuidam das correções e preventivas, que é a prevenção de erros futuros.
O custo de manutenção de Software tem aumentado fortemente durante os últimos anos. Além disso, temos outro fator preocupante, que são os custos intangíveis, os quais não estão previstos e não se consegue medir.
As dificuldades na manutenção do software dependem de vários fatores, tais como: tamanho do sistema, idade do sistema, experiência e conhecimento dos mantenedores.