Se ocupa de reimplementar sistemas legados, para que sua manuteno seja fcil. Pode envolver: Redocumentar; Organizar e reestruturar o sistema; Traduzir o sistema para uma linguagem de programao mais moderna; Modificar e atualizar a estrutura e os valores dos dados do sistema.
A funcionalidade do software no modificada e, normalmente, a arquitetura do sistema permanece a mesma. A manuteno de sistemas legados cada vez mais dispendiosa, e a reengenharia torna desses sistemas prolonga seu tempo de vida til. A reengenharia eficaz em termos de custo quando ele tem alto valor de negcios, mas dispendioso manter. A reengenharia melhora a estrutura do sistema, cria uma nova documentao relacionada e faz com que ela seja de mais fcil compreenso. Tem duas vantagens principais: 1. Riscos reduzidos: Isto porque, durante o redesenvolvimento de um software podem ser inseridos erros na especificao, no desenvolvimento, etc. 2. Custos reduzidos: O custo da reengenharia significativamente menor do que os custos de desenvolvimento. Especificao do Sistema Projeto e implementao Novo Sistema Software j existente Compreenso e transformao Sistema reengenheirado Distino entre o desenvolvimento de um novo sistema (1) e reengenharia (2). Fonte: SOMMERVILLE (1) (2) Um processo de reengenharia tem como entrada um programa legado e a sada uma verso estruturada e modularizada do mesmo programa. Ao mesmo tempo que ocorre a reengenharia do programa, os dados do sistema tambm podem passar por reengenharia. Processo de reengenharia. Fonte: SOMMERVILLE Traduo do cdigo fonte: O programa convertido de uma linguagem de programao antiga para uma verso mais moderna da mesma linguagem ou para um linguagem diferente. Engenharia reversa: O programa analisado e as informaes so extradas dele, a fim de ajudar a documentar sua organizao e funcionalidade. Melhoria na estrutura do programa: A estrutura de controle do programa analisada e modificada, a fim de torn-la mais fcil de ser lida e compreendida. Modularizao do programa: As partes relacionadas do programa so agrupadas e, quando for apropriado, a redundncia removida. Reengenharia de dados: Os dados processados pelo programa so modificados, a fim de refletir as mudanas feitas nele. A reengenharia pode no exigir necessariamente todas as etapas apresentadas anteriormente, por exemplo a traduo de cdigo fonte pode no ser necessria se a linguagem ainda for aceita pelo fornecedor do compilador. Os custos da reengenharia dependem da extenso do trabalho que realizado. Aumento dos custos Converso automatizada do cdigo fonte Reestruturao automatizada com modificaes manuais Reestruturao mais mudanas de arquitetura Reestruturao automatizada do programa Reestruturao do programa e dos dados A qualidade do software que deve passar pela reengenharia; O apoio s ferramentas disponveis para a reengenharia; A extenso da converso de dados requerida; A disponibilidade de pessoal habilitado. Converter um cdigo de uma linguagem (ou verso) para outra, por exemplo FORTRAN para C Pode ser necessria pelas seguintes razes: Atualizao da plataforma de hardware Escassez de pessoal habilitado Mudanas na poltica organizacional Falta de suporte ao software Somente realista se um tradutor automtico estiver disponvel o processo de analisar o software com o objetivo de recuperar seu projeto e sua especificao A engenharia reversa pode fazer parte do processo de reengenharia, mas no o mesmo que a reengenharia. O objetivo da engenharia reversa derivar o projeto ou a especificao de um sistema a partir de seu cdigo- fonte; um novo sistema, com manuteno mais fcil O processo inicia com uma fase de anlise, utilizando-se de ferramentas automatizadas, a fim de descobrir sua estrutura A estrutura de controle dos sistemas legados complexa, com muitas ramificaes incondicionais e a lgica de controle no intuitiva. Essa estrutura pode ser afetada por manutenes regulares, tornando alguns cdigos inatingveis O programa pode ser reestruturado automaticamente para eliminar declaraes incondicionais Condies complexas podem ser simplificadas, como parte do processo de reestruturao de programa o processo de reorganizar um programa, de modo que as partes relacionadas sejam coletadas e consideradas um nico mdulo A modularizao em geral realizada manualmente, com a inspeo e a edio do cdigo Processo de anlise e reorganizao de estruturas de dados e, algumas vezes, os valores dos dados em um sistema, para torn-lo mais compreensvel Em princpio, a reengenharia de dados no dever ser necessria, se a funcionalidade do sistema permanecer inalterada o Na dcada de 80 a Ford passava por uma grande depresso, enquanto isso as indstrias Japonesas cresciam, ficando mais rpidas e competitivas.
o Isso levou a Ford a implementar a Reengenharia, com o propsito de rentabilizar seu departamento de contabilidade.
o Conseguiram atingir uma reduo de 75% nas suas despesas
IBM o Reduziu o tempo na produo de um computador de SETE dias para UM dia.
XEROX o Diminui o prazo de entrega ao produto mercado, melhorando os processos de planejamento, qualidade de seus produtos e administrao.
MC DONALDS o Aumentou a eficcia do planejamento e controle de estoque, atravs da informatizao de suas lojas. GENERAL MOTORS o Na poca do lanamento do Cadillac, os processos no foram aplicados adequadamente s estratgias da empresa, pois as inovaes no foram bem aceitas pelo processo, que at ento era antiquado .
KODAK o Implantou um novo software, que no foi adaptado pelo sistema. Os programas custavam caro e foram implantados arbitrariamente. SOMMERVILLE, Ian, Engenharia de Software. 6 ed. So Paulo: Addison Wesley, 2003.