Researchers and practitioners use metaheuristic search techniques, which impose little assumptions on the problem structure, to find near-optimal or "good-enough" solutions.
[9] Search techniques have been applied to other software engineering activities, for instance, requirements analysis,[10][11] design,[12][13] refactoring,[14] development,[15] and maintenance.
The use of SBSE in program optimization, or modifying a piece of software to make it more efficient in terms of speed and resource use, has been the object of successful research.
[30] A number of methods and techniques are available, including: As a relatively new area of research, SBSE does not yet experience broad industry acceptance.
In 2017, Facebook acquired the software startup Majicke Limited that developed Sapienz, a search-based bug finding app.
[32] In other application scenarios, software engineers may be reluctant to adopt tools over which they have little control or that generate solutions that are unlike those that humans produce.
[33] In the context of SBSE use in fixing or improving programs, developers need to be confident that any automatically produced modification does not generate unexpected behavior outside the scope of a system's requirements and testing environment.
Considering that fully automated programming has yet to be achieved, a desirable property of such modifications would be that they need to be easily understood by humans to support maintenance activities.