Computational Intelligence for Software Engineering (CISELab)
Led by Annibale Panichella
How can Computational Intelligence techniques automate software testing and other complex software development tasks?
Icon design by Srinivas Agra
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. Therefore, 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:
Testing for Blockchain: Security of blockchain applications is highly critical. Our goal is to develop novel automated testing techniques that scale to the complexity of blockchain-based systems. Related project: RIPPLE
Test Case Generation: Developing tools that automatically synthetize (generate) test cases with high code coverage (e.g., branch coverage) and that reveal faults or trigger crashes. Related projects include Botsing for crash replication and EvoSQL for testing SQL queries. We also actively contribute to the EvoSuite framework for unit-level testing , , .
AI-based Penetration Testing: Enterprise web systems use different protection layers (e.g., input sanitization, Web Application Firewalls) against malicious attacks (code injection). Since cyber-attacks are increasingly sophisticated, these protection layers become complex and difficult to maintain and test manually. We develop penetration testing tools that use machine learning (ML) techniques to identify and predict malicious string patterns that are more likely to violate the security layers. For example, we use SBSE in combination with ML to test  Vulnerable Web Application Firewalls (WAFs) and the input validation and sanitization procedures in front-end web applications . Related project: AI4Fintech
Testing Autonomous Cars: Self-driving cars, and in general automotive systems, are feature-based systems where different units of functionalities (features) work together. To test these complex systems in an automated fashion, we use ML, and SSBSE to find test scenarios (simulation settings) that violate system requirements, hence leading to software failures .
Automated Program Repair: Patching defective code is a human-intensive activity. The goal of this line for research is to develop techniques that can automatically generate correct patches boggy code without causing software regression. The most common techniques for program repair include evolutionary algorithms and machine learning (see, for example Repairing Firewall, and Self-driving cars).
- Annibale Panichella (Lab leader)
- Arie van Deursen (Leader of the Software Engineering group)
- Xavier Devroey (Postdoc), working on Search-based Testing
- Mitchell Olsthoorn (Ph.D. student), working on Testing for Blockchain
- Pouria Derakhshanfar (internal collaborator)
The lab collaborates with the following people/organizations (reported in alphabetic order):
- Andrea Arcuri, Kristiania University College, Norvegia
- Gordon Fraser, University of Passau, Germany
- Vincent Hellendoorn, UC Davis, USA
- Fitsum Kifetew, Fondazione Bruno Kessler, Italy
- Sebastiano Panichella, Zurich University of Applied Sciences, Switzerland
- Anand Ashok Sawant, UC Davis, USA
- Paolo Tonella, Universita’ della Svizzera Italiana, Switzerland
- SVV Lab - Interdisciplinary Centre for Security, Reliability and Trust, University of Luxemburg
CISELab is always open to hosting/collaborating with smart and motivated MSc/BSc students to work on the exiting topics we offer. Currently, CISELab is hosting the following students:
- Dimitri Stallenberg (MSc student), working on SBSE
- Merel Steenbergen (BSc student), working on Ripple
The Computational Intelligence for SE Lab (CISELab) has received funding from:
- European Commission