Machine Learning for Software Engineering: A Tertiary Study

Kotti, Zoe, Galanopoulou, Rafaila, Spinellis, Diomidis

arXiv.org Artificial Intelligence 

Through ML we can address SE problems that cannot be completely algorithmically modeled, or for which existing solutions do not provide satisfactory results yet (e.g., defect/fault detection [16, 165, 180]). In addition, ML finds application in SE tasks where data cannot be easily analyzed with other algorithms (e.g., software requirements, code comments, code reviews, issues [9, 91, 174]). Another important aspect of ML is that it can significantly reduce manual effort in common SE tasks (e.g., automatic program repair [157], code suggestion [61], defect prediction [19], malware detection [147], feature location [40]) with great accuracy results [146, 164]. In fields such as health informatics ML and SE are considered complementary disciplines, since the growing scale and complexity of healthcare datasets have posed a challenge for clinical practice and medical research, requiring new engineering approaches from both fields [38]. In the early nineties, Huff and Selfridge [68] recognized the need for creating software systems that partially take some responsibility for their own evolution, offering the ability to implement, measure, and assess changes easily. These changes should also contribute to the overall improvement of the corresponding systems [142].