Machine Learning for Software Engineering

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 including: behaviour extraction, testing and bug fixing. Many more applications are yet be defined. Therefore, a better fundamental understanding of ML methods, their assumptions and guarantees can help to identify and adopt appropriate ML technology for new applications.

At this early stage of this research, I am seeking to answer three questions:

  • What class of learned models is appropriate for solving my SE problem?
  • For this class of models, are there any existing learning algorithms that will work for typical instances and sizes of my SE problem? Otherwise, is it possible to adapt any fundamental ML principles to derive new learning algorithms?
  • Has anyone considered a similar SE problem, and was it tractable to an ML solution?