argue that BDUF is poorly adaptable to changing requirements and that BDUF assumes that designers are able to foresee problem areas without extensive prototyping and at least some investment into implementation. For substantial projects, the requirements from users need refinement in light of initial deliverables, and the needs of the business evolve at a pace faster than large projects are completed in - making the Big Design outdated by the time the system is completed. They also assert that there is an overhead to be balanced between the time spent planning and the time that fixing a defect would actually cost. This is sometimes termed analysis paralysis. If the cost of planning is greater than the cost of fixing then time spent planning is wasted. Continuous deployment, automatic updates, and related ideas seek to substantially reduce the cost of defects in production so that they become cheaper to fix at run-time than to plan out at the beginning. In reality, run-time fixes are vastly more costly than design fixes, so it is critical to use Agile methods such as frequent demonstrations and user feedback during development to fix issues during the development cycle. Improving software with the benefit of user feedback is generally less expensive than trying to anticipate and document every aspect of a system with BDUF. Also, in most projects there is a significant lack of comprehensive written (or even well known) requirements. So in BDUF a lot of assumptions are made that later prove to be false but are designed and possibly already coded. Alternatives An alternative approach is Rough Design Up Front (RDUF) in which 'sufficient' design is completed up front to provide a framework on which to build in the design detail as the project progresses. A similar approach has been called Sufficient Design by Joshua Kerievsky: "I'm saying that we need high design quality for stuff that is critical to our products and less design quality for stuff that isn't critical." Advocates of Scrum refer to the concept of Emergent Design: "The difference on a Scrum project is not that intentional design is thrown out, but that it is done (like everything else on a Scrum project) incrementally." See also List of software development philosophies References Software development process