Search-based software engineering (SBSE) is an approach to apply metaheuristic search techniques like genetic algorithms, simulated annealing and tabu search to software engineering problems. It is inspired by the observation that many activities in software engineering can be formulated as optimization problems. Due to the computational complexity of these problems, exact optimization techniques of operations research like linear programming or dynamic programming are mostly impractical for large scale software engineering problems. Because of this, researchers and practitioners have used metaheuristic search techniques to find near optimal or good-enough solutions.
Brief history
One of the earliest attempts in applying optimization to a software engineering problem was reported by Miller and Spooner in 1976 in the area of software testing. Xanthakis et al. apply for the first time a search technique to a software engineering problem in 1992. The term SBSE was first used in 2001 by Harman and Jones.
Application areas
Software testing has been one of the major applications of search techniques in software engineering. However, search techniques have been applied to other software engineering activities, for instance: requirements analysis, software design, software development and software maintenance. In his FoSE paper, Harman identifies the current state of SBSE and highlights future trends in this approach to software engineering.