Software development life cycle is a process of developing software through business needs, analysis, design, implementation and release & maintenance.
Life Cycle models or process models:-
1. Classical Waterfall Model
2. Prototyping Model
3. Rapid Application Development Model
4. Evolutionary Model
5. Incremental Model
6. Spiral Model
1.) Classical waterfall model:-
Classical waterfall model It is also known as ‘ Linear-Sequential Model ‘ or ‘ Classic Life Cycle Model ‘. It was originally proposed by Winston Royce. It is a theoretical model rather than a practical model. All other life cycle models are essentially derived from this model.
---> Feasibility Study
---> Requirement Analysis & Specification
---> Coding & Unit Testing
---> Integration & System Testing
---> Relatively simple to understand.
---> Each phase of development proceeds sequentially.
---> There is a phase entry and phase exit criteria.
---> All the requirements needs to be specified before the development proceeds.
---> No user involvement.
---> Does not involve risk management.
2.) Prototyping or prototype model:-
Prototyping or prototype model The Prototype Model is applied when there is an absence of detailed information regarding input and output requirement. This model is developed on the assumption that it is often difficult to know all the requirement at the beginning of a project. This model increases flexibility of the development process by allowing the user to interact and experiment with the working representation of the product known as PROTOTYPE.
---> Provides a working model to the user early in the process, enabling early assessment and increasing user confidence.
---> There is a great involvement of users in software development.
---> Helps in reducing risks associated with the project.
---> This model is time-consuming and expensive.
---> Prototyping can lead to false expectations.
---> It often creates a situation where user believes that the development of the system is finished when it is not.
3.) Rapid application development model:-
It is an incremental software development process model that has extremely short development cycle. It is a high speed version of the linear sequential model in which rapid development is achieved by using component based construction. 60-90 days are required to create a fully functional system using RAD model.
---> Provides greater flexibility as redesign is done according to the developer.
---> Encourages user involvement.
---> Possibility of lesser defects due to prototyping in nature.
---> Useful for only larger projects.
---> This model requires heavily committed developer and customers.
---> It requires multiple teams or large number of people to work on the scalable projects.
---> The projects using RAD model requires heavy resources.
4.) Evolutionary model:-
This model deals with several intermediate versions This is based on the idea of developing and initial implementation, exposing it to the user for refinement until a final system has been developed.
---> The user gets a chance to experiment with a partially developed software before the complete version of the system is released.
---> The core modules get tested throughout the process thereby reducing chances of errors in the core modules of the final product.
---> The main disadvantage of this model is that for that for most practical problems, it is difficult to divide the problems into several versions that would be acceptable to the customer and which can be incrementally implemented and delivered.
5.) Incremental model:-
The incremental model reduces rework and gives the customer an opportunity to delay decisions on their detailed requirements until they had some experience with the system. In this model, first the services to be provided are identified. Then a number of delivery increments are defined.
Once, system increments have been defined then requirements for the first increment are defined and that increment is developed using appropriate process.
Once an increment is completed and delivered, customers can put it into service.
As new increments are completed they are integrated with the existing increments so that system functionality improves with each increment.
---> Customers do not have to wait until the entire system is delivered.
---> Customers can use the early increments as a form of prototype and gain experience which informs the requirements for later increments.
---> There is a low risk of overall project failure.
---> Requires planning at the management and technical level.
---> Becomes invalid when there is time constraint in the project schedule or when the users cannot accept the based deliverables.
6.) Spiral model:-
This model proposed by Barry Boehm in 1988, attempts to combine the strengths of various models. It incorporates the elements of the prototype driven approach along with the classic software life cycle .
---> Spirals are represented by six major tasks:-
---> Customer Communication
---> Risk Analysis
---> Software Designing Engineering
---> Construction and Release
---> Customer Evolution
---> It facilities high amount of risk analysis.
---> This software designing model is more suitable for designing.
---> The software is produced and managing large software projects.
---> Risk analysis requires high expertise .
---> It is costly model to use
---> Not suitable for smaller projects.
---> There is a lack of explicit process guidance in determining objectives, constraints and alternatives.
---> This model is relatively new. It does not have many practitioners unlike the waterfall model or prototyping model .