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.



Good article. Probably you may want to correct the title last diagram above. :)
ReplyDeleteHello, Thank you very much for your feedback. I will change the diagram accordingly.
DeleteRegards,
Amit