Reverse engineering and design recovery: a taxonomy | Synapse