This week I gave a research seminar at Dalhousie University and at Mount Allison University on “Automating Software Development Using Artificial Intelligence (AI).” The intersection of AI and Software Engineering is an active research area and has lead to a number of effective and novel applications of machine learning, metaheuristic algorithms and deep learning. Many of these applications of AI to software development can be categorized as:
- Automation of software development activities including the creation of software artifacts (e.g., software test generation)
- Recommendation systems to assist software developers improve their performance (e.g., recommended code for review)
Not all Software Engineering research problems can be suitably addressed by AI techniques. A good first step to determine if a given software development problem can be addressed with AI is to see if it can be re-framed in terms of optimization, classification, prediction, etc. That is, can it be re-framed in terms of the type of problems that AI methods are effective at solving?
To find out more about the Software Quality Research Lab‘s work in this area please see the abstract and slides from my talk below.
Abstract: In recent years, traditional software development activities have been enhanced through the use of Artificial Intelligence (AI) techniques including genetic algorithms, machine learning and deep learning. The use cases for AI in software development have ranged from developer recommendations to complete automation of software developer activities. To demonstrate the breadth of application, I will present several recent examples of how AI can be leveraged to automate software development. First, I will present an approach to predicting future code changes in GitHub projects using historical data and machine learning. Next, I will present our framework for repairing multi-threaded software bugs using genetic algorithms. I will conclude with a broad discussion of the impact AI is having on software development.