Many development projects fail to deliver the desired objectives because project managers/architects do not consider operational and maintenance (post-production) requirements when they design a system. They complain about changing requirements because they are trying to “hard code” the requirements into the system. If they spent some time in maintenance, they would realize there will always be change requirements and the best solution is to build configurable systems where business decisions are tablized or parameterized. Trying to force the business to anticipate and specify all possible decisions and functions early in the project is impossible.
Successful project managers realize that future requirements cannot be anticipated or defined and that building flexiblity, configurability, and maintainability into a system is the best way to ensure long-term value.