Speaking about different styles of Software development, we can't but tell about the very classics of Software lifecycle.
'Waterfall' Was The First Described Model Of Software Development
Originally, the term 'waterfall' was proposed by Winstone Royce in 1970 in his well-known article "Managing the Development of Large Software Systems". And before early 80s it was almost the only widespread model of Software development. Ironically, the author described this model as 'the worst', 'risky and inviting failure' variant and proposed to develop it into iterative model of Software development. His criticism was ignored by most of his readers and the term, that was originally referred to iterative approach (see spiral model), was assigned to this initial, unsuitable model.
But, it is not surprising, if we will imagine that the project lifecycle will be provided as a real waterfall: once, falling from the cliff the water can't be stopped. Same way the 'waterfall' work frame: once the project has started it can be never stopped or reversed.
I can say with assurance, that it is the most strict and rigid way of development life cycle model, that is not devoid of some advantages. The main advantage is an opportunity to provide thorough managerial control and division of the task between different departments and accent to validation Examination, that is provided on each stage.
The project has its own structure, that moves strictly through stages of lifecycle without any skipping or covering. This method allows to provide fixed strict deadlines to any phase, and to a certain degree it guarantees (at least theoretically) that he product will be delivered in time. Also, it provides so detailed and structured plan of all actions and generates a lot of documents, that even a Outsourcing Software Team of 'weak' and low qualified programmers can afford Programming and the Outsourcing Software Team can be changed without lost of information about Programming.
So, all Software Development Projects, that are developed in 'waterfall' development model are going through such phases:
- Concept
- Requirements
- Architectural design
- Detailed design
- Coding and development
- Implementation
Next phase is provided by system engineer, who determines data structure, Software architecture, algorithmic details and interface representations. The main aim of this phase is to reveal all relations between hardware, Software and interface and to build the presentation of whole system architecture. Sometimes phases of Architectural design and Detailed design are joined in one Design phase. This phase is one of the most crucial, because it can reveal flaws in previous stage, that being missed can lead to corruption of entire Software Development Project.
Coding and development phase strongly depends on Design phase. Detailed and highly structured documentation can decrease Programming Outsourcing Software Team efforts. Also this phase includes previous Examination to ensure the the product meets specification requirements.
System Examination and implementation is sometimes the last phase, after which the Software Development Project is finished and the product is delivered to the customer for Examination and accepting.
In some cases the process can have one more phase, which takes the largest amount of time, but which is not Software development per se. Maintenance phase can be started to meet changes in customer's needs, external environment, to fix all occurred errors and improve general efficiency of Software.
As it is seen, the system has too little opportunities for revision. So, it leaves too little chances to take in mind the 'human factor'. Any customer's concerns, changes of opinion and uncertainty about the Software Development Project, which is not even a product until the last phase, can bring disastrous consequences. All efforts to develop the Software Development Project will be wasted, regardless brilliant theoretical, 'paper' development, without any practical result.
In same way, any mistake, that was not corrected on previous stage, can destroy entire Software Development Project. This problem is especially actual from the view, that most customers at the very beginning have only an idea, and have no opportunity to test the Software Development Project before whole process is finished. And imagine, that after the delivery is provided, he notices, that he was mistaken and something he wants to work in another way. What happens then? The life cycle is built in such way, that the development without changes in phase order is simply impossible, that's why any changes will address the first phase and everything will be started from beginning.
These features of waterfall model make it suitable for very narrow purposes: it helps to develop Software Development Projects with extremely clear and understandable requirements, architecture and technical side, which can be developed with certain time limit for any changes. Also, some companies use classic approach as a basis that allows to standardise development of large Software Development Projects in conditions of complicated and sophisticated industrial structure.
The most productive fields, in which waterfall showed it's best sides was military industry and governmental Software Development Projects. Waterfall model was not only successful model of development, but also helped to create some standards of quality, that are used until now.
Military Software Development Projects are often developed with criteria, that are absent in academical or industry practice, but these standards are widely used until now in governmental and large industrial Software Development Projects. These standards are MIL-STD-2167A, MIL-STD 498 and IEEE-STD-016. ISO12207.
Released online: 8/31/2007

