Timothy D. Shadel and Dr. Peter Biggs, Computer Science
Research has shown that the maintenance of existing software represents about 80% of the total development effort [1]. Up to 50% of a developer’s time may be spent trying to understand the software system [2]. Because maintenance costs are high, any methodology, tool, or training that could help reduce this cost would be a welcome aid to software development companies.
The recent growth in using visual development environments has helped to increase a developer’s productivity, but it has also complicated the maintenance of projects. This experiment focused on better determining if using a tool to display the dependencies that exist between the user-interface and supporting source code significantly increases a programmer’s effectiveness during software maintenance. This report provides the details of the study.
Methods
I developed a tool, RelianceDoc, to display the dependencies that exist between the source code of a program and it’s user-interface components in the Inprise Delphi development environment. Because this tool was developed only for a proof-of-concept exercise, it has limited functionality. The analysis it performs on the supporting files is limited to matching exact names, with little regard to variable scope issues that should be addressed in a more general application of this nature.
I gathered a group of six Delphi programmers to test the hypothesis. I gathered data on the programming and development environment experience of each of the participants in this study using a questionnaire. They were then divided into two groups of approximately equal experience to limit any significant difference between the groups. One group was given a 15- minute tutorial on how to use the tool and allowed to practice with it for about 15 minutes. The other group was not given the tool.
Each participant was given a copy of the source to a real application in maintenance at the MTC, with which none of them had any direct experience. They each received a sheet of instructions detailing three maintenance tasks that needed to be performed. The first two were examples of common routine maintenance tasks, and the last simulates a slightly less common example of incorporating current functionality into new programs. The participants also received a working example program, without source, to clearly illustrate the functionality required for the third task. There was a 90-minute time limit on the programming exercise.
Using a second questionnaire, I collected data on the time each participant took to finish the maintenance tasks, how well they felt they understood the program, and the confidence they had that the changes and additions they made had been correct. I gave a third questionnaire to the group that used the RelianceDoc tool. It gathered information about the tool’s ease of use and their impressions on how much it helped them in performing the maintenance tasks.
Data
Group 2 received the tool. Subject B chose to discontinue participation before performing the programming exercise and therefore those scores are not averaged in with Group 2. All responses, except those indicating time, are on a scale between 0 and 10 with 10 as the highest.
Conclusions
While these groups are too small to allow me to infer any sound generalities from the results, the data does suggest that the tool helped programmers be more effective by increasing their program understanding during software maintenance, as well as decreasing their programming time. In responses 2-5 of the second survey the group that used RelianceDoc reported much higher levels of understanding the program and the interactions between the program’s components than did Group 1, and required approximately 2/3 the total time (spent + estimated) of Group 1. These results encourage a larger, more formal study into this area. Further research may show that a similar tool would be helpful to a wide range of programmers and companies.
References
- Ronald T. Crocker, Anneliese von Mayrhauser. Maintenance Support Needs for Object- Oriented Software. In Proceedings of the IEEE Computer Society’s International Computer Software & Applications Conference, pages 63-69, Nov 1993.
- P. Devanbu, Y-F. Chen, E. Gansner, H. Müller, J. Martin. CHIME: Customizable Hyperlink Insertion and Maintenance Engine for Software Engineering Environments. In Proceedings of the Twenty-first International Conference on Software Engineering, pages 473-482, May 1999.