Padrões de software a partir da engenharia reversa de sistemas legados. - Braga, Rosana Teresinha Vaccare (1998)
A execução da engenharia reversa orientada a objetos de um sistema legado desenvolvido com orientação procedimental é usada como base para sua reengenharia, seguindo duas abordagens diferentes. Na primeira, o sistema passa por reengenharia com mudança de orientação, por meio de segmentação e, posteriormente, é transformado para uma linguagem orientada a objetos de forma semi-automática. Na segunda, é feito o reconhecimento de padrões recorrentes de software no modelo de objetos produzido pela engenharia reversa, para depois efetuar a reengenharia utilizando esses padrões. Os resultados obtidos por intermédio dessas duas abordagens podem ser comparados quanto à manutenibilidade, legibilidade e reuso. A versão original do sistema legado escolhido para a realização da experiência está implementado na linguagem Clipper e possui cerca de vinte mil linhas de código. Trata-se de uma oficina auto-elétrica e mecânica de veículos. Para a engenharia reversa foi escolhido o método Fusion/RE, sendo feita uma proposta para sua evolução, adicionando um maior detalhamento da etapa de abstração do modelo de análise do sistema. Para mudança de orientação do paradigma de desenvolviemnto, de procedimental para orientado a objetos, são propostas duas etapas adicionais a serem executadas após a aplicação do Fusion/RE: o projeto avante do sistema e a segmentação do programa legado. Indicações sobre como fazer a segmentação são fornecidas. A transformação do código segmentado em Clipper para Java é feita com auxílio da máquina Draco-Puc. Uma estratégia é proposta para o reconhecimento de padrões a partir do modelo de objetos do sistema obtido pela engenharia reversa. Por meio dela, instâncias dos padrões Type-Object, Association-Object, State Across a Collection e Behaviour Across a Collection podem ser reconhecidas. Experiências de implementação de alguns desses padrões, em Delphi, são feitas.