Abstract
Software maintenance is, together with testing, one of the most critical and effort-prone activities in software development. Surveys conducted in the past [4] have estimated that up to 80% of the overall software development cost is due to maintenance activities. For such a reason, automated techniques aimed at supporting developers in their daunting tasks are highly appealing. Problems developers often face off include understanding undocumented software, improving the software design and source code structure to ease future maintenance tasks, and producing patches to fix bugs.
Finding a solution for the aforementioned problems is intrinsically NP-Hard, and therefore such problems are not tractable with conventional algorithmic techniques; this is particularly true in presence of very complex and large software systems. For this reason, search-based optimization techniques have been—and currently are—successfully applied to deal with all the aforementioned problems. Noticeable examples of successful applications of search-based software engineering (SBSE) to software maintenance include software modularization [2], software refactoring [3], or automated bug fixing [1].
Despite the noticeable achievements, there are still crucial challenges researchers have to face-off. First, software development is still an extremely human-centric activity, in which many decisions concerning design or implementation are really triggered by personal experience, that is unlikely to be encoded in heuristics of automated tools. Automatically-generated solutions to maintenance problems tend very often to be meaningless and difficult to be applied in practice. For this reason, researchers should focus their effort in developing optimization algorithms—for example Interactive Genetic Algorithms [5]—where human evaluations (partially) drive the production of problem solutions. This, however, requires to deal with difficulties occurring when involving humans in the optimization process: human decisions may be inconsistent and, in general, the process tend to be fairly expensive in terms of required effort.
A further challenge where SBSE meets software maintenance concerns systems which necessitate rapid reconfigurations at run-time, e.g., highly dynamic service-oriented architectures, or autonomic systems. If, on the one hand, such reconfigurations imply complex decisions where the space of possible choices is high, on the other hand such decisions have to be taken in a very short time. This implies a careful choice and performance assessment of the search-based optimization techniques adopted, aspect that is often not particularly considered when search-based optimization techniques are applied offline, e.g. for test data generation or for software modularization.
Last, but not least, many modern software systems—open source and not only—are part of large and complex software ecosystems where the evolution of a component might impact others, e.g., by creating incompatibilities from a technical or even legal point of view. Also in this case, SBSE has a great potential to support the explore such large spaces of software configurations.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Le Goues, C., Nguyen, T., Forrest, S., Weimer, W.: Genprog: A generic method for automatic software repair. IEEE Trans. Software Eng. 38(1), 54–72 (2012)
Mitchell, B.S., Mancoridis, S.: On the automatic modularization of software systems using the bunch tool. IEEE Trans. Software Eng. 32(3), 193–208 (2006)
O’Keeffe, M.K., Cinnéide, M.Ó.: Search-based refactoring for software maintenance. Journal of Systems and Software 81(4), 502–516 (2008)
Standish: The scope of software development project failures. Tech. rep., The Standish Group, Dennis, MA (1995), http://www.standishgroup.com/chaos.html
Takagi, H.: Interactive evolutionary computation: Fusion of the capacities of ec optimization and human evaluation. Proceedings of the IEEE 89(9), 1275–1296 (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Di Penta, M. (2012). SBSE Meets Software Maintenance: Achievements and Open Problems. In: Fraser, G., Teixeira de Souza, J. (eds) Search Based Software Engineering. SSBSE 2012. Lecture Notes in Computer Science, vol 7515. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-33119-0_2
Download citation
DOI: https://doi.org/10.1007/978-3-642-33119-0_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-33118-3
Online ISBN: 978-3-642-33119-0
eBook Packages: Computer ScienceComputer Science (R0)