Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

An exploratory study of program comprehension strategies of procedural and object-oriented programmers

Published: 01 January 2001 Publication History

Abstract

This exploratory study examines the nature of program understanding strategies employed during a series of comprehension and maintenance activities carried out over time. Two dimensions of comprehension were examined: the direction of comprehension and the breadth of comprehension. Thirty expert procedural and object-oriented (OO) programmers studied a program and then performed modifications during two sessions held 1 week apart. The results showed that the direction of comprehension was mixed. The OO programmers tended to use a strongly top-down approach to program understanding during the early phase of familiarization with the program but used an increasingly bottom-up approach during the subsequent maintenance tasks. The procedural programmers used a more bottom-up orientation even during the early phase, and this bottom-up approach became even stronger during the maintenance tasks. The breadth of the programmers' comprehension was found to be greater for the procedural programmers than for the object-oriented programmers. However, after carrying out a series of tasks, all programmers had examined the majority of the program code. The results suggest that, regardless of paradigm, expert programmers eventually build a broad systematic, rather than a localized, view of a program over time.

References

[1]
D. BERGANTZ, J. HASSELL, Information relationships in PROLOG programs: how do programmers comprehend functionality?, International Journal of Man¿Machine Studies, 35 (1991) 313-328.
[2]
L.C. BRIAND, C. BUNSE, J.W. DALY, C. DIFFERDING, An experimental comparison of the maintainability of object-oriented and structured design documents, Empirical Software Engineering, 2 (1997) 291-312.
[3]
R. BROOKS, Towards a theory of the comprehension of computer programs, International Journal of Man¿Machine Studies, 18 (1983) 543-554.
[4]
J.-M. BURKHARDT, F. DÉTIENNE, S. WIEDENBECK, Mental representations constructed by experts and novices in object-oriented program comprehension, North-Holland, Amsterdam, 1997.
[5]
J.-M. BURKHARDT, F. DÉTIENNE, S. WIEDENBECK, The effect of object-oriented programming expertise in several dimensions of comprehension strategies, IEEE, New York, 1998.
[6]
G. CANFORA, L. MANCINI, M. TORTORELLA, A workbench for program comprehension during software maintenance, IEEE Computer Society, Los Alamitos, 1996.
[7]
J. COHEN, Academic, New York, 1977.
[8]
C.L. CORRITORE, S. WIEDENBECK, What do novices learn during program comprehension?, International Journal of Human¿Computer Interaction, 3 (1991) 199-208.
[9]
C.L. CORRITORE, S. WIEDENBECK, Mental representations of expert procedural and object-oriented programmers in a software maintenance task, International Journal of Human¿Computer Studies, 50 (1999) 61-83.
[10]
B. COX, Addison-Wesley, Reading, 1986.
[11]
J. DALY, A. BROOKS, J. MILLER, M. ROPER, M. WOOD, Evaluating inheritance depth on the maintainability of object-oriented software, Empirical Software Engineering, 1 (1996) 109-132.
[12]
G. FISHER, Cognitive view of reuse and design, IEEE Software, 7 (1987) 60-72.
[13]
E.M. GELLENBECK, C.R. & COOK, An investigation of procedure and variable names as beacons during program comprehension, in: Empirical Studies of Programmers: Fourth Workshop, Ablex, Norwood, 1991, pp. 65-79.
[14]
D.J. GILMORE, T.R.G. GREEN, Comprehension and recall of miniature programs, International Journal of Man¿Machine Studies, 21 (1984) 31-48.
[15]
J. GWINN, Object-oriented programs in realtime, SIGPLAN Notices, 27 (1992) 47-56.
[16]
S. HENRY, M. HUMPHREY, Object-oriented vs, Journal of Object-Oriented Programming, 6 (1993) 41-49.
[17]
J. JACKY, I. KALET, An object-oriented programming discipline for standard Pascal, Communications of the ACM, 30 (1987) 772-776.
[18]
J. KOENEMANN, S. ROBERTSON, Expert problem solving strategies for program comprehension, ACM, New York, 1991.
[19]
B. LANGE, T. MOHER, Some strategies of reuse in an object-oriented programming environment, ACM, New York, 1989.
[20]
P. LAYZELL, R. CHAMPION, M. FREEMAN, DOCKET: program comprehension-in-the-large, IEEE Computer Society, Los Alamitos, 1993.
[21]
A. LEE, N. PENNINGTON, The effects of paradigm on cognitive activities in design, International Journal of Human¿Computer Studies, 40 (1994) 577-601.
[22]
S. LETOVSKY, Cognitive processes in program comprehension, in: Empirical Studies of Programmers, Ablex, Norwood, 1986, pp. 80-98.
[23]
D.C. LITTMAN, J. PINTO, S. LETOVSKY, E. SOLOWAY, Mental models and software maintenance, in: Empirical Studies of Programmers, Ablex, Norwood, 1986, pp. 80-98.
[24]
N. PENNINGTON, Comprehension strategies in programming, in: Empirical Studies of Programmers: 2nd Workshop, Ablex, Norwood, 1987, pp. 100-113.
[25]
N. PENNINGTON, Stimulus structures and mental representations in expert comprehension of computer programs, Cognitive Psychology, 19 (1987) 295-341.
[26]
N. PENNINGTON, A.Y. LEE, B. REHDER, Cognitive activities and levels of abstraction in procedural and object-oriented design, Human¿Computer Interaction, 10 (1995) 171-226.
[27]
V. RAJLICH, J. DORAN, R.T.S. GUDLA, Layered explanations of software: a methodology for program comprehension, IEEE Computer Society, Los Alamitos, 1994.
[28]
T. RENTSCH, Object-oriented programming, SIGPLAN Notices, 17 (1982) 51-57.
[29]
M.B. ROSSON, S.R. ALPERT, The cognitive consequences of object-oriented design, Human¿Computer Interaction, 5 (1990) 345-379.
[30]
T.M. SHAFT, I. VESSEY, The relevance of application domain knowledge: the case of computer program comprehension, Information Systems Research, 6 (1995) 286-299.
[31]
B. SHNEIDERMAN, R. MAYER, Syntactic/semantic interactions in programmer behavior: a model and experimental results, International Journal of Computer and Information Sciences, 8 (1979) 219-238.
[32]
E. SOLOWAY, B. ADELSON, K. EHRLICH, Knowledge and processes in the comprehension of computer programs, in: The Nature of Expertise, Lawrence Erlbaum, Mahway, 1988, pp. 129-152.
[33]
E. SOLOWAY, K. EHRLICH, Empirical studies of programming knowledge, IEEE Transactions on Software Engineering, SE-10 (1984) 595-609.
[34]
E. SOLOWAY, K. EHRLICH, J. BONAR, J. GREENSPAN, What do novices know about programming?, in: Directions in Human¿Computer Interaction, Ablex, Norwood, 1982, pp. 27-54.
[35]
E. SOLOWAY, J. PINTO, S. LETOVSKY, D. LITTMAN, R. LAMPERT, Designing documentation to compensate for delocalized plans, Communications of the ACM, 31 (1988) 1259-1267.
[36]
S.R. TILLEY, S. PAUL, D.R. SMITH, Towards a framework for program understanding, IEEE Computer Society, Los Alamitos, 1996.
[37]
A. VON MAYRHAUSER, A.M. VANS, Program comprehension during software maintenance and evolution, Computer, 28 (1995) 44-55.
[38]
A. VON MAYRHAUSER, A.M. VANS, Program understanding: models and experiments, in: Advances in Computers, 40, Academic Press, San Diego, 1995, pp. 1-38.
[39]
A. VON MAYRHAUSER, A.M. VANS, Identification of dynamic comprehension processes during large scale maintenance, IEEE Transactions on Software Engineering, 22 (1996) 424-437.
[40]
A. VON MAYRHAUSER, A.M. VANS, Program understanding behavior during debugging of large scale software, in: Empirical Studies of Programmers: Seventh Workshop, Ablex, Norwood, 1997, pp. 157-179.
[41]
A. VON MAYRHAUSER, A.M. VANS, Program understanding behavior during adaptation of large scale software, IEEE Computer Society, Los Alamitos, 1998.
[42]
S. WIEDENBECK, Beacons in computer program comprehension, International Journal of Man¿Machine Studies, 25 (1986) 697-709.
[43]
S. WIEDENBECK, The initial stage of program comprehension, International Journal of Man¿Machine Studies, 35 (1991) 517-540.

Cited By

View all
  • (2024)An Exploratory Study of Programmers' Analogical Reasoning and Software History Usage During Code Re-PurposingProceedings of the 2024 IEEE/ACM 17th International Conference on Cooperative and Human Aspects of Software Engineering10.1145/3641822.3641864(109-120)Online publication date: 14-Apr-2024
  • (2023)EASE: An Effort-aware Extension of Unsupervised Key Class Identification ApproachesACM Transactions on Software Engineering and Methodology10.1145/363571433:4(1-43)Online publication date: 2-Dec-2023
  • (2023)Pride: Prioritizing Documentation Effort Based on a PageRank-Like Algorithm and Simple Filtering RulesIEEE Transactions on Software Engineering10.1109/TSE.2022.317146949:3(1118-1151)Online publication date: 1-Mar-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image International Journal of Human-Computer Studies
International Journal of Human-Computer Studies  Volume 54, Issue 1
Jan. 2001
180 pages
ISSN:1071-5819
  • Editor:
  • B. R. Gaines
Issue’s Table of Contents

Publisher

Academic Press, Inc.

United States

Publication History

Published: 01 January 2001

Author Tags

  1. object-orientated programmers
  2. procedural programmers
  3. program comprehension.
  4. software maintenance

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 27 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)An Exploratory Study of Programmers' Analogical Reasoning and Software History Usage During Code Re-PurposingProceedings of the 2024 IEEE/ACM 17th International Conference on Cooperative and Human Aspects of Software Engineering10.1145/3641822.3641864(109-120)Online publication date: 14-Apr-2024
  • (2023)EASE: An Effort-aware Extension of Unsupervised Key Class Identification ApproachesACM Transactions on Software Engineering and Methodology10.1145/363571433:4(1-43)Online publication date: 2-Dec-2023
  • (2023)Pride: Prioritizing Documentation Effort Based on a PageRank-Like Algorithm and Simple Filtering RulesIEEE Transactions on Software Engineering10.1109/TSE.2022.317146949:3(1118-1151)Online publication date: 1-Mar-2023
  • (2022)Reading to write codeProceedings of the ACM/IEEE 44th International Conference on Software Engineering: Software Engineering Education and Training10.1145/3510456.3514164(223-234)Online publication date: 21-May-2022
  • (2018)Inference of development activities from interaction with uninstrumented applicationsEmpirical Software Engineering10.1007/s10664-017-9547-823:3(1313-1351)Online publication date: 1-Jun-2018
  • (2017)An empirical study on code comprehensionProceedings of the 25th International Conference on Program Comprehension10.1109/ICPC.2017.23(275-285)Online publication date: 20-May-2017
  • (2017)Effects of visualizing roles of variables with animation and IDE in novice program constructionTelematics and Informatics10.1016/j.tele.2017.02.00534:5(743-754)Online publication date: 1-Aug-2017
  • (2017)Extracting and analyzing time-series HCI data from screen-captured task videosEmpirical Software Engineering10.1007/s10664-015-9417-122:1(134-174)Online publication date: 1-Feb-2017
  • (2015)Source code curation on StackOverflowProceedings of the 37th International Conference on Software Engineering - Volume 210.5555/2819009.2819131(661-664)Online publication date: 16-May-2015
  • (2011)A case study of post-deployment user feedback triageProceedings of the 4th International Workshop on Cooperative and Human Aspects of Software Engineering10.1145/1984642.1984644(1-8)Online publication date: 21-May-2011
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media