Agile Software Development

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

Last modified: Monday, 5 October 2020, 12:39 AM