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