Engenharia Reversa e Reengenharia Software

13,412 views
13,176 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,412
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
313
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×