Curso Superior deTecnologia em Análise e Desenvolvimento de Sistemas
Prof(a): Rosemary Borges
rosemary.borges@cefetrn.br
 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.
Especificação do
Sistema
Projeto e
implementação
Novo Sistema
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 automatizada
com modificações manuais
Reestruturação mais
mudanças de arquitetura
Reestruturação automatizada
do 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: AddisonWesley,
2003.

Aula 22 --reengenharia_de_software

  • 1.
    Curso Superior deTecnologiaem Análise e Desenvolvimento de Sistemas Prof(a): Rosemary Borges rosemary.borges@cefetrn.br
  • 2.
     A reengenhariade Software é uma das estratégias de evolução de software.  Se ocupa de reimplementar sistemas legados, para que sua manutenção seja fácil.
  • 3.
     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.
  • 4.
     A manutençãode 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.
  • 5.
     A reengenhariamelhora a estrutura do sistema, cria uma nova documentação relacionada e faz com que ela seja de mais fácil compreensão.
  • 6.
     Tem duasvantagens 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.
  • 7.
    Especificação do Sistema Projeto e implementação NovoSistema Distinção entre o desenvolvimento de um novo sistema (1) e reengenharia (2). Fonte: SOMMERVILLE (1) (2)
  • 8.
     Um processode 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.
  • 9.
  • 10.
     Tradução docó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.
  • 11.
     A reengenhariapode 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.
  • 12.
     Os custosda reengenharia dependem da extensão do trabalho que é realizado. Aumento dos custos Conversão automatizada do código fonte Reestruturação automatizada com modificações manuais Reestruturação mais mudanças de arquitetura Reestruturação automatizada do programa Reestruturação do programa e dos dados
  • 13.
     A qualidadedo 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.
  • 14.
     Converter umcó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
  • 15.
     É oprocesso 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
  • 16.
     A estruturade 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
  • 17.
     É oprocesso 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
  • 18.
     Processo deaná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
  • 19.
     SOMMERVILLE, Ian,Engenharia de Software. 6 ed. São Paulo: AddisonWesley, 2003.