Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks

Several innovative tools have found their way into mainstream use in modern development environments. However, most of these tools have focused on creating and modifying code, despite evidence that most of programmers' time is spent understanding code as part of maintenance tasks. If new tools were designed to directly support these maintenance tasks, what types would be most helpful? To find out, a study of expert Java programmers using Eclipse was performed. The study suggests that maintenance work consists of three activities: (1) forming a working set of task-relevant code fragments; (2) navigating the dependencies within this working set; and (3) repairing or creating the necessary code. The study identified several trends in these activities, as well as many opportunities for new tools that could save programmers up to 35% of the time they currently spend on maintenance tasks.

[1]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[2]  Xiangyu Zhang,et al.  Precise dynamic slicing algorithms , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[3]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[4]  Susan Wiedenbeck,et al.  An exploratory study of program comprehension strategies of procedural and object-oriented programmers , 2001, Int. J. Hum. Comput. Stud..

[5]  Jean Scholtz,et al.  The Roles Beacons Play in Comprehension for Novice and Expert Programmers , 2002, PPIG.

[6]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[7]  Giuliano Antoniol,et al.  Design pattern recovery in object-oriented software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[8]  Mary Beth Rosson,et al.  The reuse of uses in Smalltalk programming , 1996, TCHI.

[9]  Dirk Beyer,et al.  Simple and efficient relational querying of software structures , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[10]  Barbee Teasley,et al.  The effects of naming style and expertise on program comprehension , 1994, Int. J. Hum. Comput. Stud..

[11]  Christopher Fry Programming on an already full brain , 1997, CACM.

[12]  Brad A. Myers,et al.  Designing the whyline: a debugging interface for asking questions about program behavior , 2004, CHI.

[13]  Simon P. Davies,et al.  Models and Theories of Programming Strategy , 1993, Int. J. Man Mach. Stud..

[14]  L Corritorecynthia,et al.  An exploratory study of program comprehension strategies of procedural and object-oriented programmers , 2001 .

[15]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[16]  L. Perlow The Time Famine: Toward a Sociology of Work Time , 1999 .

[17]  Víctor M. González,et al.  "Constant, constant, multi-tasking craziness": managing multiple working spheres , 2004, CHI.

[18]  Brad A. Myers,et al.  A framework and methodology for studying the causes of software errors in programming systems , 2005, J. Vis. Lang. Comput..