• Like
Reengenharia de Software
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Reengenharia de Software

  • 3,368 views
Published

Trabalho acadêmico sobre Reengenharia de Software para a cadeira de Engenharia de Software do Unilasalle Canoas

Trabalho acadêmico sobre Reengenharia de Software para a cadeira de Engenharia de Software do Unilasalle Canoas

Published in Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,368
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
134
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Reengenharia
    de Software
  • 2. APRESENTAÇÃO
    Participantes
    Daniele Ortiz
    MaurícioSpolavori
    Peterson Basso
    Rafael Berto
  • 3. REENGENHARIA
    Conceito
    A Reengenharia consiste em repensar e redesenhar radicalmente os processos de negócio com o objetivo de conseguir grandes melhoras de desempenho, seja nos custos, na qualidade, no serviço ou no tempo.
    "Encarar o amanhã pensando em usar métodos de ontem é ver a vida estagnada"
    James Bell
  • 4. REENGENHARIA
    Origem
    O conceito de reengenharia surgiu no início da década de 1990 em um artigo escrito por Michael Hammer para a Harvard Business Review.
    " Está na hora de parar de seguir as trilhas das vacas. Em vez de acrescentar processos ultrapassados em hardware e software, devemos rejeitá-los e começar de novo. Devemos fazer uma "reengenharia" em nossos negócios. "
    Michael Hammer
  • 5. REENGENHARIA
    Motivações
    O sistema não atende mais as necessidades (requisitos)
    Sistema sem documentação
    Modernização de sistemas legados
    Custo muito alto para manter o sistema legado
    Código muito bagunçado e com muitos erros
    Processos de negócio ultrapassados
  • 6. REENGENHARIA
    Introdução
    A Reengenharia ocorre em dois níveis:
     
    Reengenharia de processo de negócio, concentra-se nos processos de negócio para melhorar a competitividade em alguma área.
    Reengenharia de Software, examina os sistemas de informação com a finalidade de reestruturá-los para que tenham uma melhor qualidade.
  • 7. A reengenharia de processos de negócio (BPR) muitas vezes resulta em nova funcionalidade de software, enquanto a reengenharia de software trabalha para substituir funcionalidades existentes por um software melhor, mais fácil de manter.
  • 8. REENGENHARIA
    Modelo de BPR
    Assim como a maioria das atividades
    de engenharia, a reengenhariados processos de negócioé iterativa. 
  • 9. REENGENHARIA
    Ciclo
    Abrange uma sériede atividades.
  • 10. REESTRUTURAÇÃO
    De Documentos
    Pouca documentação é a marca registrada de muitos sistemas herdados.
    O que fazer?
    Se o sistema funciona, não documenta-se nada
    A documentação precisa ser atualizada, mas os recursos são limitados- Documenta-se apenas as partes que estão sofrendo modificações
    É necessário redocumentar por completo- Limita-se a documentação ao mínimo essencial
  • 11. ENGENHARIA REVERSA
    Conceito
    Consiste em analisar o sistema ou a ferramenta para criar uma representação dela. Objetivo é derivar o projeto ou a especificação de um sistema a partir de seu código-fonte; um novo sistema, com manutenção mais fácil.
     
    A Engenharia Reversa faz parte do processo de reengenharia, mas não é o mesmo que a Reengenharia visto que esta analisa oprojeto e cria uma representação do mesmo quefuncione exatamente como a primeira, mas quenão seja meramente uma cópia dela.
  • 12.
  • 13. ENGENHARIA REVERSA
    Primórdios
    Bombardeiro B-29 (Enola Gay)
    Processador Intel 8080
    Tupolev TU-4
  • 14. ENGENHARIA REVERSA
    Porqueutilizar?
    Sistema  iniciado a muitos anos, com pouca documentação e sem atualização.
    Desenvolvedores não fazem mais parte da empresa
    Trechos de código criados sem nenhum padrão.
    Sistema implementado numa linguagem antiga (Cobol, Fortran, APL).
    Quando o suporte de hardware ou software se torna obsoleto.
    Disponibilizar novas funcionalidades.
    Correção de bugs.
  • 15. ENGENHARIA REVERSA
    Elementos
    1. Nível de Abstração: caracterizado pelo nível de detalhes durante o processo de desenvolvimento do projeto. 
    Nível de abstração e grau de abstração são grandezas distintas. O nível de abstração diferencia os estágios do projeto e o grau de abstração está intrínseco no projeto. 
    Quanto mais detalhado o projeto (baixo grau de abstração) e quanto mais sucinto (alto grau de abstração).
     
    2. Completeza: refere-se ao nível de detalhes que é fornecido em cada nível de abstração e indica o quão abrangente é o processo de engenharia reversa. Quanto mais abrangente ele for, mais difícil será manter um nível de abstração alto, pois isso demandará muito trabalho.
  • 16. ENGENHARIA REVERSA
    Elementos
    3. Interatividade: refere-se ao grau de participação do ser humano no processo de engenharia reversa. Conforme o nível de abstração aumenta, a interatividade deve aumentar ou a completitude será prejudicada. 
     
    4. Direcionalidade: sentido único, informação extraída do código fonte é usada durante as atividades de manutenção. Sentido duplo, a informação é usada para "alimentar" uma ferramenta de reengenharia que tentará regenerar o programa antigo.
  • 17. Códigofontesujo
    Códigoreestruturado
    Processamento
    Códigofontelimpo
    Extração de abstrações
    Interface
    Especificação Final
    Base de dados
    Refinar e simplificar
    Especificação Final
  • 18. ENGENHARIA REVERSA
    Entendimento
    Determinar quais são os componentes básicos do sistema, como arquivos, rotinas, variáveis, diretório de determinado arquivo, onde se encontram determinadas variáveis, etc.
    Qual arquivo depende de outro, qual rotina depende de outra, etc.
    Realizar uma análise dinâmica, que consiste em executar o programa e monitorar os valores das variáveis, quais funções são chamadas, etc.
    Realizar análise estática para saber quais funções uma função pode chamar. Mas para saber quais ela realmente chama, precisamos da análise dinâmica, etc. 
  • 19. ENGENHARIA REVERSA
    Aplicações
    SambaPermite que sistemas que não estão rodando o Microsoft Windows compartilhem arquivos com sistemas que estão utilizando esta plataforma.
    WinePermite executar aplicativos desenvolvidos para Windows no GNU/Linux. 
    OpenOffice.orgÉ um conjunto de aplicativos OpenSource. Disponível para diferentes plataformas: incluindo Microsoft Windows, Unix, Solaris, Linux e Mac OS. Compatível com o Microsoft Office.
  • 20. ENGENHARIA REVERSA
    AspectosLegais
    Nos Estados Unidos, a lei “Digital Millenium Copyright Act” aprovada em 1998, protege os direitos autorais na informática e faz restrições em relação à engenharia reversa. Só é permitido analisar para fins de compatibilidade com outros softwares e/ou hardware. 
    Na União Européia, o “EU Copyright Directive”, de 2001, é similar ao “Digital Millenium Copyright Acts”. Não é tão restritiva.
    No Brasil, não existe uma lei específica sobre Engenharia Reversa, mas quando ocorre verifica-se se o objetivo. Constatado crime, a Lei de Software e de Direitos Autorais protege seus autores.
  • 21. REESTRUTURAÇÃO
    Conceito
    A reestruturação de software modifica o código-fonte e/ou dados com o objetivo de torná-los mais amenos a futuras modificações.
     
    Tende a se focar nos detalhes de projeto de módulos individuais e nas estruturas de dados locais definidas nesses módulos.
     
    Se a reestruturação abrange a arquitetura de software, a reestruturação se transforma em Engenharia Avante.
    Etapas de Reestruturação:
    Reestruturação do Código
    Reestruturação dos Dados
  • 22. REESTRUTURAÇÃO
    De Código
    É realizada para executar um projeto que produz a mesma função que o programa original, porém com mais qualidade.
    Benefícios:
    Aumento da qualidade, devido ao código construído seguir boas práticas de design. 
    Deixa o código mais “limpo”, facilitando o entendimento deste.
    Facilita as manutenções no código.
    Apesar de poderaliviarproblemasimediatos, relacionados com depuraçãooupequenasmodificações, nãoconstituireengenharia.
  • 23.
  • 24. REESTRUTURAÇÃO
    De Dados
    Antes de ser realizada a reestruturação de dados é feita a análise do código-fonte, também chamada de análise de dados.
    Quando a estrutura de dados é fraca, os dados passam por reengenharia, começa então o reprojeto dos dados.
    As modificaçõesnos dados resultarãotantoemmodificaçõesarquiteturaisquanto de código.
  • 25. REESTRUTURAÇÃO
    Formas de Reprojeto
    Padronização de registro de dados
    Esclarece definições de dados para obter consistência entre os nomes dos itens de dados, ou entre os formatos de registro físico dentro da estrutura de dados existentes.
    Racionalização dos nomes dos dados
    Garante que todas as convenções de denominação de dados atendam aos padrões locais e que os sinônimos sejam eliminados a medida que os dados fluam através do sistema.
  • 26. REESTRUTURAÇÃO
    Ferramentas
    DMS Software ReengineeringToolkitReestruturação para COBOL,C/C++, Java, FORTRAN 90 e VHDL.
    FORESYSReestruturação para FORTRAN.
    FunctionEncapsulationToolReestruturação de programas antigos em C para C++. 
    plusFORTReestruturação para FORTRAN e de FORTRAN para C.
  • 27. ENGENHARIA AVANTE
    Melhorias
    Como acomodar alterações exigidas pelo usuário com milhares de linhas de código fonte sem nenhuma documentação?
    Podemos batalhar modificação por modificação
    Podemos tentar entender o funcionamento interno paratornar as modificações mais eficazes
    Podemos reprojetar, recodificar e testar a funcionalidadeque exige modificação
    Podemos reprojetar, recodificar e testar o softwareinteiro, afim de facilitar melhorias futuras
    Normalmente é usada a primeira opção, mas isso não querdizer que seja a melhor opção.
  • 28.
  • 29. ENGENHARIA AVANTE
    Manter x Redesenvolver
    Devemos considerar os seguintes pontos:
    Custo para manter o código-fonte atual é de 20 a 40 vezes do que desenvolver um novo código
    Reprojetar a arquitetura do software pode facilitar manutenções futuras
    O fato de existir um protótipo do software, pode aumentar a produtividade do desenvolvimento
    Usuário tem mais experiência, e pode sugerir melhorias em funcionalidades
    Ferramentas automatizadas podem facilitar o processo
    Documentação passará a existir
  • 30. ENGENHARIA AVANTE
    O que é issoafinal?
    O processo de engenharia avante aplica conceitos e métodos de engenharia de software para recriar uma aplicação existente. Na maioria dos casos, a engenharia avante não cria simplesmente um equivalente moderno de um programa antigo.
    A idéia principal é que o programa redesenvolvido amplie a capacidade da aplicação antiga.
  • 31. ENGENHARIA AVANTE
    Para…
    ArquiteturaCliente / Servidor
    ArquiteturaOrientada a Objetos
    Interface com o Usuário
  • 32. ENGENHARIA AVANTE
    ArquiteturaCliente / Servidor
    É importante notar que a migração de um computador de grande porte para cliente/servidor exige reengenharia, tanto do negócio quanto de software.
    Em alguns casos, a migração para uma arquitetura cliente/servidor deve ser abordada não como reengenharia, mas como um esforço de desenvolvimento novo. A reengenharia entra em cena apenas quando a funcionalidade específica do sistema antigo precisa ser integrada na nova arquitetura.
    Passos da engenharia para arquiteturas Cliente/Servidor:
    Engenharia reversa
    Preparação/Adaptação da infra-estrutura
    Migração do Banco de Dados para o servidor
    Adaptação do software para rodar no cliente
  • 33. ENGENHARIA AVANTE
    ArquiteturaOrientada a Objetos
    Podemos afirmar que é uma das arquiteturas mais utilizadas atualmente.
    Na maioria dos casos, migrar para essa arquitetura ocasiona a reescrita de muito código, quando não todo.
    Passos da engenharia para arquiteturas Orientadas a Objetos:
    Engenharia reversa
    Criação de modelos de dados, funcionais e comportamentais
    Criação de casos de uso
    Modelagem de Classes
  • 34. ENGENHARIA AVANTE
    Interfaces com o Usuário
    Passos da engenharia para Interfaces com o Usuário:
    Entender as tarefas realizadas e os dados importantes apresentados
    Remodelar o comportamento, sem ser radical
    Aplicar melhorias
  • 35.
  • 36. ENGENHARIA AVANTE
    Custox Benefício
    Análise custo/benefício por Sneed:
    P1 = custo de manutenção anual corrente de uma aplicação
    P2 = custo de operação anual corrente para uma aplicação
    P3 = valor de negócio anual corrente de uma aplicação
    P4 = custo de manutenção anual previsto após reengenharia
    P5 = custo de operação anual previsto após reengenharia
    P6 = valor de negócio anual previsto após reengenharia
    P7 = custo estimado de reengenharia
    P8 = período estimado para reengenharia
    P9 = fator de risco de reengenharia ( P9 = 1,0 é nominal)
    L = esperança de vida do sistema
  • 37. ENGENHARIA AVANTE
    Custox Benefício
    Custo com aplicação atual:
    Cmanut = [P3 – (P1 + P2)]xL
    Custo com reengenharia:
    Creeng = [P6 – (P4 + P5)X(L – P8) – (P7 x P9)]
     
    Custo/Benefício = Creeng - Cmanut
  • 38.
  • 39. REENGENHARIA
    Referências
    Engenharia de Software 6ª Edição – Roger S Pressman
    http://isosoftware.blogspot.com/2009/10/engenharia-reversa-de-software.html 
    Engenharia Reversa – www.youtube.com.br
    Engenharia Reversa - Proj. Assis. por Comp.  - www.youtube.com.br
    http://dinamico.orgfree.com/softwares/desafios.html
    http://www.dcc.ufrj.br/~schneide/es/2001/1/g18/Engenharia%20Reversa.htm
    http://www.slideshare.net/adorepump/engenharia-reversa-e-reengenharia-software-presentation
    http://www.dcc.ufrj.br/~schneide/es/2002/1/g13/trabalho.htm
    http://www.dcc.ufrj.br/~schneide/es/2001/1/g19/atividades.html
    http://projetos.inf.ufsc.br/arquivos_projetos/projeto_218/TCC-PauloCesarAllebrandt.pdf