Baixe o app para aproveitar ainda mais
Prévia do material em texto
ENGENHARIA REVERSA Introdução • A partir do momento que um sistema ou software começa a ser utilizado ele entra em um processo de contínua mudança. • Mesmo se tiver sido utilizado as melhores técnicas e metodologia de processos para o seu desenvolvimento, eles vão se tornar obsoletos em relação a novas tecnologias que estão sempre surgindo. Prof. Adelcio Marcos de Lima 2 Introdução • As mudanças mais comuns, além da correção de erros que os sistemas sofrem são: • Migração para novas plataformas • Extensão de funcionalidade • Mudança de tecnologia de hardware ou S.O. Prof. Adelcio Marcos de Lima 3 Introdução • Em geral essas mudanças são realizadas sem que haja a preocupação com a arquitetura geral do sistema, produzindo estruturas mal projetadas, documentação desatualizada, lógica e codificação ruins, sendo esses os focos que dificultam a manutenção em um sistema. (OSBORNE e CHIKOFSKY, 1990) Prof. Adelcio Marcos de Lima 4 Introdução • Quando o sistema fica inviável, porém é de grande utilidade ele deve ser reconstruído. Partindo-se do sistema existente (via interface, código-fonte ou ambiente), são abstraídas as suas funcionalidades, e são construídos os modelos da análise o projeto e o novo software. A este processo dá-se o nome de Reengenharia de Software. Prof. Adelcio Marcos de Lima 5 Exemplo Prof. Adelcio Marcos de Lima 6 Reengenharia e Engenharia Reversa • A engenharia reversa é a atividade de tomar algo pronto e tentar recuperar o seu projeto. Ou seja, tentar esquematizar a sua arquitetura, criando um nível de abstração maior do que o código- fonte, no caso de um software. • A reengenharia, é uma extensão da engenharia reversa. Também extrai as informações do produto pronto, porém tem o objetivo de gerar um novo produto, mais correto e mais eficiente. Prof. Adelcio Marcos de Lima 7 Produto Prof. Adelcio Marcos de Lima 8 Engenharia Reversa Reengenharia (Novo Produto) Motivações Econômicas, Militares, Necessidade Pessoal Curiosidade Humana: Compreensão e Domínio. Compreensão Observação e Entendimento Domínio Possibilidade de modificá-lo Prof. Adelcio Marcos de Lima 9 Motivações Apesar de parecer, a engenharia reversa não pode ser considerada uma espécie de cópia, pois se trata apenas do estudo daquilo que foi criado. A cópia é somente uma das consequências possíveis do estudo de um produto ou ideia. Prof. Adelcio Marcos de Lima 10 Engenharia Reversa Diferentemente do que pode-se pensar, esta prática não surgiu com a computação, apenas foi absorvida de outros tipos de indústrias onde ela já existia há decadas. Na industria automobilistica, por exemplo, os fabricantes algumas vezes compram um veículo de outro fabricante para desmontá-lo, examinar suas peças e componentes para aperfeiçoar seus próprios veículos com componentes ou tecnologias similares. Prof. Adelcio Marcos de Lima 11 Reengenharia de Software Legado Um software legado pode ser definido informalmente como aquele que executa tarefas úteis para a organização, porém foi desenvolvido com tecnologias ou técnicas atualmente obsoletas. A quantidade de código em sistemas legados é imensa. Em 1990, (Ulrich, 1993), estimava que existia 120 bilhões de linhas de código desse tipo, a maioria em COBOL ou FORTRAN. Prof. Adelcio Marcos de Lima 12 Mudança de Paradigma Muitos sistemas construídos com o paradigma estruturado, que já teve seus tempos de domínio e ser a melhor maneira de se produzir um software, vem perdendo espaço para o paradigma orientado a objetos. Esta mudança de paradigma também é uma das grandes responsáveis pela engenharia reversa de software. Prof. Adelcio Marcos de Lima 13 Como realizar a Reengenharia? Este processo é constituído de duas fases distintas. Na primeira fase ele é “desmontado”, visando o seu entendimento. Na segunda ele é reconstruído na forma desejada, a partir do produto da primeira fase, sendo incluído os ajustes necessários. Segundo, JACOBSON e LINDSTROM, 1991, Reegenharia é: Engenharia Reversa + Engenharia Progressiva Prof. Adelcio Marcos de Lima 14 Porque utilizar a reengenharia Organizações trabalham com sistemas apresentando problemas tais como: - O sistema foi iniciado há muitos anos (até 20 anos atrás). - O sistema tem pouca documentação e ela não foi atualizada. O que quer dizer que a documentação descreve um estado anterior do sistema, mas não a configuração atual. - As pessoas que criaram o sistema deixaram a empresa, ninguém pode explicar muitas decisões que foram tomadas. Prof. Adelcio Marcos de Lima 15 Porque utilizar a reengenharia - Algumas partes do sistema foram implementadas com métodos “estranhos” ou sem método nenhum. - Muitos programadores diferentes implementaram pequenas partes do sistema. Cada um usava um método e um estilo particular de programação. - O sistema é implementado numa linguagem de programação antiga (Cobol, Fortran, APL, etc.) para a qual existem poucas ferramentas. Prof. Adelcio Marcos de Lima 16 Porque utilizar a reengenharia - Para ser adaptado a novos softwares (novas bibliotecas, novas linguagem de programação, novas ferramentas). - Para ser adaptado a novas regras (troca de moeda em todos os países da Europa). - Para disponibilizar novas funcionalidades que outras empresas usam. - Entre outras razões... Prof. Adelcio Marcos de Lima 17 Ferramentas para reengenharia Debuggers, ferramentas para testes e análise por instrução, permitindo em tempo real, ajustes de controle de fluxo, edição de dados internos de memória, e diversos outros comando sobre o software em execução; Decompiladores, ferramentas que convertem o código de máquina do software pronto em código-fonte; Dumpings, ferramentas utilizadas para transferir todo conteúdo da memória de um software em execução à um arquivo; Editores hexadecimais, ferramentas para edição de arquivos binários. Prof. Adelcio Marcos de Lima 18 Crackers X Engenharia Reversa Prof. Adelcio Marcos de Lima 19 Crackers X Engenharia Reversa A Eterna promessa de proteção anti-cópias Periódicamente surgem novas tecnologias Encriptadores de código Chave pública-privada Assinatura de hardware Existem falhas em todas... Prof. Adelcio Marcos de Lima 20 Crackers X Engenharia Reversa Porque toda proteção é quebrável? Toda proteção é baseada em rotinas de software O software é completamente descompilável Logo, toda proteção é quebrável dado o devido tempo e esforço. Promessas mais recentes Tecnologias de proteção embutidas em processadores Quebráveis através de emuladores “Técnicamente a comunidade cracker insiste que tudo é possível de se quebrar, dado o devido tempo e esforço.” Sendo assim, a batalha continua... Prof. Adelcio Marcos de Lima 21 Aspectos Legais Prof. Adelcio Marcos de Lima - FAP 2010 22 Aspectos Legais A engenharia reversa pode gerar problemas de legalidade, como uma empresa querendo criar uma cópia de um produto da concorrente. No entanto a questão legal depende das leis de cada país. E mesmo assim, existem países que não possuem leis específicas sobre o assunto. Prof. Adelcio Marcos de Lima 23 Aspectos Legais Uma das leis mais conhecidas é o“Digital Millenium Copyright Act” dos Estados Unidos, aprovado em 1998 que, entre várias medidas para proteger direitos autorais na informática, também faz restrições em relação à engenharia reversa. Só é permitida para fins de analisar compatibilidade com outros softwares e/ou hardware. Prof. Adelcio Marcos de Lima 24 Aspectos Legais No Brasil, não existe uma lei específica sobre Engenharia Reversa. Apesar disso, quando ocorre engenharia reversa, costuma-se proceder de duas maneiras: Caso a engenharia reversa não tenha como objetivo a pirataria ou infração de algum direito autoral, não é considerado crime; Porém caso contrário, a Lei de Software e também de Direitos Autorais protege seus autores. Prof. Adelcio Marcos de Lima 25 Aspectos Legais Lei 9.609/98 • Perante a lei um software é considerado o mesmo que uma obra literária. • Validade de 50 anos • Direito autoral: relativo a exploração econômica da obra (software) • Direito Moral: Vínculo que liga o autor a sua obra. • Cadastro do software é feito no INPI – Instituto Nacional de Propriedade Industrial. www.tce.al.gov.br/sti/download/cd/legislacao/lei_n_9_609_98.htm Prof. Adelcio Marcos de Lima 26 Exemplos de Reengenharia Tupolev Tu-4: Em 1945, durante a segunda guerra mundial, três bombardeiros americanos modelo B-29 foram forçados a aterrissar em território russo. Os soviéticos os desmontaram e estudaram. Usaram a engenharia reversa para copiar o bombardeiro nos mínimos detalhes. O resultado foi o bombardeiro Tupolev Tu-4 que voou pela primeira vez em 19 de maio de 1947. A produção em série do bombardeiro começou neste mesmo ano. Prof. Adelcio Marcos de Lima 27 B29 Prof. Adelcio Marcos de Lima 28 TUPOLEV TU-4 Prof. Adelcio Marcos de Lima 29 Exemplos de Reengenharia IBM-PC compatível: A IBM abriu mão da patente de sua plataforma, deixando o caminho livre para qualquer um produzir uma maquina que fosse compatível com o IBM-PC. Assim surgiram vários clones do IBM-PC. Prof. Adelcio Marcos de Lima 30 IBM PC “PC” Exemplos de Reengenharia Samba: Software que permite sistemas que não estão rodando o Microsoft Windows a compartilhar arquivos com sistemas que estão. A engenharia reversa foi utilizada para descobrir como o compartilhamento de arquivos do Windows funcionava, para que então computadores que não estivessem com a plataforma Windows pudessem emular a mesma. Prof. Adelcio Marcos de Lima 31 Exemplos de Reengenharia Wine: Programa que funciona como a API do Windows. Permite executar aplicativos desenvolvidos para Windows 3.1X, 9X, NT e 200x no GNU/Linux. OpenOffice.org: É um conjunto de aplicativos em OpenSource (código aberto). Está disponível para diferentes plataformas: incluindo Microsoft Windows, Unix, Solaris, Linux e Mac OS X. A Suite é compatível com o Microsoft Office. Prof. Adelcio Marcos de Lima 32 Fazer a leitura do capítulo 29 “Manutenção e Reengenharia”, do livro “Engenharia de Software: Uma abordagem Profissional” do Pressmann. Elaborar 14 perguntas e respostas certas sobre o capítulo. Entregar dia 10/05/2012 (impresso) Dupla 0 a 1.0 ponto. Trabalho de Leitura e Compreensão Memorial Descritivo 34 Prof. Adelcio Marcos de Lima
Compartilhar