Machine Learning for Software Engineering: A Systematic Mapping
  Context: The software development industry is rapidly adopting machine
learning for transitioning modern day software systems towards highly
intelligent and self-learning systems. However, the full potential of machine
learning for improving the software engineering life cycle itself is yet to be
discovered, i.e., up to what extent machine learning can help reducing the
effort/complexity of software engineering and improving the quality of
resulting software systems. To date, no comprehensive study exists that
explores the current state-of-the-art on the adoption of machine learning
across software engineering life cycle stages. Objective: This article
addresses the aforementioned problem and aims to present a state-of-the-art on
the growing number of uses of machine learning in software engineering. Method:
We conduct a systematic mapping study on applications of machine learning to
software engineering following the standard guidelines and principles of
empirical software engineering. Results: This study introduces a machine
learning for software engineering (MLSE) taxonomy classifying the
state-of-the-art machine learning techniques according to their applicability
to various software engineering life cycle stages. Overall, 227 articles were
rigorously selected and analyzed as a result of this study. Conclusion: From
the selected articles, we explore a variety of aspects that should be helpful
to academics and practitioners alike in understanding the potential of adopting
machine learning techniques during software engineering projects.
