Bibliography of Software Maintenance
and Program Comprehension
Department of Computer Science and Information
Systems
Available at: <URL: http://www.cs.jyu.fi/~koskinen/bibsmpc.htm>
since 14th June 2000.
Email: koskinen@cs.jyu.fi
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.
·
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,
·
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.,
·
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,
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.
·
·
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.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.
·
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.
·
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.
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
·
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)
·
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.