Chapter 9: Software Development Life Cycle/System Development Life Cycle (SDLC)
It is a term used in software engineering to describe the process of planning, creating, testing and deploying the software. It is also called as Application development Life cycle. SDLC consists of different phases as described below.
1. Planning
In the planning phase we decide on the software solution to be developed. Plans will help the team through the execution and closure phases of the project. It also helps in managing time, cost, quality, change, risk and issues.
2. Requirement gathering and analysis
Business requirements are gathered in this phase. Questions like who is going to use the system? How will they use the system? What data should be input into the system? What data should be output by the system? Will be addressed in this phase. Once requirement are gathered it will be analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studied. Finally, a Requirement Specification document is created which serves the purpose of guideline for the next phase of the model. The testing team follows the Software Testing Life Cycle and starts the Test Planning phase after the requirements analysis is completed.
3. Design
In this phase the system and software design is prepared from the requirement specifications. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. The system design specifications serve as input for the next phase of the model. In this phase the testers comes up with the Test strategy, where they mention what to test, how to test.
4. Implementation or coding
On receiving system design documents, the work is divided in modules/units and actual coding is started. Since, in this phase the code is produced so it is the main focus for the developer.
5. Testing
After the code is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase.
6. Deployment
After successful testing the product is delivered / deployed to the customer for their use. As soon as the product is given to the customers they will first do the beta testing. If any changes are required or if any bugs are caught, then they will report it to the engineering team. Once those changes are made or the bugs are fixed then the final deployment will happen.
7. Maintenance
Once when the customers starts using the developed system then the actual problems comes up and needs to be solved from time to time. This process where the care is taken for the developed product is known as maintenance. There may some enhancements required to the product based on the business changes. Above seven phases will be followed again in order to produce the enhanced product.
SDLC Models
Following are the main SDLC models
Currently in software industry agile development model is widely in use.
- Waterfall model
- V-Shaped Model
- Spiral Model
- Iterative and Incremental Model
- Evolutionary Prototyping
- Big Bang model
- Agile Model
Waterfall Model
In Waterfall each phase must be completed before next phase can begin, hence there is no overlapping of the phases. Waterfall model is also called linear sequential model.
Below picture illustrates the waterfall model.
V shaped Model
In V-Model there is a relationship between each phase of the development life cycle and its associated testing phase. V-model can be considered as extension of waterfall model. Below picture illustrates relationship between each development phase and its associated testing phase.
Spiral Model
Spiral model follows incremental and iterative approach. The spiral model has four phases. Each iteration is called as spiral; a software project repeatedly passes through these four phases in each spiral. It allows incremental releases and/or refinement of the product.
Following picture illustrates the Spiral model.
Iterative Model
This model follows Iterative and incremental approach. In iterative model some part of the software functionality is developed initially using SDLC approach. Then the initial version is reviewed and some more additional functionality will be developed using SDLC approach. This process is repeated until complete software is developed. Each iteration involves software development lifecycle. Each iteration produces new version of the software. Last iteration produces complete version of software.
Following picture illustrates Iterative Model.