Machine Learning for Software Engineering: Models, Methods, and Applications

Machine Learning (ML) is the discipline that studies methods for automatically inferring models from data. Machine learning has been successfully applied in many areas of software engineering ranging from behaviour extraction, to testing, to bug fixing. Many more applications are yet be defined. However, a better understanding of ML methods, their assumptions and guarantees would help software engineers adopt and identify the appropriate methods for their desired applications. We argue that this choice can be guided by the models one seeks to infer. In this technical briefing, we review and reflect on the applications of ML for software engineering organised according to the models they produce and the methods they use. We introduce the principles of ML, give an overview of some key methods, and present examples of areas of software engineering benefiting from ML. We also discuss the open challenges for reaching the full potential of ML for software engineering and how ML can benefit from software engineering methods.

[1]  Valérie Issarny,et al.  Machine Learning for Emergent Middleware , 2012, EternalS@ECAI.

[2]  Thomas G. Dietterich What is machine learning? , 2020, Archives of Disease in Childhood.

[3]  Karl Meinke,et al.  LBTest: A Learning-Based Testing Tool for Reactive Systems , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[4]  Gerhard Goos,et al.  Machine Learning for Dynamic Software Analysis: Potentials and Limits , 2018, Lecture Notes in Computer Science.