Home > Principles and processes > Agile, XP, Scrum and Waterfall

Agile, XP, Scrum and Waterfall

I have been hearing these terms (Agile, XP, Scrum and Waterfall) so often that I thought of summing it up in a post. Recently, I attended a seminar at NASSCOM about Agile and XP. It was really interesting to understand these methodologies/principles.

Waterfall and Agile are “principles” whereas Scrum and XP are “practices” for project management. By definition “prinicple” is a rule or law concerning a natural phenomenon or the function of a complex system. It doesnt provide concrete steps, roles and responsibilities and parts of a system.

Waterfall – More correctly it is a software development “model” which talks about principle and flow of system. Waterfall is a sequential software development process where progress flows from top to bottom. Below is the flow in Waterfall:
     REQUIREMENTS –> DESIGN –> IMPLEMENTATION –> VERIFICATION –> MAINTAINENCE
 Only and only when the first step is complete and signed-off the project moves to next. The customer feedback appears very late in SDLC.

Agile – Waterfall talks about sequence whereas Agile favours iteration, quick results, incorporating changes early in the SDLC.
Some of the principles behind the Agile Manifesto are (reference http://en.wikipedia.org/wiki/Agile_software_development):

  • Customer satisfaction by rapid, continuous delivery of useful software
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Even late changes in requirements are welcomed
  • Close, daily cooperation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances

 To sum up Agile welcome “Changes”.

Scrum - Is “methodology” to implement Agile software development. It defines processes, roles and responsibilites to carry out Agile development. The three main roles are:

  • Scrum master
  • Product Owner
  • Team

Scrum master facilitates the process by monitoring it. Product owner is the one who priotizes the requirements and defines a sprint. Scrum Team do not have any heirarchy. Everone in the team has features to work on and owns it.  Scrum being agile believes in quickly showing the outcome. All requirements are not frozen before development and with an overall picture of software and initial requirements; the development starts. These requirements are then priotized and broken down in “sprints”. Each sprint is delivered (working software) in 2-3 weeks. This way customer feedback of each sprint is incorporated early in SDLC.

Extreme Programming (XP) – XP is another methodologies for agile development. It advocates frequent “releases” in short development cycles. XP can also be implemeted together wiith Scrum.
XP is more about how to program (code) in agile development. XP is about simplicity, discipline, ownership of your code and following best practices without fail. 
One of the key principle of XP is to always design and code for today and not for tomorrow. Since it talks of quick development. XP programmers need to ensure stable, reliable and faster code development.
Some key components are: Pair Programmng, Write test before code, collective code ownership, refactor often and continous integration.

Most of the in-house product develoment companies are adopting Agile while service companies still either works in Waterfall model or a mix of Agile and Waterfall. The main reason Agile adoption is difficult is that it requires a learning curve both for the vendor and customer. Agile is fluid cost model and if not properly controlled could overshoot time and cost.

  1. July 11th, 2010 at 02:37 | #1

    The project that I am working on supports a version of Scrum that is not purely scrum. So it can also be that organizations may go with a customized version that they may feel comfortable with rather than sticking with the specifics of Scrum.
    One of the drawbacks (that I think) about Agile is that it may sometimes be too focussed on rapid development causing some problems to be overlooked.

    • July 11th, 2010 at 05:13 | #2

      Thats true Kevin. Even the organisation I work for does FDD and TDD in fixed cost model with a blend of Agile and waterfall.

  2. July 11th, 2010 at 21:50 | #3

    I do think you should fine-tune your use of Scrum – one of the tools to do that could be organizational patterns as described by Jim Coplien. I recently wrote a bit about these techniques:
    http://complexitymaze.com/2010/07/09/fine-tuning-…

    • July 12th, 2010 at 16:55 | #4

      Thanks Therese for the web link. Your blog has some really nice references.

      • July 12th, 2010 at 20:52 | #5

        Thank you – I was hoping you would find it useful.

  3. July 12th, 2010 at 19:40 | #6

    That's a nice summary, thanks for sharing. If I can add my opinion to this – I think the best part of agile is that there are retrospective meetings where you have a bit of time to reflect how to improve your current process. This way you can constantly adopt and be more and more efficient.

  4. suyash
    July 31st, 2010 at 19:15 | #8

    Thanks sir for the precise explanation.

  1. No trackbacks yet.