Tuesday, January 29, 2013

Waterfall vs Iterative vs Agile vs Scrum

In an attempt to bring out differences between various software development project methodology and concepts like SCRUM, Waterfall, Agile, iterative, etc., I have tried to present a summary of these methodologies at one place. I have tried to touch upon few ones as the list is very long-


Waterfall is the simplistic sequential development process mostly used in software development industry. In waterfall model, usually following phases in order-Requirements collection, Design, Development, Testing, Deployment.

In a waterfall model each phase can be visited only ones, but that hardly happens as in almost all projects once defects are discovered during testing or in any other phases it becomes necessary to go back to design and development or sometimes even to requirements collection phase. Good thing about waterfall is that it emphasizes on clearly defining the requirement at the beginning of the project and thus is more disciplined, however this also brings in inflexibility to accommodate changes as they come later.



Iterative waterfall model provides flexibility and mitigates Risk of late identification to some extent by breaking up the overall development into multiple similar sub-cycles of development. However as the aim of individual sub-cycles may not be to deliver part of working functionality but let say some technical components so still there is more risk compared to more Agile methodologies. Though after completing one cycle, there is some scope of rectifying bugs but this still lacks the advantage of early customer feedback as delivery is usually made at the end of the project.


Agile methodologies: Is a group of software development methodologies which provide flexible response to changes in comparison to traditional waterfall methodology. Agile developments are based on Adaptive planning and evolutionary development.

There are many agile methodologies. Most popular ones being-


Scrum: Scrum is an iterative and incremental agile software development framework which involves delivering of software in multiple chunks through several sequential or overlapping mini project lifecycles called sprints. As feedback is formally collected after each sprints so it gives advantage of identification of requirement mismatch issues early in the project. This approach also does not require all requirements to be finalized at the start of the project. Requirements for which details are known with enough clarity are attempted to be delivered in current sprints, for other sprints requirements can be detailed out as they come.



Extreme Programming (XP): XP emphasis on low cost of changes in requirement by having multiple short development lifecycle. It emphasis more on coding and minimizes documentation and formal processes to reduce the cost of change. Because as the changes do not require formal documentation hence there is a risk of scope creep.

2 comments:

  1. Good article. Probably you may want to correct the title last diagram above. :)

    ReplyDelete
    Replies
    1. Hello, Thank you very much for your feedback. I will change the diagram accordingly.

      Regards,
      Amit

      Delete