A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

- ENGENHARIA REVERSA - REENGENHARIA André Budziak Ednilson Miura Henrico Gonçalves Priscila Scharneski Rafael Mezzadri.

Apresentações semelhantes


Apresentação em tema: "- ENGENHARIA REVERSA - REENGENHARIA André Budziak Ednilson Miura Henrico Gonçalves Priscila Scharneski Rafael Mezzadri."— Transcrição da apresentação:

1 - ENGENHARIA REVERSA - REENGENHARIA André Budziak Ednilson Miura Henrico Gonçalves Priscila Scharneski Rafael Mezzadri

2 INTRODUÇÃO  A manutenção é uma das fases mais dispendiosas do ciclo de vida, e um dos principais fatores que ocasiona esse dispêndio é a inexistência, a não completitude e/ou desatualização da documentação de software. Com a falta do programador responsável, acaba sobrando muitas vezes somente o código fonte sem a documentação.  Uma das soluções para amenizar esse esforço da manutenção é a aplicação de Engenharia Reversa para recuperação de informações

3 O que é Engenharia Reversa?  O termo “Engenharia Reversa” tem sua origem na análise de hardware, pois é comum a prática de decifrar projetos de produtos finalizados com intuito de duplicá-los.  O conceito de Engenharia Reversa é similar: “Processo de exame e compreensão do software existente, para recapturar ou recriar o projeto e decifrar os requisitos atualmente implementados pelo sistema, apresentando-os em um nível ou grau mais alto de abstração.”

4 Progressiva X Reversa  Engenharia Progressiva: Processo tradicional de engenharia de software, caracterizado pelas atividades progressivas do ciclo de vida, que partem de um alto nível de abstração, para um baixo nível de abstração.  Engenharia Reversa: O processo inverso a 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.

5  Por meio da engenharia reversa um software pode ser visualizado em diferentes níveis de abstração. Cada visualização abstrai características próprias da fase do ciclo de vida correspondente à abstração.  Nível de Abstração: Quanto maior for o nível de abstração, a generalidade das informações é maior, e mais compreensível o sistema fica. O objetivo da ER é atingir um alto grau de abstração partindo de um baixo grau. Abstração

6

7 Documentação Necessária  Quais os documentos utilizados para realizar engenharia reversa ?  - código fonte  - informações de usuários e/ou analista  - documentação existente (manual de usuário, manual de sistema, DFDs, fluxogramas, etc.)

8 Categorias de ER  São definidas duas categorias de Engenharia Reversa : a Visualização de Código e o Entendimento do Programa.  Visualização de Código: é a forma mais simples e mais antiga da Engenharia Reversa. A intenção é recuperar a documentação que já existiu, ou que deveria ter existido, sobre o sistema. A ênfase é a criação de visões adicionais, especialmente visões gráficas, que não foram criadas durante o processo original de Engenharia Progressiva.  Entendimento do Programa: é o conhecimento do domínio das informações externas. As deduções são adicionadas às observações feitas sobre o sistema através do exame do mesmo de modo a obter informações com nível mais alto de abstrações.

9 Visualização de Código  Também denominada Redocumentação. É a criação ou revisão de representações semanticamente equivalentes num mesmo nível de abstração.  O processo de Visualização de Código cria as representações a partir de informações obtidas apenas da análise do código fonte, embora a apresentação dessas informações possa se diversificar. As formas das representações são consideradas visões alternativas, cujo o objetivo é melhorar a compreensibilidade do sistema global.

10 Visualização de Código  As ferramentas usam o código fonte do software como entrada, analisam e extraem a arquitetura do programa, a estrutura de controle, o fluxo lógico, a estrutura de dados, o fluxo de dados e o fluxo de controle. Algumas ferramentas dessa categoria aplicam técnicas como: Fatiamento de Programa, Análise de Dependência.  Esse nível de entendimento não transcende a visão em nível- estrutural e não atribui significados para o sistema analisado. Recuperações mais ambiciosas tais como a função, os propósitos ou a essência do sistema, exigem um nível de entendimento maior e são definidas como Entendimento de Programa.

11 Entendimento de Programa  Entendimento de Programa recria abstrações do projeto a partir de uma combinação de código, documentação existente do projeto (se disponível), experiências pessoais, e conhecimentos gerais sobre o problema e o domínio de aplicação.  Sintetizando, Entendimento de Programa deve produzir todas as informações necessárias para se entender completamente o que o sistema faz, como, e por que o sistema faz.

12 Entendimento de Programa  Muitas das ferramentas de Entendimento de Programa possuem alguma forma de base de conhecimento que une padrões de programação a conceitos funcionais: Reconhecimento de Padrões, Análise Baseada na Intenção,...  Entendimento de Programa é a forma mais crítica de engenharia reversa porque tenta imitar o raciocínio humano na busca do entendimento.

13 Entendimento X Visualização  As ferramentas de Entendimento de Programa distinguem-se das ferramentas de Visualização de Código porque objetivam entender o sistema, em vez de simplesmente fornecer visões alternativas para auxiliar o usuário a entender o sistema.  Esse entendimento vai além do conhecimento em nível implementacional e estrutural, buscando obter o conhecimento em nível-funcional e até mesmo em nível de domínio (ambiente de operação do sistema).

14 FerramentasLinguagensProdutoReferência AD/AdvantageAplicativos de banco de dados Interface: McCabe & Associates Inc., e Centerline Software Inc., e Code Center -Diagramas dos relacionamentos lógicos e de dados Cincom Systems Inc. ENSEMBLEC, C++, Fortran Principais Plataformas: UNIX, e PCs -Diagramas de fluxo de dados - Análise de dependência de dados -Dicionário de dados -Especificações de módulos -Métricas de complexidade Cadre Technolog Inc. HINDSIGHTC, C++, Fortran- Gráficos de estruturas e diagramas para geração de relatórios Advanced Software Automation Inc. Ferramentas Visualização de Código

15 FerramentaLinguagensProdutoReferência SEELAC, COBOL,Ada, Pascal, Fortran, Mainframes - Linguagem de projeto de programa a partir do código fonte, com edição gráfica e documentação da estrutura do código com: listagens top down e sequenciais, diretórios de blocos e índices de definição de módulos Tuval Software Industries STP - Software Through Pictures -- Diagramas gráficos do código com descrição dos principais elementos do banco de dados, funções ou sub-rotinas que chamam, que são chamadas, variáveis usadas e escopo Interactive Development Environment Inc. Ferramentas Visualização de Código

16 FerramentaLinguagemProdutoReferência RIGICOBOL, C, UnixRedocumentação estrutural automática, produzindo grafos de fluxo de recursos e Reconhecimento de padrões e técnicas de composição de sistema para geração de abstrações de alto nível University of Victoria DESIRE Design Information Recovery Environment Protótipo C Modelo de Domínio (base de conhecimentos) Pattern Matching; Abstrações conceituais, que são informações formais e informais conhecidas, transformadas em idiomas usados para localizar padrões na implementação MCC Microelectronics and Computer Technologie Corporation Ferramentas Entendimento de Programa

17  A Reengenharia de Software poderia ser conceituada da seguinte forma: “É o exame de um sistema para reconstituí-lo em uma forma nova e a implementação subsequente dessa nova forma.“  A Reengenharia em si não se restringe somente ao software: “Pode ser aplicada numa empresa como um todo com o intuito de enxergá-la como uma grande rede de processos interconectados, onde cada processo seria entendido e reestruturado de forma a ser executado da melhor forma possível. A forma considerada ideal é adotada substituindo o processo atual.” O que é Reengenharia?

18 Passos da Reengenharia  A reengenharia resume-se aos seguintes passos: o Documentar os softwares atuais o Melhorar a leitura do código o Redesenhar as bases de dados o Alterar a plataforma de hardware o Converter linguagens o Adicionar novas funcionalidades e/ou capacidades o Facilitar os processos de manutenção

19  Benefícios da Reengenharia: o Redução de custos o Melhora no desempenho dos processos o Aproveitamento dos recentes avanços, usando-os como elemento diferenciador, de forma a obter uma vantagem competitiva Benefícios da Reengenharia?

20 Porque fazer Reengenharia?  Porque devemos Reengenhar um Software? o Manutenção: Softwares de difícil manutenção não são um problema novo. A ênfase da Reengenharia de Software tem sido nesses softwares, cuja facilidade manutenção tem sido posta em segundo plano por décadas. o Controle das Informações: A Reengenharia de Software procura modificar o software com o objetivo de que ele se enquadre num novo ambiente processual, tendo o seu valor expandido ou mesmo extrapolado. O software passa de mero coadjuvante nas atividades cotidianas para ser um dos atores do processo.

21 Modelo de Reengenharia  Reengenharia de processos: o Análise de inventário: é o levantamento do inventário de todas as informações sobre as aplicações, não importando o meio onde estejam. Deve fornecer uma descrição detalhada sobre cada aplicação ativa, classificando as informações colhidas de acordo com a sua importância. o Reestruturação de Documentação: documentação escassa é uma característica que muitos sistemas em funcionamento possuem há muito tempo. o Engenharia Reversa: Reverter um produto às suas definições mais abstratas de desenvolvimento, com o objetivo de facilitar nossa compreensão do que é o sistema, como funciona e como não funciona

22 Modelo de Reengenharia o Reestruturação de código: Violações da programação devem ser anotadas e então reestruturadas de forma a facilitar o seu entendimento e teste. o Reestruturação de dados: Dissecar o sistema e implementar outros modelos de dados se necessário, a fim de aprimorar a arquitetura do sistema. o Forward Engineering: é também chamada de renovação. Não apenas recupera as informações do software existente mas o altera e o reconstitui num esforço para aprimorar sua qualidade. O software reengenheirado implementa funções do sistema existente e também adiciona e/ou melhora a sua performance nas funções que já existiam e que foram mantidas.

23 Modelo de Reengenharia

24 Passos da Reengenharia  Engenharia Reversa  Estudo das possiblidades existentes  Reengenharia: o Sem mudança de funcionalidade: (código legado é recuperado, usando mesmo modelo lógico, é reimplementado na linguagem escolhida) o Mudança parcial de funcionalidade: parte do sistema continua com sua funcionalidade e uma parte será alterada (necessária integração entre as 2 partes) o Mudança total de funcionalidade: total reescrita, com aplicação de forward engineering

25 Conclusões  Em relação a tudo que foi explicitado sobre a Engenharia Reversa, é deixado de forma clara a noção de que ela não ocorre isoladamente e sim dentro de um processo de Reengenharia.  Tendo a Tecnologia de Informação como seu principal elemento alavancador, a Reengenharia de Software torna-se essencial dentro desse contexto pois é extremamente necessário entender de forma completa todos os sistemas da empresa.  Logo, dentro do contexto de Reengenharia de Software, a Engenharia Reversa passa a ter papel fundamental pois gera documentação suficiente para o entendimento dos sistemas e para uma possível reconstrução dos mesmos baseados em novos paradigmas e conceitos mais atualizados.

26 Referências  /Engenharia%20Reversa.htm /Engenharia%20Reversa.htm  ec/RT_045.pdf ec/RT_045.pdf  ngenharia.pdf ngenharia.pdf


Carregar ppt "- ENGENHARIA REVERSA - REENGENHARIA André Budziak Ednilson Miura Henrico Gonçalves Priscila Scharneski Rafael Mezzadri."

Apresentações semelhantes


Anúncios Google