Is it possible to have a new twist on the seemingly endless debate between advocates of Agile software development and those of the waterfall model? Some people, including Coverity’s Rutul Dave, think so. Coverity is a provider of code-testing products.
Dave believes that too many people get lost in the marketing hyperbole of one methodology and fail to see that Agile software development and the waterfall model have their merits and flaws; each can work better in certain industries and projects; and, heresy of heresies, they can even co-exist.
Many “Agilists” criticize the waterfall model by focusing on its practices and ignoring the fact that the principles of waterfall-based software development are not exclusive to waterfall but rather are aligned to the Project Management Body of Knowledge (PMBOK).
The criticism of the waterfall model is almost always about practices — and bad practices at that, said Glen Alleman, vice president of Strategic Consulting and Performance Management at Lewis & Fowler, a project management and consulting firm.
One thing that drives Alleman nuts about the Agile software development community is that the loudest members seem to be those with the most anecdotal experiences: Hey, it worked for me on my little project, so it must work for you.
Anecdotes have their place, he said, but they are just that: anecdotes.
Differences Between Agile Software Development and the Waterfall Model
Agile is an umbrella term for a number of iterative and incremental software methodologies, such as extreme programming (XP), scrum, crystal, dynamic systems development method and lean development.
Unlike other software development approaches, Agile focuses all stakeholders (programmers, testers, customers, management, and executives) on delivering working, tested software in short, frequent stages. Agile’s other main claim to fame is its ability to greatly accelerate the time needed to deliver finished software.
The waterfall model of development and management follows a sequential process. In waterfall projects, progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, development, and testing.
Who’s Using Agile Software Development?
“Agile development is most often talked about in terms of modern Web 2.0 applications, where developers see frequent updates and changes to code as feature sets are enhanced and new functionality is added at a rapid pace,” said Dave, the senior development manager at Coverity.
But Agile isn’t just for modern languages or Web-only applications, he noted.
“While the financial services and mobile markets were obvious early adopters, we could argue that there isn’t any industry where Agile wouldn’t be a good fit,” he said. “Agile is cheaper, faster, has more flexible processes, responds better to changes in market demands and, while not perfect, Agile environments can bring a certain honesty to team dynamics by exposing who’s behind contributions and progress.”
The nature of Agile development, however, can introduce risks. When testing cycles become condensed, serious bugs can be overlooked. This usually requires an additional level of developer testing upstream to help identify defects early in the cycle.
Most industries, such as consumer electronics for instance, make calculated tradeoffs when it comes to development, said Dave.
“For example, a mobile device company wants to be first to introduce a phone with the latest features, so time to market might take precedence over quality,” he said.
Who’s Using the Waterfall Model?
Quality is a primary concern in safety-critical industries or industries where projects require heavy documentation and modeling before coding begins. That is why the waterfall model is commonly used in aerospace and medical device manufacturing, as well as in the military.
“Because waterfall development stresses the end product over process, it has remained prominent in these industries where quality [and safety] over speed reigns supreme,” said Dave.
However, Dave noted that these industries are recognizing the value of iterative development:
- Increased software integrity
- Developer efficiency
- Reduced technical debt
“Although Agile methods are definitely more suited to projects where you need to deliver small yet frequent pieces of functionality, and where time to market is a key concern, we have seen Agile adoption increasing in traditionally waterfall industries such as medical device manufacturing and even military/aerospace,” said Dave.