Waterfall and Iterative development

A student wrote to me: “When do we use the Waterfall and when do we use the Iterative approach? How do we select which is best for software project?

Answer: Both of these approaches follow a well defined process with specific details. You select the Waterfall approach when the requirements are well understood and the project must follow certain rules and regulations (i.e. large critical project or government projects) where it requires high level of quality and documentation. You complete everything in the project and release the product all at once to customers. However, there are risks involved in this approach if the requirements change, many thing have to be reworked; and if the project is too big and takes too long, technology may change and make the project obsolete.

You select the Iterative approach when the requirements are not clear and still need to change; the product must be released quickly to customers even it may not be completed as they need it. Faster delivery allows product to be used in small parts as needed. Because changes can still happen, development team may be too reactive and subject to a lot of small changes, too many changes can make the product more complex and difficult to maintain. Sometime quality may be compromised due to the nature of deliver quickly.

Each approach has strengths and weaknesses and each should be used based on their strengths. However, by understanding their weaknesses you can build risk mitigation plans to avoid potential problems.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University