K. Heisler, Y. Kasho, W.-T. Tsai, "A reverse engineering model for C programs", Information Sciences 68(1-2), 155-189, February 1993. Abstract This paper presents a reverse engineering model for C programs. It consists of structural and functionality views of programs. The structural view shows relations among structural elements such as code blocks and variables. It includes code block hierarchy, data flow, control flow (paths), and call graph relations. The functionality view provides a hierarchical outline of functionalities of a given program. It consists of a functionality hierarchy, which provides the hierarchical description of the code. The model also supports both structural and functionality slicing and ripple effect analyses: The maintainer locates the code blocks to be modified within the functionality hierarchy. This slices out a set of paths that use the code blocks, which in turn provide all the variables used or modified within them. An object-oriented design is used to implement this model in a UNIX (AT&T) environment. The tool, written in Objective-C (Step-Stone), provides many other useful features. For example, given a variable, it can provide all the possible code blocks, paths that use or modify that variable. It also allows the maintainer to expand or contract various levels of code blocks to simplify the path analysis. @article{DBLP:journals/isci/HeislerKT93, author = {K. Heisler and Y. Kasho and Wei-Tek Tsai}, title = {A reverse engineering model for C programs}, journal = {Inf. Sci.}, volume = {68}, number = {1-2}, year = {1993}, pages = {155-189}, ee = {http://dx.doi.org/10.1016/0020-0255(93)90026-I}, bibsource = {DBLP, http://dblp.uni-trier.de} }