I'm interested to know if there are tools or programs that help software engineers understand big source code bases (projects that have lines of code in the thousands), like how to understand all the parts involved.
FYI, "Thousands" of lines isn't particularly, a large code-base, I'm a developer who tends to specialize in legacy code bases and I've seen aspx (asp webforms) pages with 5k+ LOC in a single file.<p>Also, you haven't really defined what "makes sense" means for you. Does that mean being able to refactor it, maintain or just evaluate it?<p>That said, the following are essential:<p>1. An IDE with a fast token-based search<p>This is the number one requirement, you need to be able to search for a badly remembered function or variable name to find the method. Jetbrains' "Go to anything" search that resharper/rider has is unrivalled here, you can quickly see partial matches and the type of match (function, variable, etc)<p>2. An IDE with a text editor that won't choke with 5-10k LOC files.<p>If your environment is freezing up any time you open a certain file then you'll have no chance if (and you likely will, for a large enough project) you encouter a monster file.<p>3. Pen and Paper<p>Don't be scared to write things down, draw diagrams and write down your mental models as you go. A pen and paper is essential, it persists through all sessions, can't crash and if you think something is wrong you can easily throw it out and start again without considering that time wasted.
1. First see if you can get the use cases, I.e. what are the requirements for the system.
2. Choose 1-3 core use cases. Analyse those use cases - Data in / Processing / Data out.
3. Draw UML diagram of the components in the systems.
4. Trace each use case end to end with either a debugger or just code reading.
5. Along the way, draw UML diagram of the class / data structure.
6. For each class add the core methods where all the business logic resides.<p>BTW thousands line of code is NOT a big code base.