Engenharia Reversa de Sistemas

   O termo Engenharia Reversa teve origem na análise de hardware para decifrar projetos de produtos prontos. Ela é aplicada regularmente pelas empresas para incrementar seus próprios produtos, analisar produtos de concorrentes ou adversários militares. Esse processo é desenvolvido por alguém que não participou do projeto de hardware, sem o benefício dos desenhos originais.
   Esses conceitos podem ser aplicados em sistemas de software para seu entendimento. Porém, enquanto o objetivo da Engenharia Reversa de Hardware é duplicar o sistema criando um clone, o objetivo da Engenharia Reversa de Software é entender o software é entender o software para mantê-lo ou substitui-lo. Muitas vezes, os engenheiros de manutenção de sistemas não participam do projeto, então eles devem se esforçar para conhece-lo. Ferramentas de Engenharia Reversa podem facilitar esta prática.
   A Engenharia Reversa analisa o sistema para:

  • Identificar seus componentes e relacionamentos internos
  • Criar representações do sistema em outras formas ou num nível de abstração mais alto.
   Ela pode ser utilizada em qualquer uma das fases dos diversos paradigmas de desenvolvimento. Por exemplo, o modelo em cascata usa a seguinte sequência: especificação, projeto, código, teste, implementação e manutenção. Então, começando do código, a Engenharia Reversa pode extrair a informação do projeto, que é o nível imediatamente mais alto de abstração.
   Passos da Engenharia Reversa:
  • Coleta de informações - inclui código fonte, documentação, etc.
  • Exame da informação coletada
  • Extração de estruturas - examina-se o código extraindo a estrutura de módulos  e representando através de gráficos
  • Criação da representação do fluxo de dados
  • Revisão das informações e atualização da documentação
   Obs: A Engenharia Reversa não muda o software, ela é um processo de exame minucioso. ela recupera ou recria o projeto, e decifra os requisitos reais implementados pelo sistema podendo motivar mudanças no mesmo.
   Ferramentas de Engenharia Reversa:
   As ferramentas podem ser divididas em estáticas e dinâmicas.
   Uma ferramenta estática usa um código fonte como entrada e faz uma análise extraindo sua arquitetura, o fluxo lógico, a estrutura de dados, o fluxo de dados, etc. Outras ferramentas dessa categoria aplicam uma técnica denominada fatiamento de programa onde o engenheiro de software especifica os tipos de estrutura de programa que são de seu interesse e a ferramenta remove o código estranho possibilitando que somente o código de seu interesse seja representado.
   As ferramentas dinâmicas monitoram o software quanto à sua execução e usam as informações obtidas durante a monitorização para construir um modelo comportamental do programa. Ainda que tais ferramentas sejam relativamente raras , elas oferecem importantes informações aos engenheiros de software que precisam manter sistemas embutidos ou softwares de tempo real - Pressman.
Até a próxima!!

Postagens mais visitadas