Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas automatizadas.
Alcance da Engenharia Reversa Construção Projeto Análise Engenharia Reversa Planejamento Análise Projeto Projeto Engenharia Tradicional
Passos da Engenharia Reversa Código Fonte Arquitetura do Sistema Especificação Fisica Especificação Lógica Ferramenta CASE Engenharia Tradicional
Engenharia Reversa Entradas Código-Fonte Dicionário de dados DDL
Engenharia Reversa Saídas Desenho do banco de dados Estrutura física dos dados Diagrama Entidade-Relacionamento Modelo de dados normalizado Especificação do projeto
Benefícios a) Melhor compreensão dos sistemas atuais b) Aceleração do processo de manutenção de Sistemas c) Recuperação do conhecimento sobre os sistemas
Benefícios d) Agilização da conversão e migração de sistemas e) Incentivo a adoção de repositório Manutenção de Software
Reestruturação É o processo de padronização de nomes de dados, definições e estrutura lógica de programas para melhorar a manutenção e produtividade do software
Objetivos da Reestruturação Melhorar o programa Diminuir tempo de teste Forçar os padrões de programação Simplificar alterações de programas Reduzir os custos de manutenção Reduzir a dependência dos mantenedores
Tipos de Reestruturação Código-Fonte / Lógica Dados
Reestruturação de Código-Fonte É o processo de análise dos fluxos de controle e lógica de programação com geraçào de uma versão estruturada do código-fonte original sem alteração de sua funcionalidade
Programa Bem-Estruturado Dividido em conjunto de módulos Cada módulo representa uma função Fluxo de execução é organizado
Programa Mal Estruturado Uso excessivo de loops iterativo Uso excessivo de ninhos de IF Módulos muito grandes Vários módulos executando a mesma tarefa
Sistemas Candidatos a Reestruturação Código de baixa qualidade Dificuldade (impossibilidade) para ler, alterar e testar o código Taxa de erros, tempo de correção e custos altos Sistemas estratégicos/importantes caros e e frequentemente alterados
Funções dos programas de reestruturação Análise de lógica e Métrica Análise de dados Limpeza da linguagem, visando eliminar comandos não recomendados ou utilizados fora dos padrões Limpeza do código, eliminando código morto, loops infinitos e lógica confusa Melhoria da apresentação e padronização
Reestruturação de Dados É o processo de eliminação de redundância de nomes de dados e de adoção de padrões
Benefícios com Reestruturação de Dados Criação de uma base de dados normalizada e estável Melhoria da compreensão da interface de dados entre sistemas Utilização de nomes de dados padronizados Melhoria da consistência e do significado dos dados Integração dos sistemas de informações
Sistemas candidatos a reestruturação de dados Definições de dados inconsistentes Nomes de dados não padronizados Dificuldades de compreensão
Funções dos programas de Reestruturação de dados Análise de dados Verificação de normalização Preservação dos dados atuais Padronização de nomes semi-automática
Migração É o processo de mudança de plataforma tecnológica a partir de um ativo de sistemas existente
Benefícios Preservar esforços de desenvolvimento Preservar integração de sistemas Garantir atualização tecnológica Facilitar a manutenção de software
Por Que é difícil a migração de sistemas legados ? Projetos grandes são difíceis de gerenciar Não existem especificações Não existem ferramentas e métodos adequados Insegurança quanto a mudança
Passos para correta migração Acessar de forma adequada os sistemas legados Organizar os dados do sistema atual Migrar somente os dados Migrar outros componentes do sistema Evoluir com ainclusão de extensões nas funções do sistema atual
Principais motivos de mudança Onda de ... sizing Promessas de fornecedores Mídia abusiva Insatisfação dos usuários Crescimento da concorrência Múltiplas opções de tecnologias
Algumas Tecnologias em evidência Orientação a objetos Ambientes gráficos Arquitetura cliente / servidor Internet
Mandamentos da computação Cliente / Servidor 1. Não negligenciarás o gerenciamento de tua rede 2. Não castigarás teus usuários com computadores de baixa potência 3. Treinarás tua equipe de sistemas adequadamente 4. Lembrarás de fazer backup regularmente de teus dados 5. Adotarás padrões e irás segui-los
Continuação dos Mandamentos 6. Não cairás na tentação de desligar o mainframe 7. Não prometerás mundos e fundos 8. Lembrarás de teus dados para mantê-los puros 9. Não serás mesquinho ao escolher as ferramentas de desenvolvimento 10. Protegerás teus usuários de si mesmos Fonte: Cliente Servidor para Leigos Doug Lowe / Editora Berkeley