It is our pleasure to introduce you to the papers in this Special Issue based on the 22th International Conference on Program Comprehension (ICPC 2014). Program comprehension plays a central role in most of the phases of the software development life cycle, where it helps facilitate reuse, inspection, maintenance, reverse engineering, reengineering, migration, and extension of existing software systems. The International Conference on Program Comprehension (ICPC) is the primary venue for work in the area of program comprehension. It is also one of the leading venues for work in the areas of software analysis, reverse engineering, software evolution, and software visualization. ICPC provides an opportunity for researchers and industry practitioners to present and discuss the state-of-the-art and the state-of-the-practice in program comprehension and related areas. ICPC 2014 took place during June 2–3, 2014, in Hyderabad, India, and was co-located with the International Conference on Software Engineering (ICSE 2014). ICPC 2014 received a record number of submissions (76) from 19 different countries, which allowed us to assemble an excellent program that continues ICPC's tradition of providing a high-quality venue for sharing the latest advances in program comprehension. The program included 20 full research papers, 11 short papers and 5 tool demonstration papers. Of these 20 full research papers, five were invited to submit an extended version to the Journal of Software: Evolution and Process. After a rigorous reviewing process with at least three reviewers per paper, four papers were accepted for publication in this special section. The paper entitled ‘Framing Program Comprehension as Fault Localization’ by Alexandre Perez and Rui Abreu proposes an approach, coined Spectrum-based Feature Comprehension (SFC), that borrows techniques from software-fault localization that were proven to be effective even when debugging large applications. SFC analyses the program by exploiting run-time information from test case executions to identify the components that are important for a given feature, helping software engineers to understand how a program is structured and each of the functionality's dependencies are. They present a toolset, coined PANGOLIN, that implements SFC and displays its report to the user using an intuitive visualization. The paper entitled ‘Searching Crowd Knowledge to Recommend Solutions for API Usage Tasks’ by Eduardo C. Campos, Lucas B. L. de Souza, and Marcelo de A. Maia presents an approach that makes use of ‘crowd knowledge’ in Stack Overflow to recommend information that can assist developer activities. This strategy recommends a ranked list of question-answer pairs from Stack Overflow based on a query. The criteria for ranking are based on three main aspects: the textual similarity of the pairs with respect to the query related to the developer's problem, the quality of the pairs, and a filtering mechanism that considers only ‘how-to’ posts. The paper entitled, ‘AmaLgam+: Composing Rich Information Sources for Accurate Bug Localization’ by Shaowei Wang and David Lo proposes AmaLgam+, which is a method for locating relevant buggy files that combines five sources of information, namely, version history, similar reports, structure, stack traces, and reporter information. They perform a large-scale experiment on four open source projects, namely, AspectJ, Eclipse, SWT, and ZXing to localize more than 3000 bugs and compare AmaLgam+ results with those of six state-of-the-art bug localization approaches. The study showed that the newly proposed method outperforms these existing approaches in terms of mean average precision. The paper entitled, ‘Source code analysis with LDA’ by David Binkley, Daniel Heinz, Dawn Lawrie and Justin Overfelt aims to aid software engineers in their understanding of the Latent Dirichlet allocation (LDA) tuning parameters by numerically and graphically demonstrating the relationship between the tuning parameters and the LDA output. LDA has seen increasing use in the understanding of source code and its related artifacts in part because of its impressive modeling power. However, this expressive power comes at a cost: The technique includes several tuning parameters whose impact on the resulting LDA model must be carefully considered. The aim of their work is to provide insights into the tuning parameters' impact. We hope that readers will enjoy this special issue and gain useful insights from the four papers presented. We would like to thank all the authors who submitted papers to the conference and the authors who significantly extending their work for this special issue. In addition, we would like to thank the members of the ICPC 2014 program committee and the external reviewers for their time, careful reviews, and active discussions of the submitted papers, which helped making this special issue special. Finally, we would like to thank the editorial board of the Journal of Software: Evolution and Process and the publisher Wiley for providing us with the opportunity to devote this issue to the best of ICPC 2014. We also thank Journal of Software: Evolution and Process Editor Gerardo Canfora for providing expert guidance and important advice throughout the process. Enjoy!
Read full abstract