A growing trend has begun in recent years to move software engineering problems from human-based search to machine-based search that balances a number of constraints to achieve optimal or near-optimal solutions. As a result, human effort is moving up the abstraction chain to focus on guiding the automated search, rather than performing the search itself. This emerging software engineering paradigm is known as Search Based Software Engineering (SBSE). It uses computational intelligence techniques, mainly those from the evolutionary computation literature to automate the search for optimal or near-optimal solutions to software engineering problems. The SBSE approach can and has been applied to many problems in software engineering that span the spectrum of activities from requirements to maintenance and reengineering. Already success has been achieved in requirements, refactoring, project planning, testing, maintenance and reverse engineering. However, several challenges have to be addressed to mainly tackle the growing complexity of software systems nowadays in terms of number of objectives, constraints and inputs/outputs.
Most of software engineering problems are multi- and many-objective by nature to find a trade-off between several competing goals. In addition, several software engineering solutions lack robustness due to the dynamic environments of software systems (e.g., requirements changes over time). Furthermore, it is essential to understand the points at which human oversight, intervention, resumption-of-control and decision making should impinge on automation. Human programmers might reject changes made by any automated programming technique. If they feel that they have little understanding or control, there will be a natural reluctance to trust the automated tool. Thus, different levels of automation should be considered when adapting search algorithms to software engineering problems. In this talk, I will give, first, an overview about SBSE then I will focus on some contributions that I proposed, along with my research group and my industrial partners, addressing the above challenges, including: many-objective software re-modularization and interactive dynamic multi-objective optimization for software refactoring. Finally, I will discuss possible new research directions in SBSE.