Tipos de manutenção de Software
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.
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.
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.