Software evolution is an effort-prone activity, and requires developers to make complex and difficult decisions. This entails the development of automated approaches to support various software evolution-related tasks, for example aimed at suggesting refactoring or remodularization actions. Finding a solution to these problems is intrinsically NP-hard, and exhaustive approaches are not viable due to the size and complexity of many software projects. Therefore, during recent years, several software-evolution problems have been formulated as optimization problems, and resolved with meta-heuristics. This chapter overviews how search-based optimization techniques can support software engineers in a number of software evolution tasks. For each task, we illustrate how the problem can be encoded as a search-based optimization problem, and how meta-heuristics can be used to solve it. Where possible, we refer to some tools that can be used to deal with such tasks.
CITATION STYLE
Bavota, G., Penta, M. D., & Oliveto, R. (2014). Search based software maintenance: Methods and tools. In Evolving Software Systems (pp. 103–137). Springer Berlin Heidelberg. https://doi.org/10.1007/978-3-642-45398-4_4
Mendeley helps you to discover research relevant for your work.