Software Development Life Cycle (SDLC) - a note that you need
Software Development Life Cycle (SDLC) is a structured approach to software development that guides the entire process from planning to deployment.
It consists of several phases such as, including Requirement Analysis, Planning, Designing, Developing, Testing, Deployment, and Maintenance.
1. Requirement Gathering
During the Requirement Gathering phase, the project team identifies and documents the software requirements, considering the needs of stakeholders (the one who owns the software).
2. System Design
In the designing phase, the architecture and technical specifications of the software are defined.
The development phase involves writing the actual code based on the design specifications. This is followed by the testing phase.
In the testing phase, the software is rigorously tested to ensure it meets the specified requirements and functions correctly. Once the software passes the testing phase, it is ready for deployment.
During this phase, the software is installed and made accessible to users. After deployment, the software enters the maintenance phase.
During This phase, the updates, bug fixes, and other enhancements are implemented as needed.
SDLC provides a systematic approach to software development, ensuring that projects are completed efficiently with a smoother workflow. It helps in managing risks, maintaining quality, and delivering software solutions that meet the needs of users.
The industry utilizes a wide range of SDLC models, each with its own set of advantages and disadvantages. Two of the most popular models are the Sequential Model and the Iterative Model.
Sequential SDLC Model
The Sequential Model follows a linear progression from one phase to another. Each phase is completed before moving on to the next. Suitable for projects with well-defined requirements and stable scope which do not have frequent changes on requirements.
The most popular sequential model is the Waterfall Model.
The Waterfall Model is a sequential SDLC model where development progresses linearly through several phases: requirements gathering, system design, development, testing, deployment, and maintenance. Each phase is completed before moving on to the next, making it suitable for projects with well-defined requirements and a stable scope. However, it has some disadvantages:
Rigid and Inflexible: The Waterfall Model does not accommodate changes well. Once a phase is completed, it is difficult to go back and make changes without disrupting the entire process.
Limited User Involvement: User feedback and involvement are minimal until the later stages, which can lead to misalignment with user expectations.
Late Bug Discovery: Testing occurs towards the end, which means that bugs and issues may only be discovered late in the process, making them more expensive and time-consuming to fix.
Iterative SDLC Model
The Iterative Model is an SDLC approach that focuses on repetitive cycles of development, testing, and feedback. It aims to deliver working software incrementally and iteratively, allowing for flexibility and adaptation throughout the development process. This model is suitable for projects with evolving requirements and a need for frequent feedback and collaboration.
The most popular iterative model that is widely adapted in the industry is the Agile Model or Agile Methodology.
The Agile Model is one of the most popular iterative SDLC models. It emphasizes adaptive planning, continuous improvement, and rapid delivery. The development process is divided into short iterations called sprints, typically lasting 1-4 weeks. Each sprint involves planning, development, testing, and review activities. Agile methodologies like Scrum and Kanban are commonly used in this model.
Requirements gathering and analysis
Development of small increments of functionality
Continuous integration and testing
Sprint review and retrospective
Scrum is an agile framework for managing and organizing complex projects. It emphasizes collaboration, flexibility, and iterative progress. Here are some key points about Scrum:
- Roles: Scrum defines three main roles: Product Owner, Scrum Master, and Development Team. Each role has specific responsibilities within the project.
Product Owner: The Product Owner is responsible for managing the product backlog, prioritizing features, and ensuring that the team is working on the most valuable items. They collaborate with stakeholders to gather requirements, define the product vision, and make decisions about the product's direction.
Scrum Master: The Scrum Master ensure that Scrum practices are followed, remove roadblock’s, and support a productive and collaborative environment. The Scrum Master helps the team understand and apply Scrum principles and supports the team in self-organization and continuous improvement. Responsible for Scrum ceremonies like Sprint Planning, Daily Stand-ups, and Sprint Review.
Development Team: The Development Team consists of professionals who do the work on the product, and delivering a potentially releasable product at the end of each sprint. They are responsible for estimating, planning, and delivering the user stories committed to in the sprint backlog. The Development Team collaborates closely, shares knowledge, and works together to achieve the sprint goals.
Sprints: Scrum divides the project into small iterations called sprints, usually lasting 1-4 weeks. During each sprint, a set of features or user stories is developed and delivered.
Daily Stand-ups: Daily stand-up meetings are held to provide project status updates and address any impediments. Team members answer three questions: What did I do yesterday? What will I do today? Are there any obstacles?
Product Backlog: The product backlog is a prioritized list of features or user stories, maintained by the Product Owner. It guides the development team in selecting items to work on during each sprint.
Sprint Review: At the end of each sprint, a sprint review is conducted to demonstrate the completed work to stakeholders and gather feedback for future iterations.
Sprint Retrospective: The sprint retrospective is a reflection meeting held after each sprint to discuss what went well and identify areas for improvement.
Advantages of Scrum:
Increased transparency and collaboration among team members.
Ability to adapt and respond to changing requirements or priorities.
Regular feedback loops and opportunities for continuous improvement.
Incremental delivery of working software, allowing for early testing and validation.
Kanban is another agile framework that focuses on visualizing and optimizing workflow. It originated from lean manufacturing principles and has been adapted for software development. Here are some key points about Kanban:
Visual Board: Kanban utilizes a visual board with columns representing each stage of the workflow. Each task or user story is represented by a card or sticky note that moves across the board as it progresses.
Work-in-Progress (WIP) Limits: Kanban places limits on the number of tasks that can be in progress at each stage of the workflow. This helps prevent overloading and bottlenecks in the system.
Continuous Flow: Kanban aims to achieve a smooth and continuous flow of work. Tasks are pulled into the next stage of the workflow as capacity allows.
Cycle Time: Kanban measures the cycle time, which is the time it takes for a task to move from start to finish. This helps identify bottlenecks and areas for improvement.
No Fixed Time-boxes: Unlike Scrum, Kanban does not use fixed time-boxed iterations. Work is continuously pulled from the backlog based on capacity and priority.
Advantages of Kanban:
Clear visualization of the workflow and work progress.
Flexibility to handle different types of work and priorities.
Focus on optimizing the flow of work, reducing bottlenecks, and improving efficiency.
Ability to accommodate changing priorities and handle unpredictable workloads.
Kanban doesn’t follows sprints, sprint review and spring retrospective concepts, the tasks do not have any time limits, the review and retrospective can happen any time whenever it is necessary
Difference between SCRUM and Kanban
Scrum is based on time-boxed iterations (sprints), while Kanban focuses on continuous flow without fixed time-boxes.
Scrum has defined roles and ceremonies, whereas Kanban has no strict roles and focuses more on optimizing the workflow.
Scrum emphasizes collaboration and self-organization within the development team, while Kanban focuses on visualizing and optimizing the workflow across the entire team or organization.
Scrum requires more upfront planning and prioritization with a fixed set of features for each sprint, whereas Kanban allows for more flexibility in handling changing priorities and work items.
Both Scrum and Kanban are popular agile frameworks, but they have different approaches and advantages. The choice between the two depends on the specific needs and characteristics of the project or organization.