Guest editor's introduction to the Special Issue on Program Comprehension (ICPC 2014)

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 highquality 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.