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

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

- Engenharia Reversa - Reengenharia

Apresentações semelhantes


Apresentação em tema: "- Engenharia Reversa - Reengenharia"— 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 Abstração 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.

6 Abstração

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 Ferramentas Visualização de Código
Linguagens Produto Referência AD/Advantage Aplicativos 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. ENSEMBLE C, 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. HINDSIGHT - Gráficos de estruturas e diagramas para geração de relatórios Advanced Software Automation Inc.

15 Ferramentas Visualização de Código
Linguagens Produto Referência SEELA C, 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 - 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.

16 Ferramentas Entendimento de Programa
Linguagem Produto Referência RIGI COBOL, C, Unix Redocumentaçã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

17 O que é Reengenharia? 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.”

18 Passos da Reengenharia
A reengenharia resume-se aos seguintes passos: 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

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

20 Porque fazer Reengenharia?
Porque devemos Reengenhar um Software? 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. 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: 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. Reestruturação de Documentação: documentação escassa é uma característica que muitos sistemas em funcionamento possuem há muito tempo. 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
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. Reestruturação de dados: Dissecar o sistema e implementar outros modelos de dados se necessário, a fim de aprimorar a arquitetura do sistema. 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: Sem mudança de funcionalidade: (código legado é recuperado, usando mesmo modelo lógico, é reimplementado na linguagem escolhida) 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) 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 ec/RT_045.pdf ngenharia.pdf


Carregar ppt "- Engenharia Reversa - Reengenharia"

Apresentações semelhantes


Anúncios Google