Most software engineering techniques that deal with software products customization are based on anticipation: The software designer has to foresee, somehow, the future needs for customization so that other programmers can adapt the software product with as little modifications as possible (programmers hide implementation details behind previously defined interfaces, or alternatively, they refine some pre-defined properties). While practical, this approach is unfortunately not completely satisfactory for Enterprise Resource Planning systems (ERPs). These software products have to be customizable for numerous and various local contexts; they cover a very large domain, one that cannot be fully comprehended — hence accurate anticipation is difficult. To solve this problem, an extreme measure is to give the programmers the means to do modifications in place, directly in the source code. This approach trades control for flexibility. Unfortunately, it also makes the customized soft...