TL;DR
Each project is unique because it has to cope with different risks. This is why we have various project life cycles. Read another post from the project management series. The post is based on a remarkable book written by Johanna Rothman, Manage It!
When a tester states that is using agile methodology, I test this fact by asking the question of what your other options were? The usual answer is that they do not use Waterfall because it is obsolete.
There are four types of project lifecycles:
- serial
- iterative
- incremental
- iterative/incremental
Remember. Agile is an iterative/incremental project lifecycle.
Serial
The most famous example of a serial project lifecycle is the Waterfall methodology. Phase-Gate is another one. We could have successfully serial project if following preconditions are satisfied:
- stable requirements
- stable team
- stable architecture
Stable means that they could still fluctuate, but with very small amplitudes. The first priority is feature set, then low defects, and in the end, we have time to release. The reason that time to release is last is straightforward, it is tough to predict in advance. So in a waterfall, time to release could slip.
Iterative
In the iterative lifecycle, we try to cope with the problem of unstable architecture. We try not to predict far in future product architecture so we create several prototypes in interactions, where we do analysis, design, and coding. The priority list is the same as for serial, feature set, low defects, time to release. Examples of iterative lifecycles are spiral and evolving prototyping methodologies.
Incremental
Incremental examples are designed to schedule and staged delivery. We try to cope with schedule risk. In the beginning, we have some requirements, and we do an analysis to set the Architecture. We pull a feature a do a full cycle, design, code, integration, and test. In the next feature implementation, we use feedback from the previous one. When we are done with all features, we do final integration and test. The schedule is the first priority, the second is low defects, and the last one is the feature set.
Agile
Aka iterative/incremental life cycle. Examples are Scrum and Xtreme Programming (XP). We cope with schedule and architecture risks. In agile, we do not know what the final product is. In timeboxed iterations, we do incremental features. At the end of the timebox, in cooperation with a sponsor, we define requirements for the next timebox. Our priority list is time to schedule, feature set, low defects.
Remember
There are four project lifecycle types, and each type helps us to mitigate specific project risks. Agile is not the silver bullet.