What is the Software Development Life Cycle (SDLC)?
Software Development Life Cycle is the entire process of ideating, designing, development, testing, deploying, maintaining, replacing or altering/enhancing a software that is built with a purpose. SDLC helps in creating high quality software that meets or even exceeds customer expectations. Software development life cycle includes defining a project framework which contains a list of activities that needs to be performed at different stages of the project. This list is strictly followed throughout-until the product reaches customer satisfaction level.
Why is SDLC important?
Provides a framework for a standard set of activities,timeline & deliverables
It helps improve development speed
Helps measure performances
Provides a mechanism for project tracking, monitoring and control
Improves product quality
Decreases project risk
Increases transparency for involved stakeholders of the development process
Improves client relations
Various phases of Software Development Life Cycle are:
1. Planning
We have a combined team of experienced UX designers in San Francisco as well as a team of fresh brains who are an enthusiastic bunch of explorers, designers, strategists, thinkers and developers. Experienced team members bring legacy & culture whereas freshers bring new perspectives & approach. They work in synergy to dedicatedly bring new life to a concept.
2. Defining
At this stage, project requirements are verified and all the outcomes from the planning stage are formally documented. A formal requirement documentation is done where each and every step of the plan (objectives, project goals, the functions and operations of the application) is defined very clearly.
3. Designing
Detailed screen layouts/wireframes, business rules, process diagrams, pseudocode, and other documentation are laid out. Generally there are two levels of designing followed: High Level Design (HLD) and Low Level Design (LLD).
High Level Design (HLD)
HLD is also known as macro level/system design. It showcases the brief functionality of each module and explains the overall description/architecture of the application. It is created by the solution architect. Here two teams are involved: design team, and client team.
Low Level Design (LLD)
LLD is also known as micro level/detailed design. It showcases detailed descriptions and detailed functional logic of the module. It is created by designers and developers.
4. Development / Implementation
At the time of software development/coding-all the pieces are put together in an environment that checks for errors, bugs, vulnerabilities, gaps, and interoperability.
5. Testing
Once the software development is complete, and it is deployed in the testing environment. The testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer requirement.
6. Deployment
Once the testing is complete with all the bugs and errors fixed, it is time to finally go live with the software ready for clients to use it.
7. Maintenance
Once the client starts using the software there will be times when they would require support from the development company. At this stage, maintaining updates, performance evaluations, and making any changes to the initial software are key maintenance procedures.
What are SDLC Models?
SDLC Models provides a methodology on the basis of which project teams plan, estimate and schedule their activities. Most commonly used software development life cycle models are:
1. Waterfall Model
It is a systematic linear sequential flow where completion of every step is compulsory before moving to another step. Here completion of every step serves as an input for another step. This ensures clarity of task at hand and leads to improved quality of end product. Businesses that have well defined and understood requirements are good fit for this model.
Requirements Collection
Done by Business Analysts and Product Analysts
Gathering requirements
Feasibility Study/ Analysis
Done by a software team consisting of project managers, business analysts, architects, finance, HR, developers but not testers.
Architect – is the person who tells whether the product can be developed and if yes, then which technology is best suited to develop it.
It is the process of checking for all defects and rectifying them.
Installation
To install the product at a client’s place for use after the software has been Developed and Tested.
Maintenance
Here as the customer uses the product, he finds certain bugs and defects and sends the product back for error correction and bug fixing. Bug fixing takes place.
The waterfall model can be a good choice when:
Project requirements are clearly defined and formulated, and there are no plans to change them.
If you are planning to build something simple.
If the project is short.
If there are plans to work with stable, well-tested and reliable tools.
Process and results are well documented.
2. Iteration Model
In the Iteration model the project performance methodology is such that software development is done in a cyclic manner. Every cycle produces a software, which is complete in itself and has more features and capabilities than that of the previous one. This is usually done in big and complex projects where the software development team first completes a project and reviews it, tests it, modifies it and then carries on with other projects where more features are added and tested.
3. Spiral Model
It is a combination of iteration model and waterfall model. It’s a risk-driven model which combines architecture and prototyping by stages and the overall success of this model depends on the risk analysis phase. The four main phases of this model are: determining objectives, risk analysis phase, development phase, planning of subsequent phases. In this model too the teams will have to go through these phases repeatedly, adding some improvements at each step.
4. V-Shaped Model
It is the extension of the waterfall model and involves testing and verification of performance at every stage before moving to the next development stage. This model also ensures that the next step starts only after the completion of the first step.
5. Agile/Scrum
In the Agile software methodology-solutions evolve through collaboration between self-organizing cross-functional teams that work on the idea of iterative development. It enables teams to deliver projects at a faster pace. The outcome through this model is of a high quality. Scrum is the most widely used Agile methodologies. One of the crucial features of Scrum is an iterative process of building the final software solution. For this purpose, the project manager divides the whole project into a set of phases called “sprints,” and these sprints serve as a base for performance monitoring as well. Due to the flexibility that scrum offers, it minimizes the risk of the entire project.