skip to main content
10.5555/962111.962115dlproceedingsArticle/Chapter ViewAbstractPublication PagescasconConference Proceedingsconference-collections
Article
Free access

Theories and techniques of program understanding

Published: 28 October 1991 Publication History

Abstract

Understanding programs written by others is a difficult task. Most maintenance tasks in software require an understanding of the source code as a first step. Unfortunately, in most cases, the source code of a program is the only reliable documentation of its behavior. As a result, maintainers have to rely heavily on code browsing to acquire the necessary information. This paper surveys the various theories that have been proposed to explain the process of understanding, considers the different techniques used by the tools that are employed, and discusses their relative merits and demerits.

References

[1]
Al-Zoubi, R., and Prakash, A., "Software Change Analysis via Attributed Dependency Graphs", Technical Report No. CSE-TR-95-91, Dept. of EECS, University of Michigan, MAY 1991.
[2]
Ambras, J., and O'Day, V., "Microscope:A program analysis system ", Proc. of the 20th Hawaii Intl. Conference on System Sciences, 1987, 460--468.
[3]
Antonini, P., Benedusi, P., Cantone, G., and Cimitile, A., "Maintenance and reverse Engineering:Low level design documents production and improvement", Proc. Conference on software maintenance, IEEE, 1987, 91--100.
[4]
Arango, G., Baxter, I., Freeman, P., and Pidgeon, C., "TMM: Software Maintenance by transformation", IEEE Software, 3(3), 1986, 27--39.
[5]
Basili, V. R. and Mills, H. D. "Understanding and Documenting Programs", IEEE Transactions on Software Engineering, Vol. SE-8, No. 3, May 1982 270--283.
[6]
Biggerstaff, T., "Design recovery for maintenance and reuse", Computer, 22, July 1989, 36--49.
[7]
Boehm, B. W. "Software Engineering ", IEEE Transactions on Computers, C-25, December 1976, 1226--1241.
[8]
Brooks, R. "Towards a theory of the Comprehension of Computer Programs", Int. J. Man-Machine Studies, 18, 1983, 543--554.
[9]
Browne, J. C. and Johnson, D. B. "FAST: A second generation program analysis system", Proceedings of the Second International Conference on Software Engineering, 1977, 142--148.
[10]
Buss, E. and Henshaw, J. "A Software Reverse Engineering Experience", To appear in CASCON, 1991.
[11]
Chen, Y., Nishimoto, M. Y. and Ramamoorthy, C. V. "The C Information Abstraction System", IEEE Transactions on Software Engineering, Vol.16, No.3, March 1990, 325--334.
[12]
Dijkstra, E. W., "A constructive approach to the problem of program correctness", BIT, 8, 1968, 174--186.
[13]
Fjeldstad, R. K. and Hamlen, W. T. "Application Program Maintenance Study: Report to Our Correspondents", Tutorial on Software Maintenance. IEEE Computer Press Society, 1983, 13--27.
[14]
Glass, R. L. and Noiseux, R. A. "Software Maintenance Guidebook", Prentice-Hall, 1981.
[15]
Harandi, M. T. and Ning, J. Q. "PAT: a Knowledge-based Program analysis tool", Proc. of the Conference on Software Maintenance, Phoenix, October 1988, 312--318.
[16]
Hutchens, D. H. and Basili, V. R. "System structure analysis: Clustering with data bindings", IEEE Transactions on Software Engineering, Vol.11, No.8, August 1985; 749--757.
[17]
Johnson, W. L. and Soloway, E. "PROUST", BYTE, Vol.10, No.4, April 1985, 179--190.
[18]
Kotik, G. B. and Markosian, L. Z. "Program Transformation: The Key to Automating Software Maintenance and Re-engineering", Technical Report, Reasoning Systems, Inc. 3260 Hillview, Palo Alto, CA 94304.
[19]
Letovsky, S., "A Program Anti-Compiler", Proc. Conference on software maintenance, IEEE, 1989, 504--512.
[20]
Letovsky, S. and Soloway, E. "Delocalized Plans and Program Comprehension", IEEE Software, Vol.3, May 1986 41--99.
[21]
Linton, M. A. "Implementing relational views of programs", Proc. ACM SIGSOFT/SIGPLAN Software engineering symposium, Practical software development environment, May 1984.
[22]
Miara, R. J., Musselman, J. A., Navarro, J. A., and Schneiderman, B., "Program indentation and comprehensibility ", Communications of the ACM, 26(11), 1983, 861--867.
[23]
Miller, G. A. "The magical number seven, plus or minus two:Some limits on our capacity to process information ", Psychology Review, 63, 81--97.
[24]
Neighbors, J. M., "The Draco approach to constructing software from reusable components", IEEE transactions on Software Engg., SE-10(5), 1984, 564--573.
[25]
Rich, C. "A formal representation for plans in the Programmer 's Apprentice", Proceedings of the Seventh International Joint Conference on Artificial Intelligence, Vancover, August 1981.
[26]
Rich, C. and Shrobe, H. "Initial report on a LISP programmer's apprentice", IEEE Transactions on Software Engineering, 4:6, November 1978, 456--467.
[27]
Schneiderman, B. "Software Psychology", Winthrop, 1980.
[28]
Shneiderman, B. and Mayer, It. "Syntactic/Semantic Interactions of programming behavior: A model",.Int. J. of Computer and Information Science, 8(3), 1979, 219--238.
[29]
Smith, D. R. "KIDS: A Semiautomatic Program Development System", IEEE Transactions on Software Engineering, Vol.16, No.9, September 1990, 1024--1043.
[30]
Soloway, E. and Ehrlich, K. "Empirical Studies of Programming Knowledge", IEEE Transactions on Software Engineering, Vol. SE-10, No:5, September-1984, 595--609.
[31]
Steffen, J. L. "Interactive program of a C program with Cscope", Proc. USENLX Assoc. Winter Conference, January 1985, 170--175.
[32]
Teitelman, W. and Masinter, L. "The Interlisp programming environment", Computer, Vol.14, No.4, 25--34, April 1981.
[33]
Waters, R. C. "The Programmer's Apprentice: Knowledge Based Program Editing" IEEE Transactions on Software Engineering, Vol. SE-8:1, January 1982.
[34]
Weissman, L., "Psychological Complexity of computer programs: An experimental methodology", ACM SIGPLAN Notices, 9(6), 1974, 25--36.
[35]
Wirth, N., "Program development by stepwise refinement", Communications of the ACM, 14(4), 1971, 221--22 7
[36]
Woodfield, S. N., Dunsmore, S. E., and Shen, V. Y., "The effect of modularization and comments on program comrehension", Proc. of the 5th Intl. Conference on Software Engg., 1981, 215--223.

Cited By

View all
  • (2020)Explaining spreadsheets with spreadsheets (short paper)ACM SIGPLAN Notices10.1145/3393934.327813653:9(161-167)Online publication date: 7-Apr-2020
  • (2018)Explaining spreadsheets with spreadsheets (short paper)Proceedings of the 17th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3278122.3278136(161-167)Online publication date: 5-Nov-2018
  • (2015)Exploring theory of cognition for general theory of software engineeringProceedings of the Fourth SEMAT Workshop on General Theory of Software Engineering10.5555/2820167.2820172(15-24)Online publication date: 16-May-2015
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image DL Hosted proceedings
CASCON '91: Proceedings of the 1991 conference of the Centre for Advanced Studies on Collaborative research
October 1991
404 pages

Sponsors

  • IBM Canada Ltd. Laboratory Centre for Advanced Studies

Publisher

IBM Press

Publication History

Published: 28 October 1991

Qualifiers

  • Article

Acceptance Rates

Overall Acceptance Rate 24 of 90 submissions, 27%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)62
  • Downloads (Last 6 weeks)8
Reflects downloads up to 19 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2020)Explaining spreadsheets with spreadsheets (short paper)ACM SIGPLAN Notices10.1145/3393934.327813653:9(161-167)Online publication date: 7-Apr-2020
  • (2018)Explaining spreadsheets with spreadsheets (short paper)Proceedings of the 17th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3278122.3278136(161-167)Online publication date: 5-Nov-2018
  • (2015)Exploring theory of cognition for general theory of software engineeringProceedings of the Fourth SEMAT Workshop on General Theory of Software Engineering10.5555/2820167.2820172(15-24)Online publication date: 16-May-2015
  • (2010)A software reverse engineering experienceCASCON First Decade High Impact Papers10.1145/1925805.1925808(42-60)Online publication date: 1-Nov-2010
  • (1994)Modeling and querying software repositoriesProceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research10.5555/782185.782238Online publication date: 31-Oct-1994
  • (1992)Management decision support through reverse engineering technologyProceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research - Volume 110.5555/962198.962224(319-328)Online publication date: 9-Nov-1992
  • (1992)Experiences in program understandingProceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research - Volume 110.5555/962198.962211(157-189)Online publication date: 9-Nov-1992
  • (1992)A reverse engineering environment based on spatial and visual software interconnection modelsACM SIGSOFT Software Engineering Notes10.1145/142882.14375517:5(88-98)Online publication date: 1-Nov-1992
  • (1992)A reverse engineering environment based on spatial and visual software interconnection modelsProceedings of the fifth ACM SIGSOFT symposium on Software development environments10.1145/142868.143755(88-98)Online publication date: 1-Nov-1992
  • (1991)A software reverse engineering experienceProceedings of the 1991 conference of the Centre for Advanced Studies on Collaborative research10.5555/962111.962116(55-73)Online publication date: 28-Oct-1991

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media