Big Design Up Front
Encyclopedia
Big Design Up Front is a term for any software development
approach in which the program's design is to be completed and perfected before that program's implementation is started. It is often associated with the waterfall model
of software development.
than when that same bug is found and must be fixed later. That is, it is much easier to fix a requirements bug in the requirements phase than to fix that same bug in the implementation phase, as to fix a requirements bug in the implementation phase requires scrapping at least some implementation and design work which has already been completed.
Joel Spolsky
, a popular online commentator on software development, has argued strongly in favor of Big Design Up Front:
However, some argue that what Joel has called Big Design Up Front doesn't resemble the BDUF criticized by advocates of XP
and other agile software development methodologies.
) 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.
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, Fault Tolerance, Lisp's Read-eval-print loop
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.
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.
Software development methodology
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...
approach in which the program's design is to be completed and perfected before that program's implementation is started. It is often associated with the waterfall model
Waterfall model
The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...
of software development.
Arguments for Big Design Up Front
Proponents of BDUF argue that time spent in designing is a worthwhile investment, and reference numerous studies which have concluded that less time and effort is spent fixing a bug in the early stages of a software products lifecycleSoftware development process
A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...
than when that same bug is found and must be fixed later. That is, it is much easier to fix a requirements bug in the requirements phase than to fix that same bug in the implementation phase, as to fix a requirements bug in the implementation phase requires scrapping at least some implementation and design work which has already been completed.
Joel Spolsky
Joel Spolsky
Avram Joel Spolsky is a software engineer and writer. He is the author of Joel on Software, a blog on software development. He was a Program Manager on the Microsoft Excel team between 1991 and 1994. He later founded Fog Creek Software in 2000 and launched the Joel on Software blog...
, a popular online commentator on software development, has argued strongly in favor of Big Design Up Front:
"Many times, thinking things out in advance saved us serious development headaches later on. ... [on making a particular specification change] ... Making this change in the spec took an hour or two. If we had made this change in code, it would have added weeks to the schedule. I can’t tell you how strongly I believe in Big Design Up Front, which the proponents of Extreme Programming consider anathema. I have consistently saved time and made better products by using BDUF and I’m proud to use it, no matter what the XP fanatics claim. They’re just wrong on this point and I can’t be any clearer than that."
However, some argue that what Joel has called Big Design Up Front doesn't resemble the BDUF criticized by advocates of XP
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...
and other agile software development methodologies.
Arguments against Big Design Up Front
Critics (notably those who practice agile software developmentAgile software development
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...
) 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.
They also assert that there is an overhead
Overhead (business)
In business, overhead or overhead expense refers to an ongoing expense of operating a business...
to be balanced between the time spent planning and the time that fixing a defect would actually cost. This is sometimes termed analysis paralysis
Analysis paralysis
The term "analysis paralysis" or "paralysis of analysis" refers to over-analyzing a situation, so that a decision or action is never taken, in effect paralyzing the outcome. A decision can be treated as over-complicated, with too many detailed options, so that a choice is never made, rather than...
.
If the cost of planning is greater than the cost of fixing then time spent planning is wasted.
Continuous Deployment, Automatic Updates, Fault Tolerance, Lisp's Read-eval-print loop
Read-eval-print loop
A read–eval–print loop , also known as an interactive toplevel, is a simple, interactive computer programming environment. The term is most usually used to refer to a Lisp interactive environment, but can be applied to command line shells and similar environments for F#, Smalltalk, Standard ML,...
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.
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.
See also
- List of software development philosophies
- Waterfall modelWaterfall modelThe waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...
- Agile software developmentAgile software developmentAgile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...