Extracting design and functionality from code

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.<<ETX>>

[1]  Kevin Lano,et al.  A specification-based approach to maintenance , 1991, J. Softw. Maintenance Res. Pract..

[2]  J. A. Zimmer Restructuring for style , 1990, Softw. Pract. Exp..

[3]  S.K. Abd-El-Hafiz,et al.  Towards automated support for extraction of reusable components , 1991, Proceedings. Conference on Software Maintenance 1991.

[4]  Frank W. Calliss,et al.  The Maintainer's Assistant (software tool) , 1989, Proceedings. Conference on Software Maintenance - 1989.

[5]  Victor R. Basili,et al.  Identifying and qualifying reusable software components , 1991, Computer.

[6]  Albert Alderson,et al.  The eclipse Two-Tier database , 1989 .

[7]  Alan R. Hevner,et al.  Using function abstraction to understand program behavior , 1990, IEEE Software.

[8]  Peter T. Breuer,et al.  Creating specifications from code: Reverse-engineering techniques , 1991, J. Softw. Maintenance Res. Pract..