SEARCH-BASED SOFTWARE ENGINEERING

In general, we can find optimization problems in any engineering discipline. In these problems, we try to find the best values ​​for the variables involved in them. Optimization problems often belong to the NP-hard complexity class, which means that there is no known method that can solve them efficiently. For small problems, there are methods that can solve them exactly, however, as the size of the problem increases, which happens in real problems, the execution time of these methods increases considerably. This is the main reason why heuristic methods are commonly used to solve optimization problems, which, despite not offering a performance guarantee, usually find good and practical solutions.

In software engineering (SE), as in any other engineering discipline, optimization problems also arise, before, during, and after software development, which have to be solved in the best possible way. Precisely, the search-based software engineering (SBSE) considers the problems that appear in the SE as optimization problems and tries to solve them using heuristic methods.

A variety of methods have been used in SBSE, within which we can find local search methods and some meta-heuristics, such as simulated annealing and tabu search. It is of my particular interest to apply bio-inspired heuristics, due to their simplicity of implementation and the favorable results that have been obtained through them in other engineering disciplines.