Many programming problems are manifest as sets of data values, namely inputs and corresponding outputs. Inductive programming techniques work from such data instances to the implementation without going through a specification. They thus offer the software engineer a means to avoid or rectify specification-induced system errors and perhaps even to circumvent the need for a complete a priori specification, i.e., some system modules may be inductively generated from data where accurate specification proves difficult. Induction-based processing of problem data may be used to check and correct features of a specification. Inductive software development will be particularly germane, if not essential, for complex data-defined problems, or problem modules. These will arise in a data-rich domain and address very complex aspects of the world, such as the human body, complicated manufacturing processes, and complex dynamical situations.
Inductive programming is not, however, trouble-free. There are difficult issues of `understanding' the automatic induction procedures so that implementation performance can be characterised. There are issues of data pre-processing to facilitate optimal application of a given inductive technique and to obtain an implementation with certain desired characteristics.
The aim of this special issue of the Automated Software Engineering journal was to bring together developments in inductive programming that have a direct bearing on software development. Papers were sought on novel uses of such inductive techniques, whether automatic or interactive, for practical software development. See the original Call for Papers for more details.
A personal viewpoint on Inductive Programming by the guest editors was reviewed and added, with an introduction to the accepted papers.