1. A method for determining a structure of a computer program project, the project having one or more compilable units, the method comprising: a) receiving program structure information from a user, the program structure information being described by program structure parameters that are used to provide navigational and syntax functionality, the program structures parameters including a symbol database and file database that keeps track of the interrelationships between project components; b) analyzing at least one of the compilable units to identify compiler commentary contained therein; c) discovering information about the program structure from the compiler commentary; and d) reconciling the information obtained from steps a) and c).