Trabalhando com engenharia reversa - Revista Engenharia de Software Magazine 59
Este artigo apresenta a ferramenta EngRev, desenvolvida com o intuito de realizar a recuperação de modelos de software legados desenvolvidos em Delphi através da geração de diagramas e recuperação de código para linguagens mais utilizadas atualmente.
Autores: Tadeu Classe e Evaldo de Oliveira
Trabalhando com engenharia reversa
Muitas empresas utilizam sistemas implementados em tecnologias defasadas ou antigas. Entretanto, em algum momento do ciclo de vida da aplicação podem ser necessárias manutenções, tanto corretivas, quanto adaptativas. Porém, a documentação desses sistemas pode ser inexistente ou estar comprometida devido à falta de tempo em mantê-la atualizada.
A documentação das aplicações de software é uma tarefa importante para que futuras manutenções possam garantir maior produtividade e qualidade no desenvolvimento de novas versões. Sua ausência pode prejudicar a manutenção e o controle da evolução de software, principalmente na manutenção de sistemas legados. Para recuperar a documentação nestes sistemas são utilizados processos de engenharia reversa.
A engenharia reversa define um conjunto de atividades que permitem, a partir de uma solução de software já pronta, extrair todos os conceitos ali empregados. Esses conceitos podem ser padrões arquiteturais utilizados, diagramas de classes, a arquitetura do sistema, enfim, qualquer informação que contribua para um entendimento do sistema desenvolvido.
Os processos utilizados pela engenharia reversa devem ser capazes de derivar representações do projeto de software e informações sobre a estrutura de dados (a partir do nível mais baixo de abstração). Além disso, também devem ser capazes de representar um projeto de software a partir do seu programa executável, gerando representações de sua arquitetura.
Este artigo apresenta a ferramenta EngRev, desenvolvida com o intuito de realizar a recuperação de modelos de software legados desenvolvidos em Delphi através da geração de diagramas e recuperação de código para linguagens mais utilizadas atualmente como Java.
A aplicação da engenharia reversa é útil no contexto de manutenção de softwares legados. Um sistema pode ser uma peça fundamental para o dia-a-dia de uma organização, porém precisa passar por manutenções para se atualizar às exigências legislativas ou adaptativas. A ferramenta EngRev é útil para a recuperação de informações que auxiliem na atualização destes sistemas antigos.
A manutenção de software é uma etapa do desenvolvimento onde ocorrem modificações no código ou em qualquer outro artefato de uma aplicação, a fim de mantê-la disponível e em constante evolução. Essa etapa do desenvolvimento deve ser realizada por meio de processos e ferramentas para corrigir falhas na codificação, melhorar o desempenho do software, ou adequá-lo aos novos requisitos conforme as necessidades dos seus usuários.
Com base em estudos da engenharia de software (ES), constata-se que a manutenção de software é considerada como uma atividade consumidora de grande parte dos recursos financeiros, humanos e tecnológicos dentro das organizações. Com isso, é necessário manter a documentação, o processo e a padronização do desenvolvimento de qualquer sistema de software, principalmente nas aplicações que se tornaram obsoletas, mas que continuam úteis para atender o negócio de uma organização.
Um cenário muito comum é uma aplicação que tem servido uma atividade de negócios durante anos. Durante esse tempo surgem correções, adaptações e integrações com outras aplicações, e boas práticas de ES não são adotadas, dificultando o controle da evolução do código e a documentação dos sistemas.