Content deleted Content added
Citation bot (talk | contribs) m Removed accessdate with no specified URL. Removed parameters. | You can use this bot yourself. Report bugs here. | User-activated. |
Citation bot (talk | contribs) Altered doi-broken-date. | Use this bot. Report bugs. | #UCB_CommandLine |
||
(49 intermediate revisions by 28 users not shown) | |||
Line 1:
{{Short description|Application of metaheuristic search techniques to software engineering}}
{{Use dmy dates|date=
'''Search-based software engineering''' ('''SBSE''') applies [[metaheuristic]] search techniques such as [[genetic algorithms]], [[simulated annealing]] and [[tabu search]] to [[software engineering]] problems. Many activities in [[software engineering]] can be stated as [[Optimization (mathematics)|optimization]] problems. [[Optimization (mathematics)|Optimization]] techniques of [[operations research]] such as [[linear programming]] or [[dynamic programming]] are often impractical for large scale [[software engineering]] problems because of their [[Computational complexity theory|computational complexity]] or their assumptions on the problem structure. Researchers and practitioners use [[metaheuristic]] search techniques, which impose little assumptions on the problem structure, to find near-optimal or "good-enough" solutions.<ref>{{Cite journal |last1=Mohan |first1=M. |last2=Greer |first2=D. |date=2019-08-01 |title=Using a many-objective approach to investigate automated refactoring |url=https://www.sciencedirect.com/science/article/pii/S0950584919300916 |journal=Information and Software Technology |volume=112 |pages=83–101 |doi=10.1016/j.infsof.2019.04.009 |issn=0950-5849}}</ref>
SBSE problems can be divided into two types:
Line 14:
| first = Mark
| title = Why Source Code Analysis and Manipulation Will Always be Important
|
| year = 2010
}}</ref>
==Definition==
SBSE converts a software engineering problem into a computational search problem that can be tackled with a [[metaheuristic]]. This involves defining a search space, or the set of possible solutions. This space is typically too large to be explored exhaustively, suggesting a [[metaheuristic]] approach. A metric
{{Cite conference
| doi = 10.1109/METRIC.2004.1357891
Line 28:
|author2=John A. Clark
| title = Metrics are fitness functions too
|
| year = 2004
}}</ref> (also called a fitness function, cost function, objective function or quality measure) is then used to measure the quality of potential solutions. Many software engineering problems can be reformulated as a computational search problem.<ref>{{Cite journal
Line 61:
| journal = [[IEE Proceedings - Software]]
| year = 2003
| doi-broken-date = 12 July 2025
| citeseerx = 10.1.1.144.3059
}}</ref>
The term "[[search-based application]]", in contrast, refers to using [[search
==Brief history==
Line 74 ⟶ 75:
| issue = 3
| pages = 223–226
|
|
| last2 = Spooner
| first2 = David L.
Line 81 ⟶ 82:
| journal = IEEE Transactions on Software Engineering
| year = 1976
| s2cid = 18875300
}}</ref> In 1992, S. Xanthakis and his colleagues applied a search technique to a [[software engineering]] problem for the first time.<ref>S. Xanthakis, C. Ellis, C. Skourlas, A. Le Gall, S. Katsikas and K. Karapoulios, "Application of genetic algorithms to software testing," in ''Proceedings of the 5th International Conference on Software Engineering and its Applications'', Toulouse, France, 1992, pp. 625–636</ref> The term SBSE was first used in 2001 by [[Mark Harman (computer scientist)|Harman]] and Jones.<ref>
{{Cite journal
Line 88 ⟶ 90:
| issue = 14
| pages = 833–839
|
|
| last2 = Jones
| first2 = Bryan F.
Line 96 ⟶ 98:
| date = 2001-12-15
| citeseerx = 10.1.1.143.9716
}}</ref> The research community grew to include more than 800 authors by 2013, spanning approximately 270 institutions in 40 countries.<ref>{{
==Application areas==
Line 113 ⟶ 115:
| year = 2004
| citeseerx = 10.1.1.122.33
| s2cid = 17408871
}}</ref> Search techniques have been applied to other [[software engineering]] activities, for instance, [[requirements analysis]],<ref>
{{Cite journal
Line 120 ⟶ 123:
| issue = 4
| pages = 243–253
|
|
| last2 = Ruhe
| first2 = Guenther
Line 128 ⟶ 131:
| date = 2004-03-15
| citeseerx = 10.1.1.195.321
| s2cid = 710923
}}</ref><ref>{{Cite conference
| doi = 10.1109/SBES.2009.23
| conference = XXIII Brazilian Symposium on Software Engineering, 2009. SBES '09
| pages = 207–215
|
|
| last2 = Souza
| first2 = Jerffeson
Line 143 ⟶ 147:
| first5 = Geraldo R.
| title = A New Approach to the Software Release Planning
|
| year = 2009
}}</ref> [[software design|design]],<ref>
Line 152 ⟶ 156:
| issue = 14
| pages = 891–904
|
|
| last2 = Jacob
| first2 = Jeremy L.
Line 160 ⟶ 164:
| date = 2001-12-15
| citeseerx = 10.1.1.102.6016
}}</ref><ref>{{Cite journal|last=Räihä|first=Outi|date=2010-11-01|title=A survey on search-based software design|journal=Computer Science Review|volume=4|issue=4|pages=203–249|doi=10.1016/j.cosrev.2010.06.001|issn=1574-0137|url=https://trepo.tuni.fi/bitstream/10024/65330/1/D-2009-1.pdf|citeseerx=10.1.1.188.9036}}</ref> [[Code refactoring|refactoring]],<ref>{{Cite journal|last1=Mariani|first1=Thainá|last2=Vergilio|first2=Silvia Regina|date=2017-03-01|title=A systematic review on search-based refactoring|journal=Information and Software Technology|volume=83|pages=14–34|doi=10.1016/j.infsof.2016.11.009|issn=0950-5849}}</ref> [[software development|development]],<ref>
{{Cite journal
| doi = 10.1016/j.ins.2006.12.020
Line 167 ⟶ 171:
| issue = 11
| pages = 2380–2401
|
|
| last2 = Chicano
| first2 = J. Francisco
Line 175 ⟶ 179:
| date = 2007-06-01
| hdl = 10630/8145
| hdl-access = free
}}</ref> and [[software maintenance|maintenance]].<ref>
{{Cite conference
Line 180 ⟶ 185:
| conference = Proceedings of the 21st IEEE International Conference on Software Maintenance, 2005. ICSM'05
| pages = 240–249
|
|
| last2 = Di Penta
| first2 = Massimiliano
Line 187 ⟶ 192:
| first3 = Mark
| title = Search-based techniques applied to optimization of project planning for a massive maintenance project
|
| year = 2005
| citeseerx = 10.1.1.63.8069
}}</ref>
Line 194 ⟶ 200:
[[Requirements engineering]] is the process by which the needs of a software's users and environment are determined and managed. Search-based methods have been used for requirements selection and optimisation with the goal of finding the best possible subset of requirements that matches user requests amid constraints such as limited resources and interdependencies between requirements. This problem is often tackled as a [[MCDM|multiple-criteria decision-making]] problem and, generally involves presenting the decision maker with a set of good compromises between cost and user satisfaction as well as the requirements risk.<ref>
{{Cite thesis
| type =
| publisher = University of London
| last = Zhang
Line 205 ⟶ 211:
Y. Zhang and M. Harman and S. L. Lim, "[http://www.cs.ucl.ac.uk/fileadmin/UCL-CS/images/Research_Student_Information/RN_11_12.pdf Search Based Optimization of Requirements Interaction Management]," Department of Computer Science, University College London, Research Note RN/11/12, 2011.
</ref>
<ref>{{cite book|last1=Li|first1=Lingbo|last2=Harman|first2=Mark|last3=Letier|first3=Emmanuel|last4=Zhang|first4=Yuanyuan|title
===Debugging and maintenance===
Line 214 ⟶ 220:
| conference = 2012 34th International Conference on Software Engineering (ICSE)
| pages = 3–13
|
|
| last2 = Dewey-Vogt
| first2 = Michael
Line 223 ⟶ 229:
| first4 = Westley
| title = A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each
|
| year = 2012
}}</ref>
Line 231 ⟶ 237:
| conference = IEEE Congress on Evolutionary Computation, 2008. CEC 2008. (IEEE World Congress on Computational Intelligence)
| pages = 162–168
|
|
| last2 = Yao
| first2 = Xin
| title = A novel co-evolutionary approach to automatic software bug fixing
|
| year = 2008
| citeseerx = 10.1.1.159.7991
}}</ref>
===Testing===
Search-based software engineering has been applied to software testing, including the automatic generation of test cases (test data), test case minimization and test case prioritization.<ref>{{Cite book|last1=Harman|first1=Mark|last2=Jia|first2=Yue|last3=Zhang|first3=Yuanyuan|title=2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST) |chapter=Achievements, Open Problems and Challenges for Search Based Software Testing |date=April 2015|___location=Graz, Austria|publisher=IEEE|pages=1–12|doi=10.1109/ICST.2015.7102580|citeseerx=10.1.1.686.7418|isbn=978-1-4799-7125-1|s2cid=15272060}}</ref> [[Regression testing]] has also received some attention.
===Optimizing software===
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.<ref>{{cite journal |last1=Memeti |first1=Suejb |last2=Pllana |first2=Sabri |last3=Binotto |first3=Alecio |last4=Kolodziej |first4=Joanna |last5=Brandic |first5=Ivona |author5-link= Ivona Brandić |title=Using meta-heuristics and machine learning for software optimization of parallel computing systems: a systematic literature review |journal=Computing |volume=101 |issue=8 |date=2018 |pages=
{{Cite journal
|
|
| last2 = Harman
| first2 = Mark
Line 254 ⟶ 261:
| url = http://www0.cs.ucl.ac.uk/staff/w.langdon/ftp/papers/Langdon_2013_ieeeTEC.pdf
}}</ref>
A recent work by Basios et al. shows that by optimising the data structure, Google Guava found a 9% improvement
===Project management===
Line 263 ⟶ 270:
| isbn = 978-1-4503-1177-9
| pages = 1221–1228
|
|
| last2 = Sudholt
| first2 = Dirk
Line 270 ⟶ 277:
| first3 = Xin
| title = Evolutionary algorithms for the project scheduling problem: runtime analysis and improved design
|
| ___location = New York, NY, USA
| series = GECCO '12
Line 277 ⟶ 284:
==Tools==
Tools available for SBSE include
{{cite
|last1 = Mayo
|first1 = M.
|last2 = Spacey
|first2 = S.
|title = Search Based Software Engineering
|
|series = Lecture Notes in Computer Science
|volume = 8084
|pages = 158–171
|year = 2013
|doi = 10.1007/978-3-642-39742-4_13
|chapter-url= https://researchcommons.waikato.ac.nz/bitstream/10289/7763/1/SBSE13.pdf
}}</ref> and [[EvoSuite]] <ref>(http://www.evosuite.org/)</ref> and [https://coverage.readthedocs.io/ Coverage], a code coverage measurement tool for Python<ref>{{Citation|last=others|first=Ned Batchelder and 100|title=coverage: Code coverage measurement for Python|url=https://bitbucket.org/ned/coveragepy|accessdate=2018-03-14}}▼
|hdl= 10289/7763
|isbn = 978-3-642-39741-7
|hdl-access= free
▲}}</ref>
</ref>
Line 302 ⟶ 313:
==Industry acceptance==
As a relatively new area of research, SBSE does not yet experience broad industry acceptance.
Successful applications of SBSE in the industry can mostly be found within software testing, where the capability to automatically generate random test inputs for uncovering bugs at a big scale is attractive to companies. In 2017, [[Facebook]] acquired the software startup Majicke Limited that developed Sapienz, a search-based bug finding app.<ref>{{cite web
|url = https://venturebeat.com/2018/12/30/sapienz-facebooks-push-to-automate-software-testing/
|title = Sapienz: Facebook's push to automate software testing
|date = 30 December 2018
|website = VentureBeat
|access-date = 29 September 2020
}}</ref>
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.<ref>
{{cite web
|url = http://shape-of-code.coding-guidelines.com/2013/10/18/programming-using-genetic-algorithms-isnt-that-what-humans-already-do/
Line 310 ⟶ 331:
|date = 18 October 2013
|website = The Shape of Code
|
}}
</ref> 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.<ref>
Line 319 ⟶ 340:
| issue = 3
| pages = 421–443
|
|
| last2 = Forrest
| first2 = Stephanie
Line 329 ⟶ 350:
| date = 2013-09-01
| citeseerx = 10.1.1.371.5784
| s2cid = 16435531
}}
</ref>
Line 335 ⟶ 357:
{{Cite conference
| publisher = IEEE Press
| conference = First International Workshop on Combining Modelling with Search-Based Software Engineering, First International Workshop on Combining Modelling with Search-Based Software Engineering
| pages = 49–50
| last = Simons
Line 341 ⟶ 363:
| title = Whither (away) software engineers in SBSE?
| ___location = San Francisco, USA
|
| date = May 2013
| url = http://eprints.uwe.ac.uk/19938/
Line 347 ⟶ 369:
==See also==
{{Portal|Software Testing}}▼
*[[Program analysis (computer science)]]
*[[Dynamic program analysis]]
Line 363 ⟶ 385:
*[https://scholar.google.co.uk/citations?view_op=search_authors&hl=en&mauthors=label:sbse Google Scholar page on Search-based software engineering]
[[Category:Computer-related introductions in 2001]]
[[Category:Software testing]]
[[Category:Search algorithms]]
[[Category:Optimization algorithms and methods]]
[[Category:
[[Category:Software quality]]
[[Category:Program analysis]]
|