Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Engenharia Reversa e Reengenharia Software   Engenharia de Software Prof. Rodrigo Manoel Ricardo Vieira Edilson M Bortolet...
<ul><li>A manutenção software está cercada de dificuldades, sendo q as soluções não acompanham essa evolução. O código fon...
O que é Reengenharia de Software   <ul><li>Primeiramente devemos considerar três conceitos dependentes: a existência de um...
Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.
Engenharia Reversa Definições     O processo inverso à engenharia progressiva, caracterizado pelas atividades retroativas ...
<ul><li>Software visualizado de diferentes maneiras </li></ul><ul><ul><li>Visão a nível implementacional: caracteristicas ...
<ul><li>A representação extraída do código pode diferir de uma representação similar </li></ul>Visões do Software
Visões do Software
Visões do Software <ul><li>As vezes é nescessário acrescentar: </li></ul><ul><ul><li>Informações do código </li></ul></ul>...
Categorias <ul><li>As categorias são divididas em: </li></ul><ul><ul><li>Visualização do código </li></ul></ul><ul><ul><li...
Visualização do código <ul><li>Fase de redocumentação </li></ul><ul><ul><li>Representação a partir do código fonte </li></...
Entendimento do Programa <ul><li>Recuperação do projeto: a partir da compbinação entre: </li></ul><ul><ul><li>Código </li>...
Entendimento do Programa <ul><li>Um completo entendimento de programa busca reconstruir não somente a função do sistema, m...
Entendimento do Programa
Reengenharia <ul><li>Definições: </li></ul><ul><li>Chiskofsky (1990) – alteração de um sistema  de software; </li></ul><ul...
Objetivo <ul><li>Construir um sistema novo com maior facilidade de manutenção e a engenharia reversa é usada como parte do...
Categorias <ul><li>Reengenharia de Processos Administrativos </li></ul><ul><li>Reengenharia de Processos Produtivos </li><...
O Porque da Reengenharia <ul><li>Necessidade de melhoria nos serviços e produtos oferecidos; </li></ul><ul><li>Compressão ...
Software Legado <ul><li>Software antigos, onde nenhuma pessoa que participou da sua elaboração esta mais na equipe </li></...
<ul><li>Migrar software de plataformas centralizadas para ambientes distribuído </li></ul>Emprego da Reengenharia A progra...
<ul><ul><li>Como Realizar a Reengenharia </li></ul></ul><ul><li>Constituído de duas fases distintas </li></ul><ul><li>“ De...
Considerações num processo de reengenharia : - Executado se existir um argumento aceitável de custo/benefício - Implica me...
<ul><ul><li>Processo de Reengenharia </li></ul></ul>- Realizar a engenharia reversa e identificar  os componentes do siste...
<ul><ul><li>Modelo de Reengenharia de Processos  </li></ul></ul>O modelo do processo de Reengenharia de Software define se...
Aplica₤ões da Reengenharia de Software -  documentar os softwares atuais;  -  melhorar a leitura do código ;  -  redesenha...
Upcoming SlideShare
Loading in …5
×

Engenharia Reversa e Reengenharia Software

15,303 views

Published on

Published in: Technology
  • Be the first to comment

Engenharia Reversa e Reengenharia Software

  1. 1. Engenharia Reversa e Reengenharia Software Engenharia de Software Prof. Rodrigo Manoel Ricardo Vieira Edilson M Bortoletto Gabriel M Guerra Juliano Hideo
  2. 2. <ul><li>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. </li></ul>Introdução
  3. 3. O que é Reengenharia de Software <ul><li>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. </li></ul>
  4. 4. Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.
  5. 5. Engenharia 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.
  6. 6. <ul><li>Software visualizado de diferentes maneiras </li></ul><ul><ul><li>Visão a nível implementacional: caracteristicas da linguagem; </li></ul></ul><ul><ul><li>Visão a nível estrutural: detalhes da linguagem </li></ul></ul><ul><ul><li>Visão a nível funcional: função de um componente </li></ul></ul><ul><ul><li>Visão a nível domínio: contexto de operação do sistema </li></ul></ul>Visões do Software
  7. 7. <ul><li>A representação extraída do código pode diferir de uma representação similar </li></ul>Visões do Software
  8. 8. Visões do Software
  9. 9. Visões do Software <ul><li>As vezes é nescessário acrescentar: </li></ul><ul><ul><li>Informações do código </li></ul></ul><ul><ul><li>Informações provenientes de conhecimento humano </li></ul></ul>
  10. 10. Categorias <ul><li>As categorias são divididas em: </li></ul><ul><ul><li>Visualização do código </li></ul></ul><ul><ul><li>Entendimento do programa </li></ul></ul>
  11. 11. Visualização do código <ul><li>Fase de redocumentação </li></ul><ul><ul><li>Representação a partir do código fonte </li></ul></ul><ul><ul><li>Inteção de recuperar documentação </li></ul></ul><ul><ul><li>Visualização do código, não transcende a visão em nível estrutural </li></ul></ul>
  12. 12. Entendimento do Programa <ul><li>Recuperação do projeto: a partir da compbinação entre: </li></ul><ul><ul><li>Código </li></ul></ul><ul><ul><li>Documentação existente </li></ul></ul><ul><ul><li>Experiências pessoais </li></ul></ul><ul><ul><li>Conhecimentos gerais sobre o problema e o domínio de aplicação </li></ul></ul>
  13. 13. Entendimento do Programa <ul><li>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. </li></ul><ul><li>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. </li></ul>
  14. 14. Entendimento do Programa
  15. 15. Reengenharia <ul><li>Definições: </li></ul><ul><li>Chiskofsky (1990) – alteração de um sistema de software; </li></ul><ul><li>Wander (1992) – melhoramento do sistema, sem alterações de suas funções; </li></ul><ul><li>Premerlani e Blaha (1994) – reduzir custos de manutenção e melhoria na flexibilidade do software; </li></ul><ul><li>Pressman (1995) – reconstrução do sistema preservando as funções existentes, ao mesmo tempo que se adiciona novas funções; </li></ul>
  16. 16. Objetivo <ul><li>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. </li></ul>
  17. 17. Categorias <ul><li>Reengenharia de Processos Administrativos </li></ul><ul><li>Reengenharia de Processos Produtivos </li></ul><ul><li>Reengenharia de Sistemas de Software ou Produtos </li></ul>
  18. 18. O Porque da Reengenharia <ul><li>Necessidade de melhoria nos serviços e produtos oferecidos; </li></ul><ul><li>Compressão na margem de lucro; </li></ul><ul><li>Redução do clico de vida dos produtos; </li></ul><ul><li>Explosão tecnológica; </li></ul><ul><li>Desgaste de Software </li></ul>
  19. 19. Software Legado <ul><li>Software antigos, onde nenhuma pessoa que participou da sua elaboração esta mais na equipe </li></ul><ul><li>Falta de Documentação </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul><ul><li>Documentação desatualizada, não auxiliando em nada a equipe de manutenção; </li></ul><ul><li>Dificuldade de predizer as conseqüências de efeitos colaterais; </li></ul><ul><li>Dificuldade de administrar múltiplas alterações concorrentes. </li></ul>
  20. 20. <ul><li>Migrar software de plataformas centralizadas para ambientes distribuído </li></ul>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.
  21. 21. <ul><ul><li>Como Realizar a Reengenharia </li></ul></ul><ul><li>Constituído de duas fases distintas </li></ul><ul><li>“ Desmontado” - visando seu entendimento </li></ul><ul><li>Reconstruído - na forma desejada </li></ul>Reengenharia = Engenharia Reversa +  Engenharia Progressiva  pode ser de dois tipos: -Alterações parciais de funcionalidade -Alterações de implementação
  22. 22. 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.
  23. 23. <ul><ul><li>Processo de Reengenharia </li></ul></ul>- Realizar a engenharia reversa e identificar os componentes do sistema - Decidir sobre alterações na funcionalidade - Reprojetar o sistema progressiva reimplementando o sistema
  24. 24. <ul><ul><li>Modelo de Reengenharia de Processos </li></ul></ul>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
  25. 25. 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

×