Insights | Agile vs. Waterfall – Software Development Methodologies

Agile vs. Waterfall – Software Development Methodologies

By Andy Hilliard | December 4, 2006

In an informal survey, Accelerance Global Partners report that over 70% of their clients have little or no specifications at the beginning of an engagement.

And yet, good specifications are a key success factor for offshoring.

One shortcut is to have the vendor collaborate with you to write the specification. This can be very helpful if you don’t have a lot of experience in specifying software.

But you have to be committed to describing your software. You can outsource the design and development, but not the responsibility for defining what your software should do.

So let’s assume you will write the specification for your software, maybe sharing some of the work with your vendor. What do you write? How much detail do you need to provide?

The answer depends on your software development strategy.

There are two software development strategies that are popular today – Waterfall and Agile. Which one you use depends on two major factors:

(1) How many details you know upfront about the behavior of your software
(2) The consequences suffered if your software fails

Here is a table that shows where each strategy is best applied.

Painful Consequences Mild Consequences
Details Known Waterfall Waterfall or Agile
Details Unknown Waterfall Agile

Some software requires high reliability and accuracy, because of terrible and painful consequences if a failure occurs. In this case, you must use a very formal process to design and development your software (often real-time systems) that may be difficult or dangerous to test (launching a rocket, for example).

Finding errors in such systems at the end of development cannot be tolerated, and therefore great emphasis is placed on the front-end requirements gathering, specification writing, and detailed design. These design documents are reviewed thoroughly before coding begins.

Coding then uses peer reviews, code walk-throughs, string module inspections, module integration, and rigorous testing by the designers. Such a formal software development process proceeds with great ceremony.

The old Waterfall style of software design has separate sequential steps from Requirements to Design and so on down through Coding and Testing until you get to the end of the project.

The waterfall approach is still the recommended way to communicate the desired behavior of your software when you need to build extremely reliable software or you are re-implementing an existing system.

For example, if you are re-implementing an existing client/server application as a new Software as a Service (SaaS) with the same functionality, then your old software is an excellent example of what the new SaaS application should do. Screenshots and live examples from the old software can be used to support a Waterfall strategy.

But it is rare to know all the details of what your software should do when you are at the beginning of a brand new software application project.

Observant software engineers have realized that they jump back and forth between the different waterfall boxes during the course of developing new software. Enforcing the sequential Waterfall process of requirements, design, and then development is artificial and counterproductive for new software application development.

Therefore, development of new software, where all the details are not known upfront, is best suited for an Agile strategy. A few months ago, I wrote about using the Agile strategy for new software development. See “Over the Waterfall into Agile Outsourcing” at

But if your software needs extremely high reliability and/or most of the details are already known, then use of the old tried and true Waterfall method will improve your chances for success when using offshore resources.

So what do you write in your specifications?

The specification element that is key to both Agile and Waterfall strategies is the Use Case. I will cover Use Cases in more detail in the next issue of Runtime.

Interested in reading more?

More from Accelerance

June 3, 2021

RATES, TRENDS AND EXPERT PREDICTIONS: Accelerance Releases its 2021-2022 Global Software Outsourcing Trends and Rates Guide

A year of unprecedented disruption requires an unprecedented response. The depth and breadth of analysis in Accelerance’s new 2021-2022 Global Software Outsourcing Trends and Rates Guide is a deeper...

May 26, 2021

(OLD) School is Out: Embracing Remote Work

“Change is inevitable. Growth is optional.”

- US leadership expert John Maxwell

In reflecting on the many changes we’ve all endured this year, both personally and professionally, I’ve wondered why...

May 13, 2021

Introducing Rapid Referral®: The World's Fastest Way to Risk-free Software Outsourcing Partners

How do you find a software development outsourcing partner that you can be certain will perform, without wasting months hunting for hit-or-miss options? Try Accelerance's proprietary Rapid Referral® ...

How can we help you succeed?

We make outsourcing successful with innovative partner selection services and tailor-made consulting solutions to ensure your desired outcomes.

Let’s Get Started