FACTOID # 18: Alaska spends more money per capita on elementary and secondary education than any other state.
 
 Home   Encyclopedia   Statistics   States A-Z   Flags   Maps   FAQ   About 
   
 
WHAT'S NEW
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Waterfall model
Software development process
Activities and steps
Requirements · Architecture
Design · Implementation
Testing · Deployment
Models
Agile · Cleanroom · Iterative · RAD
RUP · Spiral · Waterfall · XP · Scrum
Supporting disciplines
Configuration management
Documentation
Quality assurance (SQA)
Project management
User experience design
This box: view  talk  edit

The waterfall model is a sequential software development model (a process for the creation of software) in which development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance. The origin of the term "waterfall" is often cited to be an article published in 1970 by Winston W. Royce (1929–1995),[1] although Royce did not use the term "waterfall" in this article. Ironically, Royce was presenting this model as an example of a flawed, non-working model (Royce 1970). This does not cite any references or sources. ... In sytems and software engineering, requirements analysis encompasses those tasks that go into determining the requirements of a new or altered system, taking account of the possibly conflicting requirements of the various stakeholders, such as users. ... The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. ... Software design is the process that starts from a problem for which there is currently no acceptable (software) solution, and ends when such a solution has been created. ... Programming redirects here. ... Software testing is the process used to assess the quality of computer software. ... Software deployment is all of the activities that make a software system available for use. ... Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. ... The Cleanroom Software Engineering process is a software development process intended to produce software with a certifiable level of reliability. ... Iterative and Incremental development is a software development process developed in response to the weaknesses of the more traditional waterfall model. ... Rapid application development (RAD), is a software development process developed initially by James Martin in the 1980s. ... The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. ... The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... For other uses, see Scrum. ... Software Configuration Management (SCM) is part of configuration management (CM). ... Software documentation or source code documentation is written text that accompanies computer software. ... Software Quality Assurance (SQA) consists of a means of monitoring the software engineering processes and methods used to ensure quality. ... Project Management is the discipline of organizing and managing resources (e. ... User experience design is a subset of the field of experience design which pertains to the creation of the architecture and interaction models which impact a users perception of a device or system. ... For other senses of this word, see sequence (disambiguation). ... A software development process is a process used to develop computer software. ... For other uses, see Waterfall (disambiguation). ... In sytems and software engineering, requirements analysis encompasses those tasks that go into determining the requirements of a new or altered system, taking account of the possibly conflicting requirements of the various stakeholders, such as users. ... Software design is the process that starts from a problem for which there is currently no acceptable (software) solution, and ends when such a solution has been created. ... Look up Implementation in Wiktionary, the free dictionary. ... Software testing is the process used to assess the quality of computer software. ... Enterprise Application Integration (EAI) is defined as the uses of software and computer systems architectural principles to integrate a set of enterprise computer applications. ... In software engineering, software maintenance is the process of enhancing and optimizing deployed software (software release), as well as remedying defects. ... Year 1970 (MCMLXX) was a common year starting on Thursday (link shows full calendar) of the Gregorian calendar. ...

Contents

History of the waterfall model

In 1970 Royce proposed what is presently referred to as the waterfall model as an initial concept, a model which he argued was flawed (Royce 1970). His paper explored how the initial model could be developed into an iterative model, with feedback from each phase influencing subsequent phases. It is only the initial model that received notice; his own criticism of this initial model has been largely ignored. The phrase "waterfall model" quickly came to refer not to Royce's final, iterative design, but rather to his purely sequentially ordered model. This article uses the popular meaning of the phrase "waterfall model". For an iterative model similar to Royce's final vision, see the spiral model. The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. ...


Despite Royce's intentions for the waterfall model to be modified into an iterative model, use of the waterfall model as a purely sequential process is still popular, and, for some, the phrase "waterfall model" has since come to refer to any approach to software creation which is seen as inflexible and non-iterative. Those who use the phrase "waterfall model" pejoratively usually see the waterfall model as naive and unsuitable for an iterative process.


The model

The unmodified "waterfall model". Progress flows from the top to the bottom, like a waterfall.
The unmodified "waterfall model". Progress flows from the top to the bottom, like a waterfall.

In Royce's original waterfall model, the following phases are followed in order: Image File history File links Waterfall_model. ... Image File history File links Waterfall_model. ...

  1. Requirements specification (AKA Verification)
  2. Design
  3. Construction (AKA implementation or coding)
  4. Integration
  5. Testing and debugging (AKA validation)
  6. Installation
  7. Maintenance

To follow the waterfall model, one proceeds from one phase to the next in a purely sequential manner. For example, one first completes requirements specification, which are set in stone. When the requirements are fully completed, one proceeds to design. The software in question is designed and a blueprint is drawn for implementers (coders) to follow — this design should be a plan for implementing the requirements given. When the design is fully completed, an implementation of that design is made by coders. Towards the later stages of this implementation phase, disparate software components produced by different teams are integrated. After the implementation and integration phases are complete, the software product is tested and debugged; any faults introduced in earlier phases are removed here. Then the software product is installed, and later maintained to introduce new functionality and remove bugs. A software requirements specification (SRS) is a complete description of the behavior of the system to be developed. ... Software design is the process that starts from a problem for which there is currently no acceptable (software) solution, and ends when such a solution has been created. ... Look up Implementation in Wiktionary, the free dictionary. ... Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected. ... // Installation (or setup) of a program (including drivers) is the act and the effect of putting the program in a computer system so that it can be executed. ... In software engineering, software maintenance is the process of enhancing and optimizing deployed software (software release), as well as remedying defects. ...


Thus the waterfall model maintains that one should move to a phase only when its preceding phase is completed and perfected. Phases of development in the waterfall model are discrete, and there is no jumping back and forth or overlap between them.


However, there are various modified waterfall models (including Royce's final model) that may include slight or major variations upon this process. The waterfall model is a sequential software development model (a process for the creation of software) in which development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance. ...


Usage

The Waterfall model is widely used by such large software development houses as those employed by the U.S. Department of Defense and NASA, and for many large government projects (see "the standard waterfall model" on the Internet Archive). Those who use such methods do not always formally distinguish between the pure waterfall model and the various modified waterfall models, so it can be difficult to discern exactly which models are being used and to what extent. The United States Department of Defense (DOD or DoD) is the federal department charged with coordinating and supervising all agencies and functions of the government relating directly to national security and the military. ... For other uses, see NASA (disambiguation). ... Internet Archive headquarters is in the Presidio, a former US military base in San Francisco. ...


Arguments for the Waterfall Model

Time spent early on in software production can lead to greater economy later on in the software lifecycle; that is, it has been shown many times that a bug found in the early stages of the production lifecycle (such as requirements specification or design) is cheaper, in terms of money, effort and time, to fix than the same bug found later on in the process. ([McConnell 1996], p. 72, estimates that "a requirements defect that is left undetected until construction or maintenance will cost 50 to 200 times as much to fix as it would have cost to fix at requirements time.") To take an extreme example, if a program design turns out to be impossible to implement, it is easier to fix the design at the design stage than to realize months later, when program components are being integrated, that all the work done so far has to be scrapped because of a broken design.


This is the central idea behind Big Design Up Front (BDUF) and the waterfall model - time spent early on making sure that requirements and design are absolutely correct will save you much time and effort later. Thus, the thinking of those who follow the waterfall process goes, one should make sure that each phase is 100% complete and absolutely correct before proceeding to the next phase of program creation. Program requirements should be set in stone before design is started (otherwise work put into a design based on incorrect requirements is wasted); the program's design should be perfect before people begin work on implementing the design (otherwise they are implementing the wrong design and their work is wasted), etc. Big Design Up Front (BDUF) is the (often criticized) idea in software development that a programs design should be completed and perfected before that programs implementation is started. ...


A further argument for the waterfall model is that it places emphasis on documentation (such as requirements documents and design documents) as well as source code. In less designed and documented methodologies, should team members leave, much knowledge is lost and may be difficult for a project to recover from. Should a fully working design document be present (as is the intent of Big Design Up Front and the waterfall model) new team members or even entirely new teams should be able to familiarize themselves by reading the documents. Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...


As well as the above, some prefer the waterfall model for its simple and arguably more disciplined approach. Rather than what the waterfall adherent sees as chaos, the waterfall model provides a structured approach; the model itself progresses linearly through discrete, easily understandable and explainable phases and thus is easy to understand; it also provides easily markable milestones in the development process. It is perhaps for this reason that the waterfall model is used as a beginning example of a development model in many software engineering texts and courses.


It is argued that the waterfall model and Big Design Up Front in general can be suited to software projects which are stable (especially those projects with unchanging requirements, such as with shrink wrap software) and where it is possible and likely that designers will be able to fully predict problem areas of the system and produce a correct design before implementation is started. The waterfall model also requires that implementers follow the well made, complete design accurately, ensuring that the integration of the system proceeds smoothly.


Criticism of the Waterfall Model

The waterfall model is argued by many to be a bad idea in practice, mainly because of their belief that it is impossible, for any non-trivial project, to get one phase of a software product's lifecycle perfected before moving on to the next phases and learning from them. For example, clients may not be aware of exactly what requirements they want before they see a working prototype and can comment upon it; they may change their requirements constantly, and program designers and implementers may have little control over this. If clients change their requirements after a design is finished, that design must be modified to accommodate the new requirements, invalidating quite a good deal of effort if overly large amounts of time have been invested into Big Design Up Front. Designers may not be aware of future implementation difficulties when writing a design for an unimplemented software product. That is, it may become clear in the implementation phase that a particular area of program functionality is extraordinarily difficult to implement. If this is the case, it is better to revise the design than to persist in using a design that was made based on faulty predictions and that does not account for the newly discovered problem areas.


Steve McConnell in Code Complete (a book which criticizes the widespread use of the waterfall model) refers to design as a "wicked problem" — a problem whose requirements and limitations cannot be entirely known before completion. The implication of this is that it is impossible to perfect one phase of software development, thus it is impossible if using the waterfall model to move on to the next phase. Code Complete (ISBN 1556154844) is a 1993 software development book by Steve McConnell urging developers to get past code and fix programming and the big design up front waterfall model. ... The concept of wicked problems was originally proposed by H. J. Rittel (a pioneering theorist of design and planning, and late professor at the University of California, Berkeley) and M. Webber in a seminal treatise for social planning. ...


David Parnas, in "A Rational Design Process: How and Why to Fake It", writes:[2]

“Many of the [system's] details only become known to us as we progress in the [system's] implementation. Some of the things that we learn invalidate our design and we must backtrack.”

The idea behind the waterfall model may be "measure twice; cut once", and those opposed to the waterfall model argue that this idea tends to fall apart when the problem being measured is constantly changing due to requirement modifications and new realizations about the problem itself.


Additional criticisms of a non-iterative development approach (such as the waterfall model) include:

  • Unless those who specify requirements and those who design the software system in question are highly competent, it is difficult to know exactly what is needed in each phase of the software process before some time is spent in the phase following it. That is, feedback from following phases is needed to complete preceding phases satisfactorily. For example, the design phase may need feedback from the implementation phase to identify problem design areas. The counter-argument for the waterfall model is that experienced designers may have worked on similar systems before, and so may be able to accurately predict problem areas without time spent prototyping and implementing.
  • Constant testing from the design, implementation and verification phases is required to validate the phases preceding them. Constant prototype design work is needed to ensure that requirements are non-contradictory and possible to fulfill; constant implementation is needed to find problem areas and inform the design process; constant integration and verification of the implemented code is necessary to ensure that implementation remains on track. The counter-argument for the waterfall model here is that constant implementation and testing to validate the design and requirements is only needed if the introduction of bugs is likely to be a problem. Users of the waterfall model may argue that if designers (et cetera) follow a disciplined process and do not make mistakes that there is no need for constant work in subsequent phases to validate the preceding phases.
  • Frequent incremental builds (following the "release early, release often" philosophy) are often needed to build confidence for a software production team and their client.
  • It is difficult to estimate time and cost for each phase of the development process without doing some "recon" work in that phase, unless those estimating time and cost are highly experienced with the type of software product in question.
  • The waterfall model brings no formal means of exercising management control over a project and planning control and risk management are not covered within the model itself.
  • Very specific skill sets are required for each phase, thus there is a requirement for multiple projects to run in sequence to optimize resource use if all members stay through the course of a given project, or to suffer skill levels by using "jack of all trades" resources throughout each stage.

Modified Waterfall Models

In response to the perceived problems with the pure waterfall model, many modified waterfall models have been introduced. These models may address some or all of the criticisms of the pure waterfall model. Many different models are covered by Steve McConnell in the "lifecycle planning" chapter of his book Rapid Development: Taming Wild Software Schedules.


While all software development models will bear some similarity to the waterfall model, as all software development models will incorporate at least some phases similar to those used within the waterfall model, this section will deal with those closest to the waterfall model. For models which apply further differences to the waterfall model, or for radically different models seek general information on the software development process. This does not cite any references or sources. ...


The Sashimi Model

The sashimi model (so called because it features overlapping phases, like the overlapping fish of Japanese sashimi) was originated by Peter DeGrace. It is sometimes referred to as the "waterfall model with overlapping phases" or "the waterfall model with feedback". Since phases in the sashimi model overlap, information of problem spots can be acted upon during phases that would typically, in the pure waterfall model, precede others. For example, since the design and implementation phases will overlap in the sashimi model, implementation problems may be discovered during the design and implementation phase of the development process.This helps alleviate many of the problems associated with the Big Design Up Front philosophy of the waterfall model. Assorted sashimi Sashimi (Japanese: ) is a Japanese delicacy primarily consisting of very fresh raw seafoods, thinly sliced into pieces about 2. ...


See Also

Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. ... Big Design Up Front (BDUF) is the (often criticized) idea in software development that a programs design should be completed and perfected before that programs implementation is started. ... In computing, the Chaos model is a structure of software development that extends the spiral model and waterfall model. ... Iterative and Incremental development is a software development process developed in response to the weaknesses of the more traditional waterfall model. ... Rapid application development (RAD), is a software development process developed initially by James Martin in the 1980s. ... This does not cite any references or sources. ... The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. ... System Development Methodology (SDM) is primarily being used for the development of IT-projects. ... The V-model is a software development model which can be presumed to be the extension of the waterfall model. ... This is an incomplete list of approaches, styles, or philosophies in software development. ...

References

This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL. This article does not cite any references or sources. ... “GFDL” redirects here. ...

  1. ^ Wasserfallmodell > Entstehungskontext, Markus Rerych, Institut für Gestaltungs- und Wirkungsforschung, TU-Wien. Accessed on line November 28, 2007.
  2. ^ "A Rational Design Process: How and Why to Fake It", David Parnas (PDF file)

is the 332nd day of the year (333rd in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... Steven Steve C. McConnell is a well-known author of many software engineering textbooks including Code Complete, Rapid Development, and Software Estimation. ... Steven Steve C. McConnell is a well-known author of many software engineering textbooks including Code Complete, Rapid Development, and Software Estimation. ... David Lorge Parnas (born February 10, 1941) is an early pioneer of software engineering who developed the concept of module design which is the foundation of object oriented programming today. ... Internet Archive headquarters is in the Presidio, a former US military base in San Francisco. ... Internet Archive headquarters is in the Presidio, a former US military base in San Francisco. ...

External links

Image File history File links Emblem-important. ... Philippe Kruchten was formerly the Director of Process Development (RUP) at Rational Software. ...

  Results from FactBites:
 
Waterfall Model (637 words)
The waterfall model is a sequential software development model in which development is seen as flowing steadily downwards (like a waterfall) through several phases.
Despite Royce's intentions for the waterfall model to be modified into an iterative model, use of the "waterfall model" as a purely sequential process is still popular, and, for some, the phrase "waterfall model" has since come to refer to any approach to software creation which is seen as inflexible and non-iterative.
The waterfall model however is argued by many to be a bad idea in practice, mainly because of their belief that it is impossible to get one phase of a software product's lifecycle "perfected" before moving on to the next phases and learning from them.
What is waterfall model? - a definition from Whatis.com (464 words)
The waterfall model is a popular version of the systems development life cycle model for software engineering.
Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is linear and sequential.
The disadvantage of waterfall development is that it does not allow for much reflection or revision.
  More results at FactBites »

 
 

COMMENTARY     

SuzetteBest
16th August 2010
I opine that to receive the personal loans from banks you should present a firm reason. But, one time I have got a secured loan, just because I wanted to buy a house.

Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m