Self-adaptation is imposing as a key characteristic
of many modern software systems to tackle their complexity
and cope with the many environments in which they can
operate. Self-adaptation is a requirement per-se, but it also
impacts the other (conventional) requirements of the system;
all these new and old requirements must be elicited and
represented in a coherent and homogenous way. This paper
presents FLAGS, an innovative goal model that generalizes
the KAOS model, adds adaptive goals to embed adaptation
countermeasures, and fosters self-adaptation by considering
requirements as live, runtime entities. FLAGS also distinguishes
between crisp goals, whose satisfaction is boolean, and fuzzy
goals, whose satisfaction is represented through fuzzy constraints.
Adaptation countermeasures are triggered by violated
goals and the goal model is modified accordingly to maintain a
coherent view of the system and enforce adaptation directives
on the running system. The main elements of the approach are
demonstrated through an example application.