Big design up front
Big design up front (BDUF) is a design maxim that states that a programs design should be completed and perfected before any code is written. BDUF is closely related to the waterfall process.
The main argument for BDUF is that bugs are easier to fix if they are found earlier in the products life cycle. A requirements bug is a lot easier to fix if it is found in the requirements phase than if it is found in the implementation phase. If a bug in the requirements is found during implementation, some code may need to be scrapped. In general, more planning and analysis at the start will save time and costs when it comes to development.
BDUF is widely criticised however, mainly from proponents of agile methods. BDUF does not adapt to changing requirements, and assumes all requirements can be obtained before writing any code. It is often very difficult to get a correct design at such an early stage of development, and future changes in requirements may force a complete redesign, which is very costly if using BDUF. Generally, BDUF is considered outdated, although still widely used.