An Investigation of Java Abstraction Usage for Program Modifications Pamela O’Shea and Chris Exton Computer Science and Information Systems Department, University of Limerick Castletroy, Limerick, Ireland pamela.oshea@ul.ie Abstract This paper reports upon the results of an investigation concerning the use and type of Java abstractions employed during software maintenance. The source of data consists of eighty-eight program summaries extracted from online developer mailing lists. Specifically, the summaries de- scribing modifications, thirty-six in total, were examined from the perspective of five task types, including adaptive, corrective, emergency, perfective and preventive. Correc- tive and perfective task types were the two most commonly found. Abstractions are examined per task type and are also presented in three sequential stages as beginning, mid- dle and end of the summaries. The results show that mid- dle (within program level) abstractions dominate each task type, with the higher (system and architecture level) and lower (code and java virtual machine level) abstractions following respectively. The results detail the type of ab- stractions used in each task type and summarise the ab- stractions found for modifications in general with potential applications to support the design of Java software visuali- sation tools. 1. Introduction “Program maintainability and program understanding are parallel concepts: the more difficult a program is to un- derstand, the more difficult it is to maintain” cited by [17] (p. 849). It is this understanding which provided the moti- vation for the study described here. That is, by investigating which abstractions are more commonly used during soft- ware maintenance, a set of requirements may be generated to aid the design of support tools. The research question under investigation may be stated as follows, “Which abstractions are most important to the experienced software engineer during software main- tenance ?”. The terms “software maintenance”, “experi- enced software engineer” and “abstractions” will now be defined and discussed in turn. Software maintenance has been defined many times by researchers, including Lientz and Swanson in 1978, where it was stated that ‘’maintenance and enhancement are gen- erally defined as activities which keep systems operational and meet user needs” [12]. A more recent definition may be taken from the software engineering institute’s glossary at carnegie-mellon which defines maintenance as “the cost as- sociated with modifying a software system or component af- ter delivery to correct faults, improve performance or other attributes, or adapt to a changed environment” [2]. These and other definitions show that maintenance al- ways consists of “activities” which involve the modifica- tion of the existing source code in some way. This paper presents an investigation into the abstractions used and de- scribed by programmers when performing such modifica- tions to well established open source, object oriented, Java systems. For the purposes of this study, the term “experienced software engineer” may be placed in the context of online open source projects where accepted peer developers con- tribute source code to the repositories. Open source projects were chosen for investigation 1 for a number of reasons, firstly as Capiluppi et al stated, “open source software pro- vides a good opportunity for observing software products in various phases of their evolution, growth and maturity” [4]. Secondly, a large amount of publicly accessible re- sources are associated with well established projects, such as CVS (Concurrent Versions System), issue-tracking, com- munication changes (e.g. mailing lists and newsgroups) and online documentation [7]. Thirdly, experienced programmers may be observed through the archives of developer mailing lists. For well established projects, at least two separate mailing lists ex- ist, one for end-users and another for project developers. It is the latter, developer mailing lists which have been exam- ined in this study. The developer lists were chosen from 1 Approved by the University of Limerick Ethics Committee (Applica- tion Number: 03/52). Proceedings of the 13th International Workshop on Program Comprehension (IWPC’05) 1092-8138/05 $ 20.00 IEEE