The Computational Intelligence for Software Engineering Lab (CISELab) is a center of excellence in Software Engineering and Computational Intelligence research, teaching, and practice.
The development, maintenance, and testing of large software products involve many activities that are complex, expensive, and error-prone. For example, complex systems (e.g., autonomous cars) are typically built as a composition of features that tend to interact and impact one another’s behavior in unknown ways. Detecting feature interaction failures with manual testing becomes infeasible and too expensive when the number and the complexity of the features increase.
There are many tribes of AI, namely Symbolists, Evolutionists, Bayesians, Kernel Conservatives, Connectionists). In the CISE Lab, we focus on applying Computational Intelligence (CI) to automate expensive development activities since more development automation would require fewer human resources. One of the most common ways to make such automation is the Search-Based Software Engineering (SBSE), which reformulates traditional software engineering tasks as search (optimization) problems. Then, CI algorithms (e.g., genetic algorithms, genetic programming, simulated annealing) are used to automate the process of discovering (e.g., detecting software defects) and building optimal solutions (e.g., software fixes).
SBSE is not only an academic research area, but it is achieving significant uptake in many industrial sectors. For example, Facebook uses multi-objective solvers to automatically design system-level test cases for mobile apps ; Google uses multi-objective solvers for regression testing . SSBSE techniques has been also applied in the automotive domain (IEE S.A. ), in satellite domain (SES S.A. ) and security testing.
At the Computational Intelligence Lab, our research topics include but are not limited to the following research topics:
Blockchain Testing and Analysis
Testing for Machine Learning
Test Case Generation and Fuzzing (unit, system, and integration level)
Testing Cyber Physical Systems (e.g., self-driving cars).
Automated Program Repair (including genetic programming)