There are two renowned Software Development Methodology families, which are Waterfall and Agile, and they are quite abstract.
I called them abstract because they have many different implementations which are developed on top of them. Let's just think that Waterfall and Agile are ideas, and but the realisations vary based on specific industries or companies.
A picture worths thousands words. Let's start with the picture below.
Waterfall contains five phases as shown in the picture.
Only when the previous phase is completed can the next phase start, just like the water can only falls from the top to the bottom. Notably, the water cannot flow upward, which means that we cannot come back to the earlier phases once they are finished.
At each step, an artifact must be produced and delivered.
Other names: Linear model, Cascading model, Plan-driven development model.
We should know William Royce is the man who officially defined (not created) Waterfall model. However, he did not totally advocate this model. Royce said:
Therefore, there is another modified implementation of Waterfall model, in which the phases are connected one step backward.
Its name is Splash Back
The believe that all requirements can be predicted and will follow all concrete plan are not feasible.
The aim of Agile Methodology is to enable an organisation to deliver and change quickly (very important in our digital era). These agile practices in software development may differ, they share some common features including iterative development, regular meeting with customers, deliver small and incremental changes.
"In February 2001 a group of 17 software gurus got together in Snowbird Utah to discuss the growing field of what used to be called Lightweight Methods and came up with what was called the Agile Manifesto and the term Agile Methods was coined The Manifesto States : We are uncovering better ways of developing software by doing it and helping others do it."
Through this work we have come to 4 key values:
That is, while there is value in the items on the RIGHT we value the items on the LEFT more
Another picture worths thousands words.
In Agile, there are typical 6 phases in one cycle: Plan - Design - Develop - Test - Release - Feedback. So basically, we are not developing or testing all features at a time. Instead, we do all 6 phases for one feature, then deliver it to the client to get the feedback, and then move to the next feature and so on. It is an incremental and iterative development.
One project may contain many cycles. One cycle may contain one or more features. It depends on the client.
Notably, the involvement of client is CRUCIAL in Agile. They act as the end-user, provide feedback, supervise the production, etc.
Among many implementations in Agile family, Scrum is the most famous and frequent used (and frequently asked by the recruiters). This methodology allows self-organised teams to deliver highest value within the shortest time.
Scrum is made up of Role, Event, Artefact
We should know Sprint is a short fixed-length cycle (1-4 weeks).
In one Sprint, there are 4 activities:
4. Sprint Retrospective
Waterfall advantages:
Agile advantages: