Reformulating software engineering as a search problem
- 1 January 2003
- journal article
- Published by Institution of Engineering and Technology (IET) in IEE Proceedings - Software
- Vol. 150 (3) , 161-175
Abstract
Metaheuristic techniques such as genetic algorithms, simulated annealing and tabu search have found wide application in most areas of engineering. These techniques have also been applied in business, financial and economic modelling. Metaheuristics have been applied to three areas of software engineering: test data generation, module clustering and cost/effort prediction, yet there remain many software engineering problems which have yet to be tackled using metaheuristics. It is surprising that metaheuristics have not been more widely applied to software engineering; many problems in software engineering are characterised by precisely the features which make metaheuristics search applicable. In the paper it is argued that the features which make metaheuristics applicable for engineering and business applications outside software engineering also suggest that there is great potential for the exploitation of metaheuristics within software engineering. The paper briefly reviews the principal metaheuristic search techniques and surveys existing work on the application of metaheuristics to the three software engineering areas of test data generation, module clustering and cost/effort prediction. It also shows how metaheuristic search techniques can be applied to three additional areas of software engineering: maintenance/evolution system integration and requirements scheduling. The software engineering problem areas considered thus span the range of the software development process, from initial planning, cost estimation and requirements analysis through to integration, maintenance and evolution of legacy systems. The aim is to justify the claim that many problems in software engineering can be reformulated as search problems, to which metaheuristic techniques can be applied. The goal of the paper is to stimulate greater interest in metaheuristic search as a tool of optimisation of software engineering problems and to encourage the investigation and exploitation of these technologies in finding near optimal solutions to the complex constraint-based scenarios which arise so frequently in software engineering.Keywords
This publication has 29 references indexed in Scilit:
- Evolutionary test environment for automatic structural testingInformation and Software Technology, 2001
- A validation of the component-based method for software size estimationIEEE Transactions on Software Engineering, 2000
- Using the WinWin spiral model: a case studyComputer, 1998
- Optimizing value and cost in requirements analysisIEEE Software, 1998
- A cost-value approach for prioritizing requirementsIEEE Software, 1997
- Automatic structural testing using genetic algorithmsSoftware Engineering Journal, 1996
- A reverse‐engineering approach to subsystem structure identificationJournal of Software Maintenance: Research and Practice, 1993
- KIDS: a semiautomatic program development systemIEEE Transactions on Software Engineering, 1990
- Program developmentsCommunications of the ACM, 1983
- A Transformation System for Developing Recursive ProgramsJournal of the ACM, 1977