Because of economical, technological and marketing reasons today's software systems are more frequently being built as Software Product Lines (SPLs) where each product implements a different combination of features — increments in program functionality. The effective management and realization of variability — the capacity of software artifacts to vary — is crucial to reap the benefits of SPL practices. Among these benefits are: increased software reuse, faster and easier product customization, and reduced time to market.
An important challenge in Software Product Line Engineering (SPLE) is guaranteeing that all the desired software products (i.e. distinct feature combinations) can in fact be realized from the existing set of artifacts in a SPL. Verifying this guarantee is a non-trivial task because of the typically large number of software products and the inherent complexity of the artifacts involved. This guarantee is even more important when considering variability evolution, whether in effectively managing changes to an existing SPL or in extracting variability out of existing system variants — that may or may not have some common development history — to create a new SPL. Consequently, when this guarantee does not hold, it is vital to provide software designers with sets of fixes or other variability modeling and implementation alternatives to deal with this lack.
Search-Based Software Engineering (SBSE) is an emerging discipline that focuses on the application of search-based optimization techniques to problems in Software Engineering. Among the techniques SBSE relies on are basic search algorithms such as hill climbing or simulated annealing, and evolutionary computation techniques such as genetic algorithms or genetic programming. SBSE techniques permit the elicitation of multiple software designs or module refactoring that can be evaluated and assessed using different software quality metrics as fitness metrics. Additionally, such techniques are generic, robust and scalable making them suitable for addressing the above challenges in variability management. The main goals of the project are to: perform a comprehensive review and analysis of SBSE techniques to identify the possible alternatives for tackling the identified SPL development problems and characterize their pros, cons and trade-offs involved; implement adequate tooling support that facilitates the application of the identified SBSE techniques; and conduct an assessment of the selected SBSE techniques with several cases studies of distinct sizes and application domains.