Quando aplicar a reengenharia de software



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.

Download do artigo
Autor:


Artigos Relacionados


Desenvolvimento De Software Utilizando Metodologias ágeis

Aplicando Reuso Na Disciplina De Gerência De Projetos De Software Do Rup

Renda Software (gerador De Riquezas)

Mda

Engenharia De Software

Engenharia Aplicada No Desenvolvimento De AplicaÇÕes Web

Evolução De Software Usando Genexus