Recommendation Systems in Software Engineering

Book Recommendation Systems in Software Engineering
A book published by Springer and edited by:

Martin P. Robillard, McGill University (Canada)
Walid Maalej, University of Hamburg (Germany)
Robert J. Walker, University of Calgary (Canada)
Thomas Zimmermann, Microsoft Research (USA)


With the growth of public and private data stores and the emergence of off-the-shelf data-mining technology, recommendation systems have emerged that specifically address the unique challenges of navigating and interpreting software engineering data.

This book collects, structures, and formalizes knowledge on recommendation systems in software engineering. It adopts a pragmatic approach with an explicit focus on system design, implementation, and evaluation. The book is divided into three parts: “Part I – Techniques” introduces basics for building recommenders in software engineering, including techniques for collecting and processing software engineering data, but also for presenting recommendations to users as part of their workflow. “Part II – Evaluation” summarizes methods and experimental designs for evaluating recommendations in software engineering. “Part III – Applications” describes needs, issues, and solution concepts involved in entire recommendation systems for specific software engineering tasks, focusing on the engineering insights required to make effective recommendations. The book is complemented by the webpage, which includes free supplemental materials for readers of this book and anyone interested in recommendation systems in software engineering, including lecture slides, data sets, source code, and an overview of people, groups, papers, and tools with regard to recommendation systems in software engineering.

The book is particularly well-suited for graduate students and researchers building new recommendation systems for software engineering applications or in other high-tech fields. It may also serve as the basis for graduate courses on recommendation systems, applied data mining, or software engineering. Software engineering practitioners developing recommendation systems or similar applications with predictive functionality will also benefit from the broad spectrum of topics covered.


Preface, Contents, List of Contributors: Front Matter
Chapter 1: An Introduction to Recommendation Systems in Software Engineering

Part I: Techniques

Chapter 2: Basic Approaches in Recommendation Systems
Chapter 3: Data Mining
Chapter 4: Recommendation Systems in-the-Small
Chapter 5: Source Code-Based Recommendation Systems
Chapter 6: Mining Bug Data
Chapter 7: Collecting and Processing Interaction Data for Recommendation Systems
Chapter 8: Developer Profiles for Recommendation Systems
Chapter 9: Recommendation Delivery

Part II: Evaluation

Chapter 10: Dimensions and Metrics for Evaluating Recommendation Systems
Chapter 11: Benchmarking
Chapter 12: Simulation
Chapter 13: Field Studies

Part III: Applications

Chapter 14: Reuse-Oriented Code Recommendation Systems
Chapter 15: Recommending Refactoring Operations in Large Software Systems
Chapter 16: Recommending Program Transformations
Chapter 17: Recommendation Systems in Requirements Discovery
Chapter 18: Changes, Evolution, and Bugs
Chapter 19: Recommendation Heuristics for Improving Product Line Configuration Processes

Glossary, Index: Back Matter



Alan Said, Alexander Felfernig, Andrea De Lucia, Andreas Zeller, Andrian Marcus, Angela Lozano, Annie T.T. Ying, Ayse Bener, Ayse Tosun Misirli, Bamshad Mobasher, Bora Çaglayan, Burak Turhan, Camille Salinesi, Carlos Castro-Herrera, Colin Atkinson, Cosmin Dumitrescu, Daniel Diaz, Domonkos Tikk, Emerson Murphy-Hill, Florian Reinfrank, Gabriele Bavota, Gail C. Murphy, Gerald Ninaus, Gül Çalikli, Iman Avazpour, Jane Cleland-Huang, John Grundy, Kim Herzig, Kim Mens, Lars Grunske, Laura Inozemtseva, Markus Borg, Martin P. Robillard, Martin Stettinger, Michael Jeran, Miryung Kim, Na Meng, Negar Hariri, Oliver Hummel, Paolo Cremonesi, Per Runeson, Raúl Mazo, Reid Holmes, Robert J. Walker, Rocco Oliveto, Romain Robbes, Stefan Reiterer, Teerat Pitakrat, Thomas Fritz, Tim Menzies, Walid Maalej, Werner Janjic


For any inquiries please contact:

Martin Robillard
School of Computer Science
McGill University