This document presents a methodology for program comprehension consisting of four main stages:
1) Loading source code into a symbolic form using GrammarWare.
2) Creating an atomistic model (ModelWare) to represent the smallest possible structures for modeling source code.
3) Simulating the code symbolically using SimulationWare to perform static analysis comparable to dynamic analysis.
4) Collecting knowledge using KnowledgeWare by constructing representations for tasks like code inspection and error detection.
The methodology is implemented in a tool called JavaMaster which handles Java code according to the main stages. The formalism combines reverse engineering for maintenance with forward engineering for new code design.