This strand of work studies the construction of flexible generic architectures. Flexibility imposes testing and configuration costs, so it is introduced only where it adds significant value. This is mainly directed at changes that occur during the lifetime of a single project as technology changes and requirements are clarified. The goal is to improve the agility of responses to requirements change.