Abstract
The research presented in this thesis identifies professional programmers’ comprehension-related activities during the phases of maintenance tasks on a previously unknown Java application. Program comprehension is the process of understanding an unfamiliar program and is a vital task in software maintenance. The extended knowledge of professional programmers’ activities is thus useful to improve the maintenance process related to education in successful techniques. Furthermore it is useful for other researchers conducting studies of program comprehension
A controlled experiment was conducted with 24 participants. The participants used a professional programming environment, JBuilder, to perform three maintenance tasks on a 3600 LOC Java application. The participants’ actions were logged and written feedback was collected.
We have made a further development of GRUMPS which includes data cleaning and analytical preparation of low-level usage data. The extended functionality provides detailed information about each participant’s use of compilation, execution and various documentations. The analysis tool gives an overview of how the participants solved the tasks. It shows the chronological actions and time spent on source code, compilation, execution, web pages and documentation throughout the experiment. This information is useful regarding program comprehension research because we can identify the participants’ comprehension-related activities when familiarizing themselves with an unknown application and during the maintenance tasks.
The participants used source code, system documentation and execution to understand the application. The most important finding was that program execution proved to be important to get an understanding of the system’s dynamic functions. The lack of facilities like compilation and execution in previous comprehension studies can thus cause threats to the validity of their findings.
The use of information sources changed during the phases of the experiment and it was a distinct difference between the initial phase and the rest of the tasks. As expected the source code was most used in all phases, but in the initial phase the system documentation was nearly as much used. Compilation and execution were often performed throughout the experiment. In addition to test the modifications, compilation was also used in the corrective task to locate source code that had to be altered. The participants’ use of internet and web pages appeared to be on an “as-needed” basis. They used the Java API web pages when they needed more information of special Java classes. The participants work cycles consisted of program modifications, reading documentation, compilation and execution.
In addition the work practises of the two participants who performed best and the two who performed worst were identified. The results showed that the two best executed the application more, compiled less and accessed fewer classes. The two best had a more successful employment of the JBuilder programming environment.