A constraint in the context of generalization can be defined as a design specification to which the solutions to a generalization
problem should adhere (Weibel and Dutton 1998).
A constraint is meant to limit the number of possible solutions
without binding it to a particular action.
This concept reflects the idea that more than one acceptable solution may exist to a given generalization problem.
It is therefore well suited for developing flexible systems.
Constraints originate from specific map controls applicable to a generalization problem.
They are usually specified as something to maintain or to avoid.