Information Technology Reference
In-Depth Information
7.2
Co Evolution
In Co-Evolutionary Computation, two or more populations of solutions evolve
simultaneously with the fitness of each depending upon the current population
of the other. Adamopoulos et al. [2] were the first to suggest the application of
co-evolution to an SBSE problem, using it to evolve sets of mutants and sets of
test cases, where the test cases act as predators and the mutants as their prey.
Arcuri and Yao [10] use co-evolution to evolve programs and their test data from
specifications using co-evolution.
Arcuri and Yao [11] also developed a co-evolutionary model of bug fixing, in
which one population essentially seeks out patches that are able to pass test
cases, while test cases can be produced from an oracle in an attempt to find the
shortcomings of a current population of proposed patches. In this way the patch
is the prey, while the test cases, once again, act as predators. The approach
assumes the existence of a specification to act the oracle.
Many aspects of Software Engineering problems lend themselves to a co-
evolutionary model of optimisation because software systems are complex and
rich in potential populations that could be productively co-evolved (using both
competitive and co-operative co-evolution). For example: components, agents,
stakeholder behaviour models, designs, cognitive models, requirements, test cases,
use cases and management plans are all important aspects of software systems
for which optimisation is an important concern. Though all of these may not
occur in the same system, they are all the subject of change. If a suitable fitness
function be found, the SBSE can be used to co-evolve solutions.
Where two such populations are already being evolved in isolation using SBSE,
but participate in the same overall software system, it would seem a logical 'next
step', to seek to evolve these populations together; the fitness of one is likely to
have an impact on the fitness of another, so evolution in isolation may not be
capable of locating the best solutions.
7.3
SBSE as Decision Support
SBSE has been most widely used to find solutions to complex and demanding
software engineering problems, such as sets of test data that meet test adequacy
goals or sequences of transformations that refactor a program or modularisation
boundaries that best balance the trade off between cohesion and coupling. How-
ever, in many other situations it is not the actual solutions found that are the
most interesting nor the most important aspects of SBSE.
Rather, the value of the approach lies in the insight that is gained through the
analysis inherent in the automated search process and the way in which its results
capture properties of the structure of software engineering solutions. SBSE can
be applied to situations in which the human will decide on the solution to be
adopted, but the search process can provide insight to help guide the decision
maker.
This insight agenda, in which SBSE is used to gain insights and to provide
decision support to the software engineering decision maker has found natural
Search WWH ::




Custom Search