Layered explanations of software: a methodology for program comprehension
- 17 December 2002
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
In dealing with the legacy systems, one often encounters poorly documented and heavily maintained software. Lack of understandability of these systems complicates the task of software maintenance, making it time consuming and limiting the possibilities of the evolution of the system. We present a methodology that helps the programmers to understand programs. Our approach is compatible with the "top-down theory" of software understanding, where the programmer creates a chain of hypotheses and subsidiary hypotheses, concerning the properties of the code. Then he/she looks for evidence (beacons) in the code. Our approach shortens the process of hypotheses creation and verification, and allows recording of successful hypotheses for the future maintenance. All information needed for understanding is recorded in layers of annotations. An experiment was conducted to investigate how the proposed methodology helps in program understanding. A tool supporting the methodology, is presented.Keywords
This publication has 10 references indexed in Scilit:
- Decomposition /generalization methodology for object-oriented ProgrammingJournal of Systems and Software, 1994
- The initial stage of program comprehensionInternational Journal of Man-Machine Studies, 1991
- Approaches to program comprehensionJournal of Systems and Software, 1991
- The software maintenance of large software systems: Management, methods and toolsReliability Engineering & System Safety, 1991
- Program understanding: Challenge for the 1990sIBM Systems Journal, 1989
- Hypertext and CASEIEEE Software, 1988
- SODOS: A software documentation support environment — Its useIEEE Transactions on Software Engineering, 1986
- Towards a theory of the comprehension of computer programsInternational Journal of Man-Machine Studies, 1983
- Understanding and Documenting ProgramsIEEE Transactions on Software Engineering, 1982
- Towards a theory of the cognitive processes in computer programmingInternational Journal of Man-Machine Studies, 1977