19
Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof(a): Rosemary Borges [email protected]

Aula 22 --reengenharia_de_software

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Aula 22 --reengenharia_de_software

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Prof(a): Rosemary [email protected]

Page 2: Aula 22 --reengenharia_de_software

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.

Page 3: Aula 22 --reengenharia_de_software

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.

Page 4: Aula 22 --reengenharia_de_software

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.

Page 5: Aula 22 --reengenharia_de_software

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.

Page 6: Aula 22 --reengenharia_de_software

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.

Page 7: Aula 22 --reengenharia_de_software

Distinção entre o desenvolvimento de um novo sistema (1) e reengenharia (2).Fonte: SOMMERVILLE

(1)

(2)

Page 8: Aula 22 --reengenharia_de_software

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.

Page 9: Aula 22 --reengenharia_de_software

Processo de reengenharia. Fonte: SOMMERVILLE

Page 10: Aula 22 --reengenharia_de_software

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.

Page 11: Aula 22 --reengenharia_de_software

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.

Page 12: Aula 22 --reengenharia_de_software

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

Page 13: Aula 22 --reengenharia_de_software

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.

Page 14: Aula 22 --reengenharia_de_software

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

Page 15: Aula 22 --reengenharia_de_software

É 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

Page 16: Aula 22 --reengenharia_de_software

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

Page 17: Aula 22 --reengenharia_de_software

É 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

Page 18: Aula 22 --reengenharia_de_software

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

Page 19: Aula 22 --reengenharia_de_software

SOMMERVILLE, Ian, Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.