Manutenção de software e engenharia reversa
Existem quatro tipos de Manutenção:
1. MANUNTENÇÃO CORRETIVA: identificar e corrigir os erros;
2. MANUTENÇÃO ADAPTATIVA: adaptar o software ao ambiente;
3. MANUTENÇÃO PERFECTIVA: atender pedidos do usuário para modificar funções existentes, incluir novas funções e efetuar o melhoramento geral;
4. MANUTENÇÃO PREVENTIVA: melhorar a manutenibilidade ou confiabilidade futura e fornecer uma base melhor para futuros melhoramentos.
O custo de manutenção é sempre muito alto, pois, enquanto as outras fases de processo de desenvolvimento têm começo e fim, a fase de manutenção dura enquanto durar o software. Ainda existem outros fatores que contribuem para aumentar o esforço e custo, como o Tipo de Aplicação (alguns sistemas são mais difíceis de modificar, como os de tempo real ou sincronizados.), as Inovações (quando se lida com novas tecnologias, é mais difícil para os mantenedores entenderem o código e conseguirem implementar as mudanças.), Qualidade do código ( código não estruturado pode dificultar a localização de falhas) entre outros.
E não podemos esquecer que sempre que uma manutenção for realizada em um software, ela deve ser documentada, isso é necessário pois, caso contrário, quando uma outra pessoa for fazer uma nova alteração, vai perceber que há uma discrepância entre o projeto e a documentação existentes e o código atual.
A Engenharia reversa é a atividade de tomar um software pronto e tentar recuperar o seu projeto. Ou seja,