1) A engenharia direta aplica princípios de engenharia de software para recriar um aplicativo existente, enquanto a engenharia reversa analisa como um sistema funciona desmontando-o. 2) A reengenharia combina engenharia reversa e direta para redesignar um sistema antigo usando abordagens modernas. 3) Para um sistema antigo complexo, a reengenharia pode ser mais eficiente do que apenas fazer modificações, reduzindo custos de manutenção.
2. MANUTENÇÃO E REENGENHARIA
O QUE É ENGENHARIA DIRETA?
▸O processo de engenharia direta
aplica os princípios, conceitos e
métodos de engenharia de software,
para recriar um aplicativo.
3. É O PROCESSO DE DESCOBRIR OS PRINCÍPIOS TECNOLÓGICOS E O
FUNCIONAMENTO DE UM DISPOSITIVO, OBJETO OU SISTEMA,
ATRAVÉS DA ANÁLISE DE SUA ESTRUTURA, FUNÇÃO E OPERAÇÃO.
OBJETIVAMENTE A ENGENHARIA REVERSA CONSISTE EM, POR
EXEMPLO, DESMONTAR UMA MÁQUINA PARA DESCOBRIR COMO
ELA FUNCIONA.
ENGENHARIA REVERSA
ENTENDENDO O QUE É ENGENHARIA REVERSA
4. MANUTENÇÃO E REENGENHARIA
ENGENHARIA REVERSA + ENGENHARIA DIRETA
▸O processo de engenharia reversa
seguido de engenharia direta é
chamando de reengenharia.
5. ESTÁ NA HORA DE PARAR DE SEGUIR AS TRILHAS DAS VACAS. EM
VEZ DE ACRESCENTAR PROCESSOS ULTRAPASSADOS EM
HARDWARE E SOFTWARE, DEVEMOS REJEITÁ-LOS E COMEÇAR DE
NOVO. DEVEMOS FAZER UMA "REENGENHARIA" EM NOSSOS
NEGÓCIOS.
Michael Hammer
ENTENDENDO O QUE É ENGENHARIA REVERSA
6. MANUTENÇÃO E REENGENHARIA
SISTEMA ANTIGO
▸Um programa com um fluxo de
controle, que graficamente equivale a
um emaranhado, com módulos de 2 mil
instruções, algumas poucas linhas de
comentário em 290 mil instruções de
código-fonte e nenhuma outra
documentação.
8. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸1. Fazendo modificação após modificação,
enfrentando os problemas do projeto ad
hoc e do código-fonte confuso.
▸2. Entender os detalhes internos do
programa em um esforço para tornar as
modificações mais eficazes.
9. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸3. Reprojetar, recodificar e testar as
partes do software que requerem
m o d i fi c a ç ã o , a p l i c a n d o u m a
abordagem de engenharia de software
a todos os segmentos revisados.
10. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸4. Reprojetar completamente,
recodificar e testar o programa
usando ferramentas de reengenharia
para ajudar a entendermos o projeto
atual.
11. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸Em uma primeira opção, a sugestão
para que você redesenvolva um
grande programa quando uma versão
que ainda funcione pode ser bastante
extravagante. Mas antes de fazer um
julgamento, considere alguns pontos:
12. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸O custo para manter uma linha de
codigo pode ser 20 a 40 vezes a do
desenvolvimento inicial de cada linha
▸O reprojeto da arquitetura de software,
usando conceitos modernos de projeto,
pode facilitar muito a manutenção futura.
13. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸Como já existe um protótipo do software, a
produtividade do desenvolvimento deverá
ser muito mais alta que a média.
▸O usuário agora tem experiência com o
software. Portanto, novos requisitos e a
direção das mudanças podem ser
definidos com grande facilidade.
14. MANUTENÇÃO E REENGENHARIA
OPÇÕES PARA ENGENHARIA DIRETA
▸Ferramentas automatizadas para
reengenharia facilitarão algumas
partes do trabalho.
▸Existirá uma configuração de software
completa(documentos, programa e
dados).
16. MANUTENÇÃO E REENGENHARIA
CUSTO X BENEFÍCIO
▸O custo associado ao suporte e
manutenção continuados de um
aplicativo existente, é comparado aos
custos projetados da reengenharia e a
redução resultante nos custos de
manutenção e suporte.
17. MANUTENÇÃO E REENGENHARIA
CUSTO X BENEFÍCIO
▸Em quase todos os casos nos quais um
programa tem uma vida longa e
a p r e s e n t a n o m o m e n t o u m a
manutenibilidade ou suportabilidade
ruim, a reengenharia representa uma
estratégia de negócio eficiente em
termos de custo.
18. MANUTENÇÃO E REENGENHARIA
CONCLUSÃO
▸Na maioria das vezes a engenharia
direta não cria apenas um programa
equivalente moderno de um programa
antigo. Em vez disso o programa
redesenvolvido amplia a capacidade
do aplicativo antigo.