COINSE (Computational Intelligence for Software Engineering) Lab focuses on the application of various computational intelligence techniques to problems in software engineering. We apply techniques such as genetic algorithm, machine learning, and Monte-Carlo methods, in order to solve problems such as automated test input generation, regression testing optimisation, automated design of debugging aides and code patches, etc. Our research aim is twofolds: to automate repetitive and error-probe human tasks in software engineering sing computational intellicenge, and to provide insights from a large volume of data that is beyond human comprehension.
Fault Localisation aims to automatically assist developers to find the location of the root cause of test failures, using various information such as test results, change history of the code, and the source code itself. We use existing bug benchmarks (a collection of known bugs) to train various machine learning models that can help developers find the location.
Automated Program Repair
Taking it one step further than finding locations of bugs, we also work on Automated Program Repair techniques that will automatically modify source code until it passes all test cases. For this, we use various AI techniques such as deep-learning based language models and tree search algorithm in addition to existing software testing techniques.
Validation of Machine Learning Models
Unlike traditional software that is developed based on explicit specifications, ML models are a type of black box that is obtained via stochastic training process using the given training data. We study how we can validate and evaluate the quality of such models, when they are used in conjunction with traditional code, as part of a larger software system.