## Strawman Waterfall ("Plan-driven")

• Step in strict order through

• Requirements (what?)
• Design (how?)
• Implementation (do it)
• QA (check it)
• Avoid going backwards at all costs

• "Waterfall" because the steps flow down like water

## Strawman Waterfall Is No Good

• Not real-world usable or used much

• Requirements take too long to "perfect" and then are defective anyway

• Design takes too long to "get right" and then is wrong anyway

• Not enough time for coding, the only important part of development </s>

• Mistakes in requirements and design lead to expensive rework

## Incremental Iterative Waterfall

• Incremental: Build the core of the project, then build an expanded version, etc

• Iterative: Work backward as needed, checking as you go. QA tasks should be planned and completed as early as possible

• Pretty good in real world

## Agile: Cut Twice, Measure Once

• Idea: Reduce "overhead" — "activity that doesn't contribute directly to rapid product delivery"

• Careful specification
• In-cycle and post-cycle QA
• "Documentation"
• Obviously a parody, but…

• "Almost all software products are now developed with an agile approach"?

## The Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

(Signed by folks including Ward Cunningham)

## The Agile Promise

• Less ceremony = more time grinding code

• Shorter cycles = better risk management

• Finer granularity = better direction and scheduling

• Integrated QA = less rework and better product

## A Cynic's View Of Agile

• Pretty ill-defined ("Scrumbut")

• Easy excuse to skimp the unpleasant parts of software dev

• Works best in easy cases where reqs and design are not as important e.g. web / mobile

• Check out Table 2.2 in the text. What important phase of engineering is just flat out left out? (Hing: Design)

• When executed carefully, Scrum™ looks a lot like incremental iterative waterfall

• Customers can get hypothetical fast

• Good luck with this in actual contract situations