Software Development Life Cycle(SDLC)¶
Software Development Life Cycle ( SDLC ) describes different stages and orders of software development. Every stage of the SDLC has its processes and deliverables that feed into the next stage. SDLC process ensures that software deployed meets the customer expectation in the pre-defined time frame and cost. SDLC constitutes a detailed approach from how to plan, analyze, design up to the final delivery and maintenance of the software.
Importance of SDLC¶
SDLC holds a lot of significance for software teams. It is important mainly because:
- It tracks the project plan, time frame, and cost involved.
- It provides a framework for various activities and deliverables.
- It gives an overview of the project to all team members involved in the development process.
- It acts as a guideline for the developers.
- It helps in improving client relations.
- It decreases the project risk involved.
Phases of SDLC¶
Software Development Life Cycle
There are following six stages in every Software development life cycle model:
Planning¶
Planning is the first stage of SDLC. A team of Project Manager, Consultants, Architect, Business Analysts gathers the requirements from clients(Business). During this, they all try to find answers to the following questions:
-
What will your product do?
-
How do you want your users to use the product?
-
What are the different technologies available for implementation?
-
Which technology will be required to develop the specific product?
-
What are the resources such as developers, testers, consultants you will require to complete the project?
-
How much time you will require to develop the product?
-
What should be the timeline for different phases?
-
If any potential risks involved in the development?
Analysis¶
After proper planning, a Software Requirement Specification document is created. This document will be shared with the Project Manager, Architect, Consultant, Business Analyst, and Tech leads for examination to accept or reject or suggest the requirements mentioned and search for answers to questions like:
- Are the user needs analyzed?
- What users are currently using is researched?
- Is there any other product available with the same features in the market surveyed?
- What technologies are available to support the product?
- Whether financial constraints, resources, time-frames are calculated?
Once the final Software Requirement Specification document is approved, the project is forwarded to the next phase of the development cycle.
Design¶
Once the final approved Software Requirement Specification document is ready, the Product Manager, Architect, Consultant, Tech Lead, and Developers come together to create a Design Specification document describing features of the product in detail. For the creation of this document, the team goes through the following questions such as:
- Why particular feature is required?
- What issues will be resolved by the feature?
- What task will the user be able to achieve?
- How should we try to implement it?
- How should the user interface be?
- How should the product work?
- What hardware and systems are required to define overall system architecture?
All this provides developers an idea of everything they would require to start building the product.
In this phase, the Quality Assurance team also comes up with the Test strategy, where they mention what to test, how to test the product.
Development and Implementation¶
This is the most important stage of SDLC. This stage is the foundation of a well-made product. After the Design Development document is received, the Developers and Tech Manager starts developing the software, by dividing the work into modules/units and actual coding is implemented. In this stage they try to achieve and answer:
- Which language they should prefer to write the code?
- How they can have effective communication among team members?
This process takes up most of the time and resources. After the product has been developed and tested on the developer front, the SDLC moves to the testing stage.
Testing and Integration¶
After the code is developed, it is tested against the required standards by Quality Assurance Manager and Tech Manager. The developed product passes through functional testing like unit testing, integration testing, system testing, acceptance testing as well as non-functional testing. In this stage they try to find the answers to the following questions:
- Are there any features related issues for a release?
- Is the final check properly done before a product release?
- Do the test of the new feature compared with the old?
- Are there any bugs reported?
If any bugs or errors occur, they are returned to the development stage where developers resolve the issue. This stage is iterative and repeated until no bugs or errors are found. If the developed product performs optimum, then it is forwarded to the next stage for deployment.
Delivery and Maintenance¶
After successful testing, the product is delivered to the client for their use all at once or in batches. At the client’s premises, the software product undergoes beta testing. If any error occurs, it is again returned to the development team for rectification. In this stage they try to find the answers to the following questions:
- Is the customer satisfied with the onsite product?
- Are customers facing any issues with the product?
- Does the support team able to rectify customers’ queries?
The support team utilizes the feedback and reaction of clients to make reports on what needs to be improved and what the users like. This might include minor changes like a simpler or more intuitive interface, or major overhauls like entire features. Whatever the case, these can contribute to a better-upgraded version and so the requirements are again updated to the development team.
Various stages can be explained as follows:
S.no | Stage | Activities Involved | People Involved | Deliverables |
---|---|---|---|---|
1. | Planning | 1. Understanding product requirement. 2. Understanding real purpose of the product. 3. Understanding the different technologies available for implementation. 4. Availability of resources to complete the project in form of developers, testers, consultants, etc. 5. Calculation of time requirement to develop the product. 6. Identification of any potential risks involved in the development. | Project Manager, Consultant, Architect, Business Analyst | Requirement Understanding Document |
2. | Analysis | 1. Analysis of user needs. 2. Comparison of already present market product with the product in requirement. 3. Analysis of technologies available to support the product. 4. Calculation of financial constraints, resources, time-frames. | Project Manager, Architect, Consultant, Business Analyst, Tech lead | Software Specification document |
3. | Design | 1. Implementation of product in code. 2. Understanding of the user interface requirement. 3. Implementation of the work flow of the product. 4. Understanding hardwares and systems requirement for overall system architecture. | Product Manager, Architect, Consultant, Tech lead and Developers | Design Specification document |
4. | Development & Implementation | 1. Finalization of language preference to write the code. 2. Understanding team work and work load division. | Quality Assurance Manager, Tech Manager, Developers | Program Codes Unit test cases |
5. | Testing & Integration | 1. Make sure product is ready for release in respective environment. 2. Fix number of features and issues for a release. 3. Final check to fix a product release. 4. Test new features with old. 5. Report bugs if any. 6. Track the progress of testing. 7. Report testing activities. | Quality Assurance Manager Tech Manager | Test cases Test reports |
6. | Delivery & Maintenance | 1. Confirm customers use the product. 2. Incase customer encounters the bug, note the issue and fix it. 3. The application is enhanced to incorporate new features, and update it. 4. Rectification of bugs, if any. 5. Utilization of the feedback and reaction of clients . | Support Team, Developers | User Manual Support Contact Details |