Automatic Re-engineering of Software Using Genetic Programming