On one hand, this process must be bottom-up, since the only reliable description of the behavior of software is its source code. To support this bottom-up process, methods and tools are useful which generate abstract models from the source code, e.g. those of the Structured System Analysis and Design Method (SSADM). Software can be animated to visualize program behavior or to animate the generated models, since the underlying description, namely the source code, is operational.
On the other hand, reverse specification must be top-down, too, since knowledge of the application domain is necessary to understand the software. Domain analysis can contribute to this.