25
Engenharia Reversa e Engenharia Reversa e Reengenharia Software Reengenharia Software Engenharia de Software Prof. Rodrigo Manoel Ricardo Vieira Edilson M Bortoletto Gabriel M Guerra Juliano Hideo

Engenharia Reversa e Reengenharia Software

Embed Size (px)

Citation preview

Page 1: Engenharia Reversa e Reengenharia Software

Engenharia Reversa e Engenharia Reversa e Reengenharia SoftwareReengenharia Software

Engenharia de Software

Prof. Rodrigo

Manoel Ricardo Vieira

Edilson M Bortoletto

Gabriel M Guerra

Juliano Hideo

Page 2: Engenharia Reversa e Reengenharia Software

A manutenção software está cercada de dificuldades, sendo q as soluções não acompanham essa evolução. O código fonte e documentação mal elaborada, além da falta de compreensão do sistema são problemas

constantes. A partir do momento em que um sistema começa a ser utilizado, ele entra em um estado contínuo de mudança. Mesmo que tenha sido

construído aplicando as melhores técnicas de projeto e codificação existentes, os sistemas vão se tornando

obsoletos em vista das novas tecnologias que são disponibilizadas.

IntroduçãoIntrodução

Page 3: Engenharia Reversa e Reengenharia Software

O que é Reengenharia de SoftwareO que é Reengenharia de Software

Primeiramente devemos considerar três conceitos dependentes: a existência de um processo de desenvolvimento de software, a presença de um sistema a ser analisado e a identificação de níveis de abstração.

Page 4: Engenharia Reversa e Reengenharia Software

Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.

Page 5: Engenharia Reversa e Reengenharia Software

Engenharia ReversaEngenharia Reversa

Definições

 

O processo inverso à engenharia progressiva, caracterizado pelas atividades retroativas do ciclo de vida, que partem de um baixo nível de abstração para um alto nível de abstração, é conhecido como engenharia reversa.

Page 6: Engenharia Reversa e Reengenharia Software

Visões do SoftwareVisões do Software

Software visualizado de diferentes maneiras–Visão a nível implementacional: caracteristicas

da linguagem;–Visão a nível estrutural: detalhes da linguagem–Visão a nível funcional: função de um

componente–Visão a nível domínio: contexto de operação do

sistema

Page 7: Engenharia Reversa e Reengenharia Software

A representação extraída do código pode diferir de uma representação similar

Visões do SoftwareVisões do Software

Page 8: Engenharia Reversa e Reengenharia Software

Visões do SoftwareVisões do Software

Page 9: Engenharia Reversa e Reengenharia Software

Visões do SoftwareVisões do Software

As vezes é nescessário acrescentar:

– Informações do código– Informações provenientes de

conhecimento humano

Page 10: Engenharia Reversa e Reengenharia Software

CategoriasCategorias

As categorias são divididas em:–Visualização do código–Entendimento do programa

Page 11: Engenharia Reversa e Reengenharia Software

Visualização do códigoVisualização do código

Fase de redocumentação–Representação a partir do código fonte– Inteção de recuperar documentação–Visualização do código, não transcende

a visão em nível estrutural

Page 12: Engenharia Reversa e Reengenharia Software

Entendimento do ProgramaEntendimento do Programa

Recuperação do projeto: a partir da compbinação entre:–Código–Documentação existente –Experiências pessoais–Conhecimentos gerais sobre o problema

e o domínio de aplicação

Page 13: Engenharia Reversa e Reengenharia Software

Entendimento do ProgramaEntendimento do Programa

Um completo entendimento de programa busca reconstruir não somente a função do sistema, mas também o processo pelo qual o sistema foi desenvolvido.

A categoria de entendimento de programa é a forma mais crítica de engenharia reversa, pois tenta aproximar-se do raciocínio humano na busca do entendimento.

Page 14: Engenharia Reversa e Reengenharia Software

Entendimento do ProgramaEntendimento do Programa

Page 15: Engenharia Reversa e Reengenharia Software

ReengenhariaReengenharia

Definições:

Chiskofsky (1990) – alteração de um sistema de software;

Wander (1992) – melhoramento do sistema, sem alterações de suas funções;

Premerlani e Blaha (1994) – reduzir custos de manutenção e melhoria na flexibilidade do software;

Pressman (1995) – reconstrução do sistema preservando as funções existentes, ao mesmo tempo que se adiciona novas funções;

Page 16: Engenharia Reversa e Reengenharia Software

ObjetivoObjetivo

Construir um sistema novo com maior facilidade de manutenção e a engenharia reversa é usada como parte do processo re reengenharia, pois fornece o atendimento do sistema a ser reconstruido.

Page 17: Engenharia Reversa e Reengenharia Software

CategoriasCategorias

Reengenharia de Processos Administrativos

Reengenharia de Processos Produtivos

Reengenharia de Sistemas de Software ou Produtos

Page 18: Engenharia Reversa e Reengenharia Software

O Porque da ReengenhariaO Porque da Reengenharia

Necessidade de melhoria nos serviços e produtos oferecidos;

Compressão na margem de lucro;

Redução do clico de vida dos produtos;

Explosão tecnológica;

Desgaste de Software

Page 19: Engenharia Reversa e Reengenharia Software

Software LegadoSoftware LegadoSoftware antigos, onde nenhuma pessoa que participou da sua elaboração

esta mais na equipe

Falta de Documentação

Desestruturação e dificuldade de entendimento do código, muitas vezes porque o software foi desenvolvido antes da introdução dos métodos de programação estruturada;

Programadores que não participaram do desenvolvimento de um produto de software sentem dificuldade em entender e mapear a funcionalidade para o código fonte;

Documentação desatualizada, não auxiliando em nada a equipe de manutenção;

Dificuldade de predizer as conseqüências de efeitos colaterais;

Dificuldade de administrar múltiplas alterações concorrentes.

Page 20: Engenharia Reversa e Reengenharia Software

Migrar software de plataformas centralizadas para ambientes distribuído

Emprego da Reengenharia

A programação orientada a objetos tem muitas vantagens sobre

a programação procedimental,

Sistemas flexíveis, adaptáveis e extensíveis. Possui uma coleção rica de

mecanismos composicionais para formação de classes, instanciação de

objetos, propriedades de heran₤a, polimorfismo e ocultamento de informa₤ões

Reengenheriar consome tempo e dinheiro. Pode-se tornar uma atividade que dura meses ou alguns anos.

Page 21: Engenharia Reversa e Reengenharia Software

Como Realizar a Reengenharia Constituído de duas fases distintas

“Desmontado” - visando seu entendimentoReconstruído - na forma desejada

Reengenharia = Engenharia Reversa + Engenharia Progressiva

pode ser de dois tipos:

-Alterações parciais de funcionalidade

-Alterações de implementação

Page 22: Engenharia Reversa e Reengenharia Software

Considerações num processo de reengenharia:

- Executado se existir um argumento aceitável de custo/benefício

- Implica melhoria através de reprojeto;

- Remover projetos ruins, e manter projetos bons e simples

- Problemas, os quais necessitam ser identificados;

- Ferramentas adequadas aos processos de reengenharia e não

os processos adequados às ferramentas.

Page 23: Engenharia Reversa e Reengenharia Software

Processo de Reengenharia

-Realizar a engenharia reversa e identificar

os componentes do sistema

-Decidir sobre alterações na funcionalidade

-Reprojetar o sistema progressiva reimplementando

o sistema

Page 24: Engenharia Reversa e Reengenharia Software

Modelo de Reengenharia de Processos O modelo do processo de Reengenharia de Software define seis atividades:

-Análise de inventário:

-Reestruturação de Documentação

-Engenharia Reversa

-Reestruturação de código

-Reestruturação de dados

-Forward Engineering: também chamada de renovação

Page 25: Engenharia Reversa e Reengenharia Software

Aplica₤ões da Reengenharia de Software

- documentar os softwares atuais; - melhorar a leitura do código ; - redesenhar as bases de dados ; - alterar a plataforma de hardware ; - converter linguagens ; - adicionar novas funcionalidades e/ou capacidades; - facilitar os processos de manutenção; - evoluir os softwares num ambiente CASE.

Desire / Decode / Art / Docket / Macs / Newcomb

Muito tem que se desenvolver sobre as Ferramentas de Auxílio à Reengenharia