This approach is similar to the software engineering practice of specifying
constraints as late as possible in the development process. The further into the
process a project gets before defining a
constraint, the more flexible the implemented solution will be.