A method for adapting a software product to an environment is provided tat
comprises providing the software product with a first portion of code
including instructions for performing a predetermined function. At least
one aspect of performing the predetermined function is controllable by an
operating parameter value. The operating parameter value, a mutation rate
and a set of probabilistic mutation criteria are stored in a second
portion of code. The method further comprises, responsive to an
occurrence of a predetermined event associated with the environment,
using the mutation rate and the probabilistic mutation criteria to
determine if the operating parameter value should mutate, and changing
the operating parameter value in response to a determination that the
operating parameter value should mutate.