Bibliography of Software Maintenance

and Program Comprehension

Ó Jussi Koskinen

Department of Computer Science and Information Systems

University of Jyväskylä

P.O. Box 35, 40351-Jyväskylä, Finland

Available at: <URL: http://www.cs.jyu.fi/~koskinen/bibsmpc.htm> since 14th June 2000.

Email: koskinen@cs.jyu.fi

 

Abstract

Software maintenance has traditionally been defined as making changes to software after it has been delivered to customers. Program comprehension is a process which aims to enhance the level of knowledge about issues which are important to the fulfillment of programming and maintenance tasks related to a specific software system. Sufficient level of program comprehension is a prerequisite of making changes to software without introducing undesired side-effects. This bibliography focuses on program comprehension issues. The bibliography has been gathered related to a project in which a reverse engineering tool for C-language has been developed. Main categories are: 1) general issues, 2) maintenance categories, and 3) issues which affect program comprehension. Major references are listed based on a wide survey. The surveyed sources are listed, and the journal acronyms used are given at the end of the document.

 

1. General software maintenance issues

·        Edelstein, D. 1993. Report on the IEEE STD 1219 - 1993 - Standard for Software Maintenance. ACM SIGSOFT Software Engineering Notes 18 (4), p. 94.

·        Glass, R. & Vessey, I. 1995. Contemporary application-domain taxonomies. IEEE Software 12 (4), 63-76.

·        Gunter, C., Mitchell, J. & Notkin, D. 1996. Strategic directions in software engineering and programming languages. ACM Computing Surveys 28 (4), 727-737.

·        Hagemeister, J., Lowther, B., Oman, P., Yu, X. & Zhu, W. 1992. An annotated bibliography on software maintenance. ACM SIGSOFT Software Engineering Notes 17 (2), 79-84.

·        Haworth, D., Sharpe, S. & Hale, D. 1992. A framework for software maintenance: a foundation for scientific inquiry. J. Software Maintenance: Research & Practice 4 (2), 105-117.

·        Lientz, B., Swanson, B. & Tomkins, G. 1978. Characteristics of application software maintenance. CACM 21 (6), 466-471.

·        von Mayrhauser, A. & Vans, A.M. 1993. From program comprehension to tool requirements for an industrial environment. In: Proc. 2nd Int. Workshop on Program Comprehension (IWPC'93), 78-86.

·        von Mayrhauser, A. 1994. Maintenance and evolution of software products. AIC 39, 1-49.

·        von Mayrhauser, A. & Vans, A.M. 1995. Industrial experience with an integrated code comprehension model. Software Engineering J. 10 (5), 171-182.

·        Pressman, R. 1997. Software Engineering - A Practitioner's Approach (4th ed.). McGraw-Hill.

·        Prieto-Diaz, R. 1991. Implementing faceted classification for software reuse. CACM 34 (5), 89-97.

·        Sommerville, I. 1996. Software Engineering (5th ed.). Addison-Wesley, pp. 493-496, 507-511, 538-539, 659-674, 711-714.

 

1.1. Productivity models

·        Banker, R., Datar, S. & Kemerer, C. 1991. A model to evaluate variables impacting the productivity of software maintenance projects. Management Science 37 (1), 1-18.

·        Bennett, K. 1995. Legacy systems: coping with success. IEEE Software 12 (1), 19-22.

·        Boehm, B. 1988. Understanding and controlling software costs. IEEE TOSE 14 (10), 1462-1477.

·        Brooks, F.P. Jr. 1987. No silver bullet - essence and accidents of software engineering. Computer 20 (4), 10-19.

 

1.2. Life cycle models

·        Boehm, B. 1988. A spiral model of software development and enhancement. Computer 21 (5), 61-72.

·        Davis, A. 1995. Software prototyping. AIC 40, 39-63.

·        Luqi. 1989. Software evolution through rapid prototyping. Computer 22 (5), 13-25.

·        Pennington, N. & Grabowski, B. 1990. The tasks of programming. In: Hoc, J., Greene, T., Samurcay, R. & Gilmore, D. (Ed.) Psychology of Programming, 45-62. Academic Press.

 

1.3. Legacy system issues

·        IS. 1995. IEEE Software 12 (1). Special issue on legacy systems.

·        IS. 1998. IEEE Software 15 (4). Theme issue on managing legacy systems.

·        Lakhotia, A. 1993. Understanding someone else's code: analysis of experiences. The J. Systems and Software 23, 269-275.

·        Quilici, A. 1995. Reverse engineering of legacy systems: a path toward success. In: Proc. 17th Int. Conf. Software Engineering (ICSE'95), 333-336. ACM Press.

 

2. Maintenance categories

 

2.1. Corrective maintenance

·        Duncan, I. & Robson, D. 1996. An exploratory study of common coding faults in C programs. J. Software Maintenance: Research and Practice 8 (4), 241-256.

·        Eisenstadt, M. 1997. My hairiest bug war stories. CACM 40 (4), 30-37.

·        Gugerty, L. & Olson, G. 1986. Comprehension differences in debugging by skilled and novice programmers. In E. Soloway & S. Iyengar (Ed.) Empirical Studies of Programmers: Papers presented at the First Workshop (ESP'86). Norwood, NJ: Ablex.

·        Katz, I. & Anderson, J. 1988. Debugging: an analysis of bug-location strategies. Human-Computer Interaction 3 (4), 351-399.

·        von Mayrhauser, A. & Vans, A.M. 1997. Hypothesis-driven understanding processes during corrective maintenance of large scale software. In Proc. Int. Conf. Software Maintenance (ICSM'97). IEEE Computer Soc., 12-20.

·        von Mayrhauser, A. & Vans, A.M. 1997. Program understanding needs during corrective maintenance of large systems. In Proc. 21st Ann. Computer Software & Applications Conf. (COMPSAC'97). IEEE Computer Soc., 630-637.

·        Regelson, E. & Anderson, A. 1994. Debugging practices for complex legacy software systems. In Proc. Int. Conf. Software Maintenance (ICSM'94), 137-145.

·        Vessey, I. 1989. Towards a theory of computer program bugs: an empirical test. IJMMS 30 (1), 23-46.

 

2.2. Adaptive maintenance

·        Jones, C. 1989. Software enhancement modelling. J. Software Maintenance - Research and Practice 1, 91-100.

  • von Mayrhauser, A. & Vans, A.M. 1998. Program understanding during software adaptation tasks. In Proc. Int. Conf. Software Maintenance (ICSM'98). IEEE Computer Soc., 316-325.

·        Ramalingam, G. & Reps, T. 1992. A theory of program modifications. In Proc. Colloquium on Combining Paradigms for Software Development. Springer-Verlag, 137-152.

 

2.3. Perfective maintenance

·        von Mayrhauser, A., Vans, A.M. & Howe, A. 1997. Program understanding behaviours during enhancement of large-scale software. J. Software Maintenance: Research and Practice 9 (5), 299-327.

 

3. Program comprehension

·        Corbi, T. 1989. Program understanding: challenge for the 1990s. IBM Systems J. 28 (2), 294-306.

·        JSS. 1999. The J. Systems and Software 44 (3). Special issue on program comprehension.

·        Robson, D., Bennett, K., Cornelius, B. & Munro, M. 1991. Approaches to program comprehension. The J. Systems and Software 14 (2), 79-84.

·        Shneiderman, B. 1986. Empirical studies of programmers: the territory, paths, and destinations. In E. Soloway & S. Iyengar (Ed.) Empirical Studies of Programmers: Papers presented at the First Workshop (ESP'86). Norwood, NJ: Ablex, 1-12.

·        Visaggio, G. 1997. Relationships between comprehension and maintenance activities. In P. Storms (Ed. production) Proc. 5th Int. Workshop on Program Comprehension (IWPC'97). Los Alamitos, CA: IEEE Computer Soc., 4-16.

·        Wiedenbeck, S. 1991. The initial stage of program comprehension. IJMMS 35 (4), 517-540.

 

3.1. Comprehension models

·        Brooks, R. 1983. Towards a theory of the comprehension of computer programs. IJMMS 18 (6), 543-554.

·        Detienne, F. & Soloway, E. 1990. An empirically-derived control structure for the process of program understanding. IJMMS 33 (3), 323-342.

·        von Mayrhauser, A. & Vans, A.M. 1995c. Program understanding models and experiments. AIC 40, 1-38.

·        von Mayrhauser, A. & Vans, A.M. 1995. Program comprehension during software maintenance and evolution. Computer 28 (2), 44-55.

·        von Mayrhauser, A. & Vans, A.M. 1996. Identification of dynamic comprehension processes during large scale maintenance. IEEE TOSE 22 (6), 424-437.

·        Tilley, S., Paul, S. & Smith, D. 1996. Towards a framework for program understanding. In A. Cimitile & H. Muller (Ed.) Proc. 4th Int. Workshop on Program Comprehension (IWPC'96). IEEE Computer Soc., 19-28.

 

3.2. Mental models

·        Canas, J., Bajo, M. & Gonzalvo, P. 1994. Mental models and computer programming. IJHCS 40 (5), 795-811.

·        Corritore, C. & Wiedenbeck, S. 1999. Mental representations of expert procedural and object-oriented programmers in a software maintenance task. IJHCS 50 (1), 61-84.

·        Johnson-Laird, P 1989. Mental models. Foundations of Cognitive Science, 469-499. MIT Press.

·        Littman, D., Pinto, J., Letovsky, S. & Soloway, E. 1986. Mental models and software maintenance. In: Soloway, E. & Iyengar, S. (Ed.) Empirical Studies of Programmers: Papers presented at the First Workshop (ESP'86). Norwood, NJ: Ablex.

·        Pennington, N. 1987. Stimulus structures and mental representations in expert comprehension of computer programs. Cognitive Psychology 19 (3), 295-341.

·        Staggers, N. & Norcio, N. 1993. Mental models: concepts for human-computer interaction research. IJMMS 38 (4), 587-605.

 

3.3. Expertise and experience

·        Cunniff, C. & Taylor, C. 1987. Representation form effects on novice's program comprehension. In Olson, G., Sheppard, S. & Soloway, E. (Ed.) Proc. 2nd Workshop Empirical Studies of Programmers (ESP'87). Norwood, NJ: Ablex.

·        Eteläpelto, A. 1993. Metacognition and the expertise of computer program comprehension. Scand. J. Educational Research 37 (3), 243-254.

·        Fix, V., Wiedenbeck, S. & Scholtz, J. 1993. Mental representations of programs by novices and experts. In: Interchi'93: Proc. Conf. Human Factors in Computing Systems, 74-79.

·        Koenemann, J. & Robertson, S. 1991. Expert problem solving strategies for program comprehension. In Proc. Conf. Human Factors in Computing Systems. ACM Press, 125-130.

·        Soloway, E., Ehrlich, K., Bonar, J. & Greenspan, J. 1982. What do novices know about programming? In B. Shneiderman & A. Badre (Ed.) Directions in Human-Computer Interaction. Norwood, NJ: Ablex.

·        Vessey, I. 1985. Expertise in debugging computer programs: a process analysis. IJMMS 23 (5), 459-494.

·        Wiedenbeck, S. & Fix, V. 1993. Characteristics of the mental representations of novice and expert programmers: an empirical study. IJMMS 39 (5), 793-812.

 

3.4. Programming knowledge

·        Adelson, B. 1981. Problem solving and the development of abstract categories in programming languages. Memory and Cognition 9 (4), 422-433.

·        Brooks, R. 1990. Categories of programming knowledge and their application. IJMMS 33 (3), 241-246 (An introduction to the special issue).

·        Rich, C. & Feldman, Y. 1992. Seven layers of knowledge representation and reasoning in support of software development. IEEE TOSE 18 (6), 451-469.

·        Robillard, P. 1999. The role of knowledge in software development. CACM 42 (1), 87-93.

·        Shaft, T. & Vessey, I. 1996. Computer program comprehension processes: the effect of application domain knowledge. In: W. Gray & D. Boehm-Davis (Ed.) Empirical Studies of Programmers: 6th Workshop (ESP'96), 277-278.

·        Soloway, E., Adelson, B. & Ehrlich, K. 1988. Knowledge and processes in the comprehension of computer programs. In M. Chi, R. Glaser & M. Farr (Ed.) The Nature of Expertise. Hillsdale, NJ: Lawrence Erlbaum Ass., 129-152.

·        Soloway, E. & Ehrlich, K. 1984. Empirical studies of programming knowledge. IEEE TOSE 10 (5), 595-609.

·        Soloway, E. & Johnson, W. 1985. Knowledge-based program understanding. IEEE TOSE 9, 267-275.

 

3.5. Programming language effects

·        Henry, S. Humphrey, M. 1993. Object-oriented vs procedural programming languages: effectiveness in program maintenance. JOOP 6 (3), 41-49.

·        Mancl, D. & Havanas, W. 1990. A study of the impact of C++ on software maintenance. Proc. IEEE Int. Conf. Software Maintenance (ICSM'90), 63-69.

·        Wiedenbeck, S., Ramalingam, V., Sarasammo, S. & Corritore, C. 1999. A comparison of the comprehension of object-oriented and procedural programs by novice programmers. Interacting with Computers 11 (3), 255-282.

 

3.6. Cognitive processes and comprehension strategies

·        Arunachalam, V. & Sasso, W. 1996. Cognitive processes in program comprehension: an empirical analysis in the context of software reengineering. The J. Systems and Software 34 (3), 177-189.

·        Brooks, R. 1977. Towards a theory of the cognitive processes in computer programming. IJMMS 9, 737-751.

·        Iio, K., Furuyama, T. & Arai, Y. 1997. Experimental analysis of the cognitive processes of program maintainers during software maintenance. In Proc. Int. Conf. Software Maintenance (ICSM'97). IEEE Computer Soc.

·        Letovsky, S. 1986. Cognitive process in program comprehension. In E. Soloway & S. Iyengar (Ed.) Empirical Studies of Programmers: Papers presented at the First Workshop (ESP'86). Norwood, NJ: Ablex, 80-98.

·        Storey, M.-A., Wong, K. & Muller, H. 1997. How do program understanding tools affect how programmers understand programs. In P. Storms (Ed. production) Proc. 4th Working Conf. Reverse Engineering (WCRE'97). Los Alamitos, CA: IEEE Computer Soc., 12-21.

 

3.7. Concept assignment

·        Biggerstaff, T., Mitbander, B. & Webster, D. 1993. The concept assignment problem in program understanding. In: E. Straub (Ed. production) Proc. 15th Int. Conf. Software Engineering (ICSE'93). Los Alamitos, CA: IEEE Computer Soc., 482-498.

 

3.8. Program structures

·        Hartman, J. 1991. Understanding natural programs using proper decomposition. In Proc. 13th Int. Conf. Software Engineering (ICSE'91). IEEE Computer Soc./ACM Press, 62-73.

·        Iselin, B. 1988. Conditional statements, looping constructs, and program comprehension: an experimental study. IJMMS 28 (1), 45-66.

·        Riecken, R., Koenemann-Belliveau, J. & Robertson, S. 1991. What do expert programmers communicate by means of descriptive commenting. In J. Koenemann-Belliveau, T. Moher & S. Robertson (Ed.) Empirical Studies of Programmers: 4th Workshop (ESP'91). Norwood, NJ: Ablex, 177-195.

·        Soloway, E., Bonar, J. & Ehrlich, K. 1983. Cognitive strategies and looping constructs: an empirical study. CACM 26 (11), 853-860.

 

3.9. Beacons

·        Gellenbeck, E. & Cook, C. 1991. An investigation of procedure and variable names as beacons during program comprehension. In J. Koenemann-Belliveau, T. Moher & S. Robertson (Ed.) Empirical Studies of Programmers: 4th Workshop (ESP'91). Norwood, NJ: Ablex, 65-81.

·        Wiedenbeck, S. 1986. Beacons in computer program comprehension. IJMMS 25 (6), 697-709.

 

3.10. Chunks

·        Vessey, I. 1987. On matching programmers' chunks with program structures: an empirical investigation. IJMMS 27 (1), 65-89.

 

3.11. Program(ming) plans

·        Davies, S. 1990. The nature and development of programming plans. IJMMS 32 (4), 461-481.

·        Gilmore, D. & Green, T. 1988. Programming plans and programming expertise. The Quarterly J. Experimental Psychology 40A (3), 423-442.

·        Letovsky, S. & Soloway, E. 1986. Delocalized plans and program comprehension. IEEE Software 3 (3), 41-49.

·        Quilici, A. 1994. A memory-based approach to recognizing programming plans. CACM 37 (5), 84-93.

·        Soloway, E., Pinto, J., Letovsky, S., Littman, D. & Lampert, R. 1988. Designing documentation to compensate for delocalized plans. CACM 31 (11), 1259-1267.

 

3.12. Programming styles

·        Berry, A. & Meekings, B. 1985. A style analysis of C programs. CACM 28 (1), 80-88.

·        Oman, P. & Cook, C. 1991. A programming style taxonomy. The J. Systems and Software 15 (3), 287-301.

·        Straker, D. 1992. C Style Standards and Guidelines. UK: PHI.

 

3.13. Representation form effects

·        Basili, V. & Mills, H. 1982. Understanding and documenting programs. IEEE TOSE 8 (3), 270-283.

·        Boehm-Davis, D., Holt, R. & Schultz, A. 1992. The role of program structure in software maintenance. IJMMS 36, 21-63.

·        Burd, E. & Munro, M. 1997. Investigating the maintenance implications of the replication of code. In: Proc. Int. Conf. Software Maintenance (ICSM'97), 322-330. IEEE Computer Soc.

·        Gibson, V. & Senn, J. 1989. System structure and software maintenance performance. CACM 32 (3), 347-358.

·        Green, T., Petre, M. & Bellamy, R. 1991. Comprehensibility of visual and textual programs: a test of superlativism against the 'match-mismatch' conjencture. In: Koenemann-Belliveau, J., Moher, T. & Robertson, S. (Ed.) Empirical Studies of Programmers: 4th Workshop (ESP'91), 121-146. Norwood, NJ: Ablex.

·        Keller, D. 1990. A guide to natural naming. ACM SIGPLAN Notices 25 (5), 95-102.

·        Kesler, T., Uram, R., Magareh-Abed, F., Fritzsche, A., Amport, C. & Dunsmore, H. 1984. The effect of indentation on program comprehension. IJMMS 21, 415-428.

·        Moher, T., Mak., D., Blumenthal, B. & Leventhal, L. 1993. Comparing the comprehensibility of textual and graphical programs: the case for Petri nets. In:  Empirical Studies of Programmers: 5th Workshop (ESP'93), 137-161. Norwood, NJ: Ablex.

·        Petre, M. 1995. Why looking isn't always seeing: readership skills and graphical programming. CACM 38 (6), 33-44.

·        Rombach, H. 1987. A controlled experiment on the impact of software structure on maintainability. IEEE TOSE 13 (3), 344-354.

·        Tenny, T. 1988. Program readability: procedures versus comments. IEEE TOSE 14 (9), 1271-1279.

 

Surveyed sources

The literature survey is based on the following journals and conference proceedings. The name of the source is followed by the possibly used acronym (in parentheses), and the range of years covered by the survey.

 

A. Journals

·        Communications of the ACM (CACM), 1990-99

·        IEEE Transactions on Software Engineering (IEEE TOSE), 1990-99

·        International Journal of Human-Computer (Man-Machine) Studies (IJHCS/IJMMS), 1990-99

·        IEEE Software, 1990-99

·        Computer, 1990-99

·        Information Processing and Management, 1990-99

·        Journal of Software Maintenance (JSM), 1990-99

·        Information and Software Technology, 1990-99

·        Software - Practice & Experience, 1990-99

·        ACM Transactions on Programming Languages and Systems (ACM TOPLAS), 1990-99

·        The Journal of Systems and Software, 1997-99

·        ACM Transactions on (Office) Information Systems (TOIS/TOOIS), 1990-99

·        Journal of the American Society for Information Science (JASIS), 1990-99

·        Journal of Algorithms, 1990-99

·        Advances in Computers (AIC), 1990-99

·        The Computer Journal, 1997-99

·        ACM Transactions on Software Engineering and Methodology (TOSEM), 1990-99

·        ACM Computing Surveys, 1990-99

·        IBM Systems Journal, 1990-99

·        International Journal of Software and Knowledge Engineering, 1990-99

·        Journal of Object-Oriented Programming (JOOP), 1997-99

·        Journal of the ACM, 1997-99

·        ACM SIGSOFT Software Engineering Notes (bulletin/excluding conf. proc:s), 1997-99

·        Human-Computer Interaction, 1997-99

·        Intelligent Systems and their Application (IEEE Expert), 1997-99

·        ACM Letters on Programming Languages and Systems (LOPLAS), 1990-99

·        Software - Concepts and Tools, 1990-99

·        Software Engineering Journal, 1997-99

·        Structured Programming, 1990-99

·        ACM SIGPLAN Notices (bulletin/excluding conf. proc:s), 1997-99

·        ACM Transactions on Computer-Human Interaction (TOCHI), 1990-99

 

B. Proceedings

·        International Conference on Software Maintenance (ICSM), 1990-99

·        International Workshop on Program Comprehension (IWPC), 1990-99

·        International Conference on Software Engineering (ICSE), 1990-99

·        Workshop on Empirical Studies of Programmers (ESP), 1990-99

·        ACM Hypertext Conference, 1990-99

·        Working Conference on Reverse Engineering (WCRE), 1990-99

·        ACM SIGIR Annual International Conference on Research and Development on Information Retrieval (SIGIR), 1990-99

·        Conference on Human Factors in Computing Systems (CHI), 1997-99

·        ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 1997-99

·        ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), 1997-99

 

C. Other related conferences

·        ACM SIGPLAN Symposium on Principles of Programming Languages (POPL)

·        European Conference on Hypertext/Hypermedia Technologies (ECHT)

·        ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE)

·        IBM Centre for Advanced Studies Conference (CASCON)

·        Hawaii International Conference on System Sciences (HICSS)

·        ACM SIGSOFT/SIGPLAN Symposium on Practical Programming Environments

·        ACM Conference on Management of Data (SIGMOD)

·        Conference on Object-oriented Systems and Languages (OOPSLA)

·        Conference on Intelligent Text and Image Handling (RIAO)

·        International Conference on Software Engineering and Knowledge Engineering (SEKE)

 

D. Journal name acronyms used

·        AIC                             Advances in Computers

·        ACM LOPLAS           ACM Letters on Programming Languages and Systems

·        ACM TOCHI              ACM Transactions on Computer-Human Interaction

·        ACM TOIS                 ACM Transactions on Information Systems

·        ACM TOOIS              ACM Transactions on Office Information Systems

·        ACM TOPLAS           ACM Transactions on Programming Languages and Systems

·        ACM TOSEM             ACM Transactions on Software Engineering and Methodology

·        CACM                        Communications of the ACM

·        IEEE TOSE                 IEEE Transactions on Software Engineering

·        IJHCS                          International Journal of Human-Computer Studies

·        IJMMS                        International Journal of Man-Machine Studies

·        JASIS                          Journal of the American Society for Information Science

·        JOOP                          Journal of Object-Oriented Programming

·        LNCS                          Lecture Notes in Computer Science

 

Updated: 12-Sept.-2003 by Jussi Koskinen.