  We are interested in supporting software evolution caused by changing
requirements and/or environmental settings. For example, users of a system may
require new functionality (changing requirements), or performance enhancements
to cope with growing user population. Specifically, we propose to use goal
models to capture such changes, and exploit reasoning techniques that derive
optimal new specifications for a system whose requirements and/or environment
have changed. Moreover, we are interested in discovering new classes of
evolution requirements, for example, that give preference to evolutions that
minimize implementation effort for the implementation of the evolution. To
address both of these problems, we exploit Constraint Goal Models (CGMs) an
expressive language for modelling goals that comes with scalable solvers that
can solve hybrid constraint and optimization problems using a combination of
Satisfiability Modulo Theories (SMT) and Optimization Modulo Theories (OMT)
solvers. We evaluate our proposal by modeling and reasoning with a goal model
for meeting scheduling.
