How to recover a software's architecture

Software architecture recovery is a set of methods for the extraction of architectural information from lower level representations of a software system, such as source code. What are the best methods to recover an architecture of an existing software system?
No answers yet.