Quando aplicar a reengenharia de software

Por Nycolas Batista Medeiros | 10/06/2012 | Tecnologia

A reengenharia de software é uma modernização do software, uma abordagem disciplinada para migrar softwares legados (executam tarefas úteis para a organização, mas que foram desenvolvidos utilizando-se técnicas atualmente consideradas obsoletas) em softwares evolutivos. O processo de reengenharia de software aplica os princípios da engenharia de software em um software legado para atender requisitos existentes e novos requisitos.

Alguns exemplos de aplicações de reengenharia de software são a migração de softwares legados para uma nova plataforma, alteração da interface-humano computador e reestruturação do código e documentação.

A reengenharia de software não é aplicável quando um sistema de software legado possui alta qualidade técnica e biaxo valor de negócio. Em sistemas como esse, deve ser aplicada a evolução de software. Com tais características é dispensada a necessidade de esforço de mudança.

Para compreender o caso acima deve-se entender, primeiro, o que é a evolução de software. A evolução de software é uma atividade de mudança de software, que pode ser desde a inserção de um campo na base de dados até a completa re-implementação do software. A evolução de software pode ser dividida em três categorias: manutenção, modernização e substituição de software.

A manutenção de software é um processo incremental e repetitivo, onde alterações são feitas no software. Essas alterações envolvem eliminação de erros e melhorias funcionais. A manutenção é necessária para suportar a evolução de qualquer software, mas não deve envolver mudanças estruturais. A manutenção de software possui ainda quatro categorias que são Corretiva (alterações para corrigir erros no software), Melhoria (alterações para melhorar o software), Adaptativa (alterações para adaptar o software a novos ambientes) e Preventiva (alterações para melhorar a manutenibilidade do software, simplificando evoluções futuras).

Já a modernização de software é utilizada quando o software legado requer mudanças mais extensas e significativas do que aquelas realizadas pela manutenção, mas preserva uma porção significativa do software. Por fim, a substituição de software requer a construção do software legado desde o início, e é apropriada quando o software legado não consegue mais atender às necessidades do negócio e quando a modernização não é possível ou não vale a pena em relação aos custos.

Sistemas de softwares legados com alta qualidade técnica e alto valor de negócio são candidatos a evolução do sistema utilizando práticas de evolução de sistemas. Devido a tais características há uma preocupação com as mudanças, mas não há necessidade de esforço.

Por fim, os sistemas legados com baixa qualidade técnica e altoa valor de negócio são bons candidatos à reengenharia de software após uma análise rigorosa.

A análise é essencial para priorizar sistemas candidatos à reengenharia e qual será a estratégia de desenvolvimento. A maior justificativa de reengenharia é o alto risco de falhas, problemas de desempenho, confiabilidade, etc.