Engenharia de Software
A reengenharia de software se ocupa de reimplementar sistemas legados, para que sua manutenção seja mais fácil. A reengenharia pode envolver redocumentar, organizar e reestruturar o sistema, traduzir o sistema para uma linguagem de programação mais moderna e modificar e atualizar a estrutura e os valores dos dados do sistema. A funcionalidade do software não é modificada e, normalmente, a arquitetura do sistema também permanece a mesma.
A partir de uma perspectiva técnica, a reengenharia de software pode parecer uma solução de segunda classe para o problema de evolução de sistema. Em geral, não é possível mudar radicalmente a linguagem de programação do sistema, de modo que os antigos sistemas não podem ser convertidos para linguagens de programação orientadas a objetos, como Java ou C+. As limitações inerentes ao sistema são mantidas porque a funcionalidade do software permanecer inalterada.
Existem tantos sistemas, que a completa substituição ou a reestruturação radical é financeiramente impensável para a maioria das organizações. A manutenção de velhos sistemas é cada vez mais dispendiosa, e a reengenharia desses sistemas prolonga seu tempo de vida útil.
A reengenharia de software tem suas vantagens principais em relação a abordagens mais radicais para a evolução de sistemas:
1- Riscos reduzidos Existe um alto risco em redesenvolver um software que seja essencial para uma organização. Podem ser cometidos erros na especificação do sistema, ocorrer problemas de desenvolver, etc.
2- Custos reduzidos O custo da reengenharia é significativamente menor do que os custos de desenvolvimento de um novo software. Urich [1990] cita o exemplo de um sistema commercial em que os custos de reimplementação foram estimados em 50 milhões de dólares. O sistema foi reengenheirado com sucesso por 12 milhões. Se considerarmos esses numerous como sendo típicos, o custo da reegenharia é quarto vezes menor do que o de resscrever um sistema.
A principal