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:
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!!
Comentários
Postar um comentário
Deixe sua sugestão ou críticas