Upload
hannibalking-king
View
50
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
Prof(a): Rosemary [email protected]
A reengenharia de Software é uma das estratégias de evolução de software.
Se ocupa de reimplementar sistemas legados, para que sua manutenção seja fácil.
Pode envolver: Redocumentar; Organizar e reestruturar o sistema; Traduzir o sistema para uma linguagem de
programação mais moderna; 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 permanece a mesma.
A manutenção 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 negócios, mas é dispendioso manter.
A reengenharia melhora a estrutura do sistema, cria uma nova documentação relacionada e faz com que ela seja de mais fácil compreensão.
Tem duas vantagens principais:1. Riscos reduzidos: Isto porque, durante
o redesenvolvimento de um software podem ser inseridos erros na especificação, no desenvolvimento, etc.
2. Custos reduzidos: O custo da reengenharia é significativamente menor do que os custos de desenvolvimento.
Distinção 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 saída é uma versão estruturada e modularizada do mesmo programa. Ao mesmo tempo que ocorre a reengenharia do programa, os dados do sistema também podem passar por reengenharia.
Processo de reengenharia. Fonte: SOMMERVILLE
Tradução do código fonte: O programa é convertido de uma linguagem de
programação antiga para uma versão mais moderna da mesma linguagem ou para um linguagem diferente.
Engenharia reversa: O programa é analisado e as informações são extraídas
dele, a fim de ajudar a documentar sua organização e funcionalidade.
Melhoria na estrutura do programa: A estrutura de controle do programa é analisada e
modificada, a fim de torná-la mais fácil de ser lida e compreendida.
Modularização do programa: As partes relacionadas do programa são agrupadas e,
quando for apropriado, a redundância é removida. Reengenharia de dados:
Os dados processados pelo programa são modificados, a fim de refletir as mudanças feitas nele.
A reengenharia pode não exigir necessariamente todas as etapas apresentadas anteriormente, por exemplo a tradução de código fonte pode não ser necessária se a linguagem ainda for aceita pelo fornecedor do compilador.
Os custos da reengenharia dependem da extensão do trabalho que é realizado.
Aumento dos custos
Conversão automatizada do código fonte
Reestruturação automatizadacom modificações manuais
Reestruturação mais mudanças de arquitetura
Reestruturação automatizadado programa
Reestruturação do programa e dos dados
A qualidade do software que deve passar pela reengenharia;
O apoio às ferramentas disponíveis para a reengenharia;
A extensão da conversão de dados requerida;
A disponibilidade de pessoal habilitado.
Converter um código de uma linguagem (ou versão) para outra, por exemplo FORTRAN para C
Pode ser necessária pelas seguintes razões: Atualização da plataforma de hardware Escassez de pessoal habilitado Mudanças na política organizacional Falta de suporte ao software
Somente é realista se um tradutor automático estiver disponível
É o processo de analisar o software com o objetivo de recuperar seu projeto e sua especificação
A engenharia reversa pode fazer parte do processo de reengenharia, mas não é o mesmo que a reengenharia. O objetivo da engenharia reversa é derivar o projeto ou a especificação de um sistema a partir de seu código-fonte; um novo sistema, com manutenção mais fácil
O processo inicia com uma fase de análise, utilizando-se de ferramentas automatizadas, a fim de descobrir sua estrutura
A estrutura de controle dos sistemas legados é complexa, com muitas ramificações incondicionais e a lógica de controle não é intuitiva. Essa estrutura pode ser afetada por manutenções regulares, tornando alguns códigos inatingíveis
O programa pode ser reestruturado automaticamente para eliminar declarações incondicionais
Condições complexas podem ser simplificadas, como parte do processo de reestruturação de programa
É o processo de reorganizar um programa, de modo que as partes relacionadas sejam coletadas e consideradas um único módulo
A modularização em geral é realizada manualmente, com a inspeção e a edição do código
Processo de análise e reorganização de estruturas de dados e, algumas vezes, os valores dos dados em um sistema, para torná-lo mais compreensível
Em princípio, a reengenharia de dados não deverá ser necessária, se a funcionalidade do sistema permanecer inalterada
SOMMERVILLE, Ian, Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.