Understanding Software Development Life Cycle Models
The software development life cycle, or development process, is a structure imposed on the development of a software product. It typically covers all aspects of the development, starting from the identification (capture) of the customer’s (or end user’s) requirements, through the implementation of the code, to product deployment and maintenance of the system in the field. There are several models developed to describe and control the process. Students of software engineering and computer science courses can expect to cover the different models of the development process in considerable depth in their degree courses.
It has been a goal of businesses and software managers for many decades to bring the process of writing software under adequate control. Projects may often exceed the planned timescale by months or even years, and can be several times over the originally planned budget. Serious problems may not be found until a late stage in testing, or even worse, until after the product is delivered to the customer or deployed in the field.
As software is used in large systems in the financial industry, poor software quality may lead to significant loss of revenue. For safety critical software systems which are deployed in many industries (aviation, chemical industry, nuclear industry) the consequences of failure may be quite disastrous, leading to large scale loss of life or environmental damage.
The waterfall model is one of the earliest attempts to describe the software development life cycle. The project is split up into phases: requirements capture, design, implementation, testing, maintenance etc. In the strict case each phase must be finished before development proceeds to the next phase. Formal design reviews may be held, these can sometimes be referred to as “gates”, and the project must pass through these gates before starting the next phase. Revisiting or reworking earlier stages is strongly discouraged.
Proponents of more flexible schemes often strongly criticize the inflexibility of the waterfall model. Schemes such as iterative and incremental development, and agile development (which includes extreme programming, XP), allow working models of the final system to be built much earlier. This helps identify flaws in understanding what the customer really wanted, which is not always clear or obvious.
Generally a much more rigorous approach is required from developers in safety critical industries such as avionics. Organizations such as the US Department of Defense, and the UK Ministry of Defence, will expect development teams to demonstrate compliance with a formalized software development life cycle.
Graduate courses in software engineering and computer science will almost always cover the different software development life cycle models, such as the waterfall model, and the agile programming model.