Reverse engineering of program code is the process of constructing a higher level abstraction of an implementation in order to facilitate the understanding of a system that may be in a \legacy" or \geriatric" state. Changing architectures and improvements in programming methods, including formal methods in software development and object-oriented programming, have prompted a need to reverse engineer and re-engineer program code. This paper describes the application of the strongest postcondition predicate transformer (strongest postcondition) as the formal basis for the reverse engineering of imperative program code.
Gerald C. Gannod, Betty H. C. Cheng