Sonification Design Guidelines to Enhance Program Comprehension Khaled Hussein 1 , Eli Tilevich 1 , Ivica Ico Bukvic 2 1 Department of Computer Science 2 Department of Music Virginia Tech, Blacksburg, VA 24061 {khussein,tilevich,ico}@vt.edu SooBeen Kim Wellesley College Wellesley, MA 02481 skim10@wellesley.edu Abstract Faced with the challenges of understanding the source code of a program, software developers are assisted by a wealth of software visualization research. This work ex- plores how visualization can be supplemented by sonifica- tion as a cognitive tool for code comprehension. By en- gaging the programmer’s auditory senses, sonification can improve the utility of program comprehension tools. This paper reports on our experiences of creating and evaluat- ing a program comprehension prototype tool that employs sonification to assist program understanding by rendering sonic cues. Our empirical evaluation of the efficacy of in- formation sonification indicates that this cognitive aid can effectively complement visualization when trying to under- stand an unfamiliar code base. Based on our experiences, we then propose a set of guidelines for the design of a new generation of tools that increase their information utility by combining visualization and sonification. 1. Introduction The source code comprising modern software systems is among the most complex products of human intellect. Soft- ware maintenance is concerned with correcting problems and enhancing existing features in released software and constitutes the largest portion of the total software develop- ment effort and cost [6, 7, 28, 29, 55]. An essential prereq- uisite for maintaining a software system is understanding its source code. As a result, software comprehension has long been recognized as one of the most critical and time- consuming software development activities [33, 30, 47, 36]. Research efforts aiming at addressing challenges of software comprehension falls into two general categories. Some researchers study different cognitive factors that af- fect source code understandability, including readability, documentation, evolution, etc. Other researchers explore new techniques and tools that simplify program understand- ing and evaluate them empirically. One of the traditional cognitive aids employed to im- prove program understanding is software visualization [39]. Several research studies, however, have shown that an addi- tional information channel provided by sound can enhance a visual or haptic display [53, 52, 51]. To that end, this paper explores how a program comprehension tool can use sound to facilitate program comprehension and how vision should be supplemented with sound to achieve maximum benefit. Specifically, this work presents an approach to enhancing an Integrated Development Environment (IDE) with an au- ditory display. We report on our experiences of adding the ability to render sonic cues to Eclipse [42], so that sonifi- cation could supplement visualization to assist program un- derstanding. Using the enhanced IDE, we then conducted a controlled experiment to assess the efficacy of sonifica- tion as a cognitive aid that assists program comprehension. In addition, we have reviewed a substantial body of the re- search literature in data sonification and program compre- hension to understand the potential for these two research areas to cross-pollinate. Finally, based on the results of our study and the insights from the literature review, we have created a set of guidelines for guiding the creation of techniques and tools that harmoniously combine vision and sound to help the programmer in understanding an unfamil- iar codebase. Hence, this work makes no claims regarding the supe- riority of sonifciation over visualization or vice versa as a cognitive aid for program comprehension. Instead, we ar- gue that these two presentation techniques should be com- bined to achieve maximum benefit for a large and diverse population of software developers. Although the general idea of adding sound to enhance a visual display has been studied in the past, the novelty of this work lies in applying this idea to the problem of program comprehension. Although this paper reports on the initial results of an on- going investigation, we believe that it makes the following contributions: