A manutenção de software é o processo de alteração realizado depois que um programa é liberado para uso, entretanto os tipos de manutenção de software existente não é um consenso, para Sommerville, a manutenção de Software engloba três atividades: manutenção corretiva (reparo de defeitos no software), manutenção adaptativa (adaptação do software a um ambiente operacional diferente), manutenção evolutiva (manutenção para adicionar funcionalidades ao software ou modificá-la).

Porém Pressman, em sua classificação, acrescenta um quarto tipo de manutenção: a manutenção preventiva ou reengenharia. Em relação às classificações expostas, será considerada a definição apresentada por Pressman, na continuidade deste artigo. Estes quatro tipos de manutenção podem ser estruturados como apresentado pela figura 1, que exemplifica esta estrutura a partir de uma requisição de modificação, seguido por uma avaliação genérica dos tipos de manutenção que seriam os processos de correção ou melhoria no software.

img-tipos-de-manutencao-de-software

 

De acordo com Pressman, são elas:

  • Manutenção Corretiva: Correção de erros no software que não foram identificados na fase teste, caso exista uma fase teste no software, em determinadas situações esses erros podem não atrapalhar a execução do software e não acarretar maiores preocupações, já que este pode ser solucionado por meio de simples reparos, no entanto pode haver casos mais complexos que necessite de um reparo temporário, para apagar o incêndio com o objetivo de o software voltar a executar suas funções básicas e que haja tempo a seus mantenedores para conseguir solucionar o erro em sua totalidade e assim disponibilizá-lo em uma nova versão.
  • Manutenção Adaptativa: Adaptação no software para acomodar as constantes mudanças ocorridas em seu ambiente externo, essas mudanças podem ser em regras de negócio, constituição e leis que tenha consequências a funções do sistema, assim como a criação de uma nova plataforma de hardware, podendo ser uma nova geração de processadores, ou periféricos na qual o software consiga aproveitar seus recursos, além de uma nova versão de um sistema operacional que possa não ser totalmente compatível ao software.




  • Manutenção Evolutiva (ou perfectiva): Modificações não previstas no documento de requisitos original do software. Tem por intuito melhorar a qualidade do software, acrescentando novas funcionalidades, melhorando seu desempenho, ou até mesmo modificando seu código-fonte buscando obter melhor legibilidade ou adequação a alguns paradigmas de programação.
  • Manutenção Preventiva (reengenharia): Alterações no software buscando melhorar a confiabilidade ou oferecer uma estrutura melhor para futuras manutenções. A manutenção preventiva parte de uma observação reconhecida pelos mantenedores sobre o que poderá gerar algum tipo de erro no software, desta forma tal erro será tratado antes que um problema venha a ocorrer.

img-tipos-de-manutencao-de-software2

 

Ao observar o gráfico apresentado na figura acima sobre a proporção de ocorrências dos tipos de manutenção, é possível identificar que a manutenção preventiva não possui a atenção necessária, atenção essa que deveria ser redobrada em decorrência do expressivo número de manutenção evolutiva e adaptativa.

Outro motivo que justifica a importância da manutenção preventiva é a superioridade de ocorrências de manutenção corretiva, o que mostra que a preocupação em prevenir problemas é menor do que esperar acontecer o problema. A alta incidência de ocorrências da manutenção evolutiva demonstra que o foco está em atender as necessidades dos usuários, mantendo o software funcional e abrangente, assim como atualizado ao ambiente, de acordo com o percentual da manutenção adaptativa.