The software development life cycle is a general guide to the phases needed to develop software. There are different variations of this model, including Waterfall, V-shaped, Incremental and Agile. If you work on a software development project, you will need to think about what is the best approach for your team.
This is a more linear version of the cycle. Each phase must be complete before you move onto the next. It is easy to follow this process and easy to manage. However, it is not a very flexible model. In theory, you should not need to return to a previous phase after it is completed. A final piece of software is only produced at the very end of the process.
This is similar to Waterfall, but testing is introduced before the implementation phase. It usually requires a testing plan to be introduced in the first phase, and each phase undergoes a rigorous test to make sure it is possible to move onto the next stage.
In this model, more than one version of the software is worked on at the same time. This produces a working product early on, even if it is basic. However, it means you will need to go back to the code and go through the development cycle several times for each build to get to the final product.
Agile is similar to Incremental. A basic version of the product is produced quickly and this is revised and updated several times. There is a great emphasis on getting feedback from audience and users to refine and improve the product. Work is broken down into 'sprints' (a sprint could be a couple of days or two weeks) to try to achieve new versions of the product at the end of each sprint.