Extracting design and functionality from code

Kevin Lano, H. Haughton · 2003

Techniques developed as part of the REDO project on software maintenance are described. Transformations which produce highly abstract descriptions of the functionality of an application are applied. This allows maintenance and restructuring operations to be carried out more effectively, since the abstractions are free from unnecessary implementation details which complicate reasoning about the code itself. Designs are abstracted from applications by examining data flow and control flow, and by using techniques to identify and isolate meaningful processes. An object-oriented design is generated, using classes based on the main variables of the code, with logical invariants of the code included as invariants of the classes of the design, and with the abstractions of the identified operations included as methods of these classes. These partial designs can then be rewritten into improved forms.>

Read the paper · More papers on PaperTik