SlideShare uma empresa Scribd logo
1 de 39
Reengenharia de Software
APRESENTAÇÃO Participantes Daniele Ortiz MaurícioSpolavori Peterson Basso Rafael Berto
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
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
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
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.
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.
REENGENHARIA Modelo de BPR Assim como a maioria das atividades de engenharia, a reengenhariados processos de negócioé iterativa. 
REENGENHARIA Ciclo Abrange uma sériede atividades.
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
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.
ENGENHARIA REVERSA Primórdios Bombardeiro B-29 (Enola Gay) Processador Intel 8080 Tupolev TU-4
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.
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.
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.
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
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. 
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.
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.
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
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.
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.
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.
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.
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.
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
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.
ENGENHARIA AVANTE Para… ArquiteturaCliente / Servidor ArquiteturaOrientada a Objetos Interface com o Usuário
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Leinylson Fontinele
 
Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Elmano Cavalcanti
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de softwareBruno Nascimento
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitosFernando Palma
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Modelo de especificação de caso de uso
Modelo de especificação de caso de usoModelo de especificação de caso de uso
Modelo de especificação de caso de usoLeandro Rodrigues
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de RequisitosPaulo Furtado
 
Prototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadePrototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadeErico Fileno
 
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Victor Rentea
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareAlexandreBartie
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareElaine Cecília Gatto
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de softwareAlex Camargo
 
Exemplo de documento de requisitos
Exemplo de documento de requisitosExemplo de documento de requisitos
Exemplo de documento de requisitosLeandro Rodrigues
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 

Mais procurados (20)

Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 
Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de software
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitos
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Modelo de especificação de caso de uso
Modelo de especificação de caso de usoModelo de especificação de caso de uso
Modelo de especificação de caso de uso
 
Comandos CMD
Comandos CMDComandos CMD
Comandos CMD
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de Requisitos
 
Prototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadePrototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta Fidelidade
 
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de Software
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Exemplo de documento de requisitos
Exemplo de documento de requisitosExemplo de documento de requisitos
Exemplo de documento de requisitos
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 

Semelhante a Reengenharia de Software

Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Rejuvenescimento Software
Rejuvenescimento SoftwareRejuvenescimento Software
Rejuvenescimento SoftwareMarcus Oliveira
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Aula 22 --reengenharia_de_software
Aula 22 --reengenharia_de_softwareAula 22 --reengenharia_de_software
Aula 22 --reengenharia_de_softwareHannibalking King
 
Manuscrito Rejuvenescimento De Software
Manuscrito   Rejuvenescimento De SoftwareManuscrito   Rejuvenescimento De Software
Manuscrito Rejuvenescimento De SoftwareMarcus Oliveira
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Reuso de software
Reuso de softwareReuso de software
Reuso de softwarerebekinha
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
Reengenharia Reversa
Reengenharia ReversaReengenharia Reversa
Reengenharia ReversaBurtPepper
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
 
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...Antonio Correia
 

Semelhante a Reengenharia de Software (20)

Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Rejuvenescimento Software
Rejuvenescimento SoftwareRejuvenescimento Software
Rejuvenescimento Software
 
Tees Final
Tees FinalTees Final
Tees Final
 
Engenharia Direta
Engenharia DiretaEngenharia Direta
Engenharia Direta
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Aula 22 --reengenharia_de_software
Aula 22 --reengenharia_de_softwareAula 22 --reengenharia_de_software
Aula 22 --reengenharia_de_software
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Academia do programador
Academia do programadorAcademia do programador
Academia do programador
 
Manuscrito Rejuvenescimento De Software
Manuscrito   Rejuvenescimento De SoftwareManuscrito   Rejuvenescimento De Software
Manuscrito Rejuvenescimento De Software
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Reengenharia Reversa
Reengenharia ReversaReengenharia Reversa
Reengenharia Reversa
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...
REfacTool - Uma ferramenta de refactoring para disciplinar anotações em linha...
 

Último

AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022LeandroSilva126216
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaCentro Jacques Delors
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosGentil Eronides
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasrfmbrandao
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Centro Jacques Delors
 

Último (20)

AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exercicios
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 

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