Software Engineering Process Models
Software Engineering Process Models
Waterfall Model
Description
The Waterfall Model, also known as the Linear Sequential Model, is one of the oldest
and most widely used software development process models. It was first introduced by
Winston W. Royce in 1970, primarily for managing large and well-defined engineering
projects. The model is named “Waterfall” because its phases flow downwards in a
sequential manner—just like water cascading down a series of steps in a waterfall.
In this model, the output of one phase acts as the input to the next phase, and each phase
must be fully completed before moving on to the next. There is little to no overlap
between phases. It is a plan-driven, document-oriented model that focuses on thorough
documentation and structured progress.
The Waterfall Model is most suitable for projects where the requirements are well
understood and unlikely to change throughout the development cycle. Examples include
banking systems, defense software, and embedded systems, where reliability and
correctness are critical.
Diagram
Requirements Analysis
Implementation (Coding)
Deployment (Installation)
The first phase in the Waterfall Model is the Requirements Analysis phase. During this
phase, system analysts and project managers communicate extensively with clients and
end users to gather all the functional and non-functional requirements of the system.
These requirements are carefully analyzed, reviewed for consistency, and documented in
a detailed report known as the Software Requirements Specification (SRS) document.
The SRS serves as a formal agreement between the customer and the development team.
It outlines what the system is expected to do (functional requirements) and the constraints
it must satisfy (performance, security, or usability). Once approved, this document
becomes the foundation for all subsequent phases of the project.
After the SRS document is finalized, the next phase focuses on designing the system’s
architecture. This phase defines how the software will be structured and implemented.
The system design phase is often divided into two levels:
Design diagrams like Data Flow Diagrams (DFD), Entity-Relationship Diagrams (ERD),
and UML diagrams are created to visually represent the structure of the system. The
output of this phase is the Design Document Specification (DDS), which guides the
coding process.
3. Implementation (Coding)
Once the design phase is complete, the actual development begins. In this phase, the
system is built module by module. Developers write source code using appropriate
programming languages according to the design specifications.
Each module is developed, compiled, and tested individually in a process known as Unit
Testing. This testing ensures that each module performs its intended function correctly.
At this stage, white-box testing techniques are often used to verify the logic and internal
structure of the code.
The result of this phase is a set of tested modules ready for integration.
In this phase, all the tested modules are integrated into a complete system. Once
integration is complete, system-level testing begins. The primary goal is to verify that all
modules work together as expected and that the entire system functions in accordance
with the requirements defined in the SRS.
System Testing: Validates the complete system against the original requirements.
If any defects or deviations are found during testing, they are reported and corrected
before proceeding to deployment.
5. Deployment (Installation)
After successful testing, the system is ready to be deployed in the real working
environment. This involves installing the software on target systems, configuring
hardware and networks, and ensuring that all dependencies are in place.
During this phase, user training and documentation are also provided. The software is
then formally handed over to the client for operational use.
In some cases, deployment happens in stages — starting with a pilot release for limited
users, followed by a full-scale rollout once stability is confirmed.
This phase can extend for years after the initial release, as real-world usage often reveals
new challenges and improvement opportunities.
2. Structured Documentation:
The emphasis on documentation at every stage ensures clarity, which is useful for
maintenance, audits, and future reference.
5. Maintenance Challenges:
Extensive changes during maintenance can be complicated, as any modification
may affect previous phases’ documentation or logic.
2. V-Model
Description
The V-Model, also known as the Verification and Validation Model, is an extension of
the traditional Waterfall Model. It emphasizes testing and validation at every stage of
the software development life cycle. The letter “V” represents the visual structure of the
model — where the left side of the V corresponds to the development phases
(verification), and the right side represents the testing phases (validation).
This model ensures that for every development activity, there is a corresponding testing
activity. For example, requirement analysis is verified through acceptance testing, design
is verified through system and integration testing, and coding is verified through unit
testing.
The V-Model was introduced to overcome the main limitation of the Waterfall Model —
the late involvement of testing. By integrating testing throughout the process, the V-
Model ensures higher quality and early detection of defects.
Diagram
Requirements Analysis
System Design
Coding
↓
Unit Testing
Integration Testing
System Testing
Acceptance Testing
The left arm of the “V” represents the verification phases, while the right arm represents
the validation phases. The bottom point of the “V” is the coding phase, linking the two
sides.
This is the first stage of the V-Model where the team gathers all system requirements
from stakeholders. The requirements are documented, reviewed, and approved in the
Software Requirements Specification (SRS) document.
The goal is to ensure that every requirement is clear, measurable, and testable. This phase
defines the acceptance criteria that will later be verified during the Acceptance Testing
phase.
2. System Design
In this phase, the system architecture and overall design are developed based on the
requirements. It defines how the software and hardware components will interact, what
technologies will be used, and how the system will be structured.
Design specifications, data flow, and control flow diagrams are prepared. The output of
this phase is the System Design Document (SDD), which serves as the basis for system-
level testing.
Corresponding Testing Phase: System Testing.
The architectural design phase breaks the system into multiple modules or subsystems.
Each module’s function, interface, and dependencies are defined. Data exchange between
modules, communication protocols, and error handling are planned in detail.
This phase also helps in identifying reusable components, reducing redundancy, and
improving maintainability.
At this stage, each module or component is designed in detail. The internal logic,
algorithms, data structures, and input/output formats are defined.
The purpose is to translate high-level modules into a detailed design that can be
implemented directly through code. Design tools like flowcharts, pseudocode, and UML
diagrams are often used here.
This is the stage where the actual development or programming is performed. Developers
write code in accordance with the low-level design using appropriate programming
languages.
Coding standards and best practices are strictly followed to maintain code quality. Once
each module is coded, it undergoes unit testing to verify that it performs as expected in
isolation.
This phase serves as the foundation for the validation process that follows.
Validation Phases (Right Side of the V)
6. Unit Testing
After the completion of each module, Unit Testing is carried out. The goal is to test
individual components or functions for correctness. Developers ensure that every small
unit of code works as intended before integrating it into the larger system.
7. Integration Testing
Once individual modules are tested, they are combined to form an integrated system.
Integration Testing ensures that modules communicate and interact properly.
This phase detects issues such as interface mismatches, data transfer errors, and logical
integration faults.
8. System Testing
In this phase, the complete integrated system is tested against the system design and
requirements. It verifies that the entire system performs as specified and that all
functionalities work together seamlessly.
System Testing includes functional testing, performance testing, and security testing. It
is conducted in an environment that closely resembles the real-world operational setup.
9. Acceptance Testing
The final stage of the validation process is Acceptance Testing, where the system is
validated against the user requirements defined in the SRS. It is performed with direct
customer involvement to ensure the system meets business goals and user expectations.
4. Comprehensive Documentation:
The V-Model enforces detailed documentation at every stage, which aids in
traceability, maintenance, and future enhancements.
1. Rigidity:
Like the Waterfall Model, the V-Model does not accommodate changes easily
once a phase is complete. Any modification requires rework in multiple
documents.
Unlike the Waterfall model, which delivers the entire product at once, the Incremental
Model delivers working software in stages, allowing users to benefit from early releases.
This model is particularly effective when requirements are well-understood for the core
functions but may evolve for additional features over time.
In the Incremental Model, development begins with a minimal version of the system,
known as the core product. Gradually, new features and enhancements are added
through subsequent increments until the full system is complete. Each increment builds
upon the previous one, resulting in a refined and improved final product.
This model is widely used in projects requiring early delivery and continuous user
feedback, such as web applications, financial systems, and commercial software products.
Diagram
Requirements Analysis
System Design
Each increment goes through the full development cycle, and the process repeats until the
final software is complete.
1. Requirements Analysis
In this phase, the requirements for the overall system are collected and analyzed. The
system is then divided into increments based on functionality, user priority, or logical
grouping. The most critical features are developed first to ensure that the user can start
using the basic system as early as possible.
Deliverables:
2. System Design
The design phase involves creating the overall system architecture that can accommodate
incremental growth. The architecture must be robust and flexible enough to support
future increments without significant rework.
Design documents are prepared for each increment, including data structures, database
design, and interface layouts. During this stage, decisions about modularization and
integration strategy are crucial, as poorly designed architecture can lead to major issues
during later increments.
Deliverables:
Development begins with the implementation of the core functions defined in the first
increment. The coding process follows standard software engineering principles and best
practices. Once developed, the increment undergoes unit testing and integration testing
to ensure that all modules within that increment work together correctly.
After successful testing, the increment is delivered to the customer for use and feedback.
This early delivery allows for real-world validation of functionality, usability, and
performance.
Once the first increment is deployed, the client or end-users interact with it and provide
feedback. This feedback helps the development team identify issues, missing features,
and areas for improvement.
Based on user feedback and project requirements, planning for the next increment begins.
The process repeats — new requirements are analyzed, designs are updated, and the next
increment is developed.
This iterative loop continues until the final system is completed, thoroughly tested, and
accepted by the client.
When all planned increments have been developed and tested individually, they are
integrated to form the complete system. The full integration is followed by system
testing, which ensures that all components work together seamlessly.
System testing focuses on performance, reliability, and scalability. It ensures that the
entire system meets the functional and non-functional requirements defined at the
beginning of the project.
Since the Incremental Model delivers working software at regular intervals, maintenance
and upgrades become smoother and more efficient compared to traditional models.
2. Flexibility to Changes:
Since the development happens in increments, changes in requirements can be
easily incorporated into future increments without affecting the entire system.
3. Reduced Risk:
Potential risks are identified and addressed early because each increment is
developed and tested separately.
3. Planning Overhead:
Continuous planning and iteration require detailed scheduling and management,
increasing project overhead.
4. Cumulative Costs:
Although each increment appears small, the cumulative cost of repeated testing,
feedback, and deployment can become significant.
6. Documentation Challenges:
Since development is continuous, maintaining up-to-date documentation across
multiple increments can be challenging.
4. Rapid Application Development (RAD) Model
Description
The RAD Model was introduced in the 1980s by James Martin, as a response to the
limitations of traditional software development models like Waterfall, which were rigid
and time-consuming. RAD adopts an incremental and iterative approach, where
software is developed in small modules that can be quickly designed, built, and tested in
collaboration with the users.
The primary goal of RAD is to reduce development time while maintaining flexibility
and ensuring user satisfaction. It achieves this by using prototypes, automated tools,
and parallel development of modules. Because of its interactive nature, RAD is most
effective for projects that can be modularized and require quick delivery, such as
business applications, information systems, and web-based software.
Diagram
Requirements Planning
User Design
Construction
Cutover (Implementation)
Each phase of the RAD model is iterative and involves continuous user feedback and
refinement until the system meets user expectations.
Detailed Explanation of Phases
This is the initial phase of the RAD model and involves detailed discussions with
stakeholders to understand the project goals, scope, and constraints. The main objective is
to establish a clear understanding of the system’s objectives, data flow, and
functionalities.
During this phase, feasibility studies and risk assessments are also carried out to ensure
that the project can be developed within time and cost constraints.
The User Design phase is one of the most critical components of the RAD Model. It is
based on the concept of Joint Application Development (JAD), where users,
developers, and designers work together in iterative workshops to design and refine
system prototypes.
Users are actively involved in developing screen layouts, process models, and data
models. Through rapid prototyping tools, mock-ups of the system are created and
demonstrated to the users for immediate feedback.
This collaboration ensures that the evolving prototype accurately represents user needs
and expectations. Each prototype iteration helps refine both functionality and user
experience.
3. Construction Phase
In this phase, actual software development takes place. Using the prototypes and designs
from the User Design phase, developers begin coding and building the functional system
components. The focus is on rapid development, component reusability, and
automation.
Tools like code generators, database builders, and fourth-generation languages (4GLs)
are commonly used to speed up the process. Different teams may work on separate
modules in parallel, ensuring faster overall delivery.
Frequent testing is performed as the system evolves, ensuring that bugs are identified and
resolved immediately. Since user feedback continues throughout this phase, changes can
be made quickly without disrupting the development flow.
The final phase of the RAD Model involves integrating and deploying the fully
developed system into a live environment. This phase includes final system testing, data
conversion, user training, and changeover to the new system.
Since users have been involved throughout development, acceptance testing is typically
smooth and quick. The system goes live after final approvals, and minor post-deployment
adjustments are made as required.
3. Improved Flexibility:
Changes in requirements can be accommodated easily since the model supports
continuous feedback and iteration.
The Prototyping Model is especially useful when the requirements are not well-defined
or are expected to evolve as the project progresses. It provides an opportunity for
developers and users to collaborate closely and refine the system’s design and
functionality through repeated iterations.
The model was developed to reduce the risks associated with misunderstandings or
incomplete requirements in traditional approaches like the Waterfall model. It ensures
that the final system is closely aligned with user expectations by continuously
incorporating user feedback into the design.
This model is often used in user interface (UI) design, decision-support systems, and
interactive applications, where user experience and visual design are critical.
Diagram
Requirements Gathering
Quick Design
Build Prototype
User Evaluation
↓
Engineer Final Product
1. Requirements Gathering
The process begins with an initial collection of requirements from the stakeholders.
Unlike the Waterfall model, this phase focuses only on gathering broad, high-level
requirements rather than detailed specifications.
The key objective is to understand the basic system needs, such as input data, expected
outputs, and core functionalities. Since user requirements are often uncertain or
incomplete, this phase provides a starting point that will later be refined through
prototyping.
2. Quick Design
Once the initial requirements are gathered, a quick design is prepared. This design
outlines the basic framework of the proposed system — including major modules,
interfaces, data flow, and interactions.
The design is not detailed at this stage but focuses on representing the parts of the system
that will be visible to users, such as screen layouts, menus, and reports. This allows users
to get an early sense of how the final system might look and feel.
3. Build Prototype
4. User Evaluation
Once the prototype is ready, it is presented to the users for evaluation. The users interact
with the system, test its features, and provide feedback on usability, functionality, and
overall design.
This step is vital because it bridges the gap between user expectations and developer
understanding. Any misunderstandings or incorrect assumptions about requirements are
identified and corrected at this stage.
5. Refinement of Prototype
Based on the feedback collected from users, the prototype is refined to better match user
expectations. This cycle of building, testing, and refining may be repeated several times
until the users are satisfied that the prototype accurately represents their needs.
This iterative process allows continuous improvement of both design and functionality
before the actual development of the final system begins.
After the prototype has been validated by users, it is discarded or evolved into the final
product. The complete software system is developed using standard software engineering
practices.
Detailed design documents, coding, testing, and integration are carried out during this
phase. The final system now includes all functional and performance requirements.
Once development is complete, the system undergoes rigorous testing to ensure that it
meets the specified requirements and performs reliably under various conditions.
Testing phases such as unit testing, integration testing, and system testing are
conducted. After successful testing, the final product is deployed in the user environment.
Post-deployment support and maintenance activities are then initiated.
6. Encourages Innovation:
Prototyping encourages experimentation with new ideas, technologies, and
designs, leading to innovative solutions.
1. Time-Consuming Process:
Repeated cycles of building and refining prototypes can extend the overall project
timeline if not managed properly.
2. Possible Scope Creep:
Continuous feedback and changes may lead to unplanned feature additions,
causing delays and increased costs.
3. Inadequate Documentation:
Since the focus is on rapid development, formal documentation may be neglected,
making future maintenance challenging.
4. Prototype Misinterpretation:
Users may mistake the prototype for the final product and underestimate the time
and resources required to complete it.
Unlike linear models, which move strictly from one phase to another, the Spiral Model
focuses on continuous refinement through multiple iterations. Each spiral results in a
more complete version of the system, and with every loop, the product evolves and
improves.
The key strength of the Spiral Model lies in its risk management capability. At the
beginning of each spiral, potential risks are identified, analyzed, and mitigated. This
makes it an ideal model for large, complex, or high-risk projects, such as defense,
aerospace, or enterprise-level systems, where the cost of failure is extremely high.
Diagram
+-------------------------+
| Customer Communication |
+-------------------------+
+------------------+
| Planning Phase |
+------------------+
+------------------+
| Risk Analysis |
+------------------+
+------------------+
| Engineering |
+------------------+
+------------------+
| Evaluation |
+------------------+
Each loop of the spiral represents one phase of the software process, and the radius of the
spiral indicates the increasing cost and time commitment.
Each iteration or spiral cycle in this model consists of four major phases:
1. Planning Phase
The first step of every spiral iteration involves planning and defining objectives for that
specific cycle. The development team works closely with stakeholders to identify:
The planning phase also includes resource allocation, schedule estimation, and defining
deliverables. Clear planning ensures that both the team and stakeholders have a common
understanding of the iteration’s purpose and expected output.
This phase is the heart of the Spiral Model. Here, potential risks and uncertainties
related to the project are identified, analyzed, and mitigated. Risks may involve technical
challenges, cost overruns, schedule delays, or unclear requirements.
Various techniques, such as simulations, modeling, and prototyping, are used to explore
possible alternatives and find the best approach to reduce risk exposure. If any risk
appears too high, the project can be terminated early, saving valuable time and resources.
For example, if a new technology is uncertain, a prototype may be developed to test its
feasibility before proceeding further.
3. Engineering Phase
Once the risks have been analyzed and mitigated, the actual development (engineering)
of the system begins. This phase involves:
Integrating components
Depending on the iteration, the engineering phase may involve creating a prototype, a
partial build, or the complete system. Each build incrementally adds functionality,
ensuring gradual progress and refinement.
4. Evaluation Phase
After engineering, the developed product is presented to the stakeholders for evaluation
and feedback. The customer reviews the system to ensure that it aligns with expectations,
and any suggestions or changes are noted for future spirals.
This stage provides an opportunity for continuous improvement based on real user
feedback. If required, changes are incorporated in the next spiral, leading to an
increasingly refined product with every cycle.
5. Subsequent Spirals
The process repeats for multiple spirals until the final system is fully developed and
accepted by the client. Each spiral adds new features, reduces risk, and brings the product
closer to completion.
The final spiral typically involves full integration, system testing, deployment, and
maintenance planning.
3. Customer Involvement:
The customer is actively involved at the end of each spiral, ensuring that the
product aligns with user expectations and requirements.
3. Difficult to Manage:
With multiple spirals running simultaneously, project tracking and coordination
can become challenging.
5. Time-Consuming:
Repeated iterations and evaluations can extend development time if not managed
efficiently.
6. Overemphasis on Risk:
In some cases, too much focus on risk analysis may delay actual development
work, leading to slower progress.
7. Extreme Programming (XP) Model
Description
This model is widely used in projects with dynamic or unclear requirements, such as
web applications, startups, or products under constant user feedback.
Diagram
↑ ↓
Continuous Feedback
The XP process is iterative — each cycle delivers a small, working release that adds
value to the system.
1. Planning Phase
The XP process begins with planning, which involves identifying user requirements in
the form of “user stories.” These user stories are short, simple descriptions of desired
features written from the customer’s perspective.
Customers and developers collaborate to prioritize these stories based on business value
and technical feasibility. Each iteration (also known as an iteration or release cycle)
typically lasts one to three weeks and delivers a usable increment of the product.
The planning phase ensures that the most critical features are developed first and that
changes can be easily accommodated in subsequent iterations.
2. Design Phase
XP emphasizes simple and flexible design. Instead of creating heavy design documents
upfront, developers focus on designing only what is necessary for the current iteration.
A key XP principle, “You Aren’t Gonna Need It” (YAGNI), means that developers
avoid designing features or modules that are not immediately required.
3. Coding Phase
The coding phase is the heart of the XP process. Developers work in pairs — a practice
known as Pair Programming — where one developer writes code (the driver) while the
other reviews it (the observer). This ensures continuous peer review, reduces defects, and
improves code quality.
XP also relies on collective code ownership, meaning any developer can modify any part
of the codebase. This approach promotes responsibility and teamwork while avoiding
bottlenecks caused by code silos.
Coding is done incrementally, guided by the user stories planned for that iteration.
4. Testing Phase
In XP, testing is not a separate phase but an integral and continuous activity throughout
the development process. Developers write unit tests before coding, following the Test-
Driven Development (TDD) practice. This ensures that every line of code is written with
a clear purpose and verified for correctness.
Automated testing tools are often used to facilitate continuous testing, allowing
developers to detect regressions quickly.
5. Release Phase
After a set of iterations, the system is integrated and delivered to the customer as a
working product. Each release adds new functionality while maintaining stability.
The short release cycles ensure that the customer receives regular updates and can test
the system in real-world conditions. Feedback collected from the release is then used to
plan the next iteration, ensuring continuous improvement.
XP is based on five key values and a set of core practices that guide team behavior and
workflow:
Key Values
4. Courage: Embrace changes, refactor code, and fix problems early without
hesitation.
Core Practices
3. Adaptability to Change:
The iterative nature of XP allows requirements to evolve with minimal disruption
to ongoing work.
4. Minimal Documentation:
The focus on working code over documentation can make maintenance and
onboarding challenging later.
The Scrum Model is one of the most popular and widely used frameworks under the
Agile Software Development umbrella. It is designed to help teams collaborate, adapt,
and deliver high-quality software quickly through short, time-boxed iterations known
as sprints. Scrum promotes transparency, inspection, and adaptation, enabling teams
to respond to changing requirements effectively.
The term “Scrum” originates from rugby, where players work together to move the ball
down the field — symbolizing teamwork, coordination, and adaptability. In software
engineering, Scrum emphasizes self-organizing teams, incremental progress, and
frequent feedback from stakeholders.
Unlike traditional models such as Waterfall, Scrum does not define a fixed sequence of
stages. Instead, it follows an iterative and incremental approach. The product is
developed in small increments, and each sprint delivers a potentially shippable product.
Regular reviews ensure that the product remains aligned with customer expectations.
Scrum is particularly effective for projects where requirements are dynamic, ambiguous,
or evolving, such as web applications, SaaS products, and mobile app development.
Diagram
Product Backlog
Sprint Planning
↓
Increment (Working Software)
Scrum operates around a set of roles, artifacts, and events (ceremonies) that define how
work is planned, executed, and reviewed.
1. Roles in Scrum
1. Product Owner:
Represents the customer or stakeholder. Responsible for defining features,
prioritizing tasks, and maintaining the Product Backlog — a dynamic list of
features, changes, and fixes. The Product Owner ensures the development team is
working on the most valuable features first.
2. Scrum Master:
Acts as a facilitator and coach for the team. The Scrum Master removes
obstacles, enforces Scrum principles, and ensures smooth collaboration. They are
not a project manager but a servant-leader who helps the team remain productive
and focused.
3. Development Team:
A cross-functional, self-organizing group of professionals (developers, testers,
designers, etc.) responsible for delivering a potentially shippable product
increment at the end of each sprint.
2. Scrum Artifacts
1. Product Backlog:
A prioritized list of all desired features, enhancements, and bug fixes. Items in the
backlog are called Product Backlog Items (PBIs) and are refined throughout the
project.
2. Sprint Backlog:
A subset of the Product Backlog selected for implementation in the current sprint.
The sprint backlog also includes tasks needed to turn these features into a working
product increment.
3. Increment:
The actual, working piece of software delivered at the end of each sprint. It must
meet the Definition of Done (DoD) — the team’s agreed criteria for completion.
1. Sprint Planning:
Each sprint begins with a planning meeting, where the team selects high-priority
items from the Product Backlog to include in the Sprint Backlog. The goal of
Sprint Planning is to define what will be done and how it will be achieved
during the sprint.
3. Sprint Review:
Held at the end of each sprint to demonstrate the completed product increment to
stakeholders. Feedback gathered during this meeting is used to refine the Product
Backlog for the next sprint.
4. Sprint Retrospective:
After the Sprint Review, the team reflects on the sprint process. They discuss
what went well, what didn’t, and how they can improve in the next sprint. This
fosters continuous process improvement and team learning.
4. The Sprint Cycle
A Sprint is the core of the Scrum framework. It typically lasts between 2 to 4 weeks and
results in a potentially shippable product increment.
During each sprint:
By the end of the sprint, the team produces a working version of the software that can be
released or further improved in the next sprint.
2. Customer-Centric Development:
Frequent sprint reviews allow customers to see progress regularly and provide
feedback, ensuring the final product meets expectations.
4. Continuous Improvement:
Retrospectives and feedback loops ensure that the team constantly learns and
improves its processes.
3. Scope Creep:
Frequent changes and additions to the Product Backlog can lead to uncontrolled
scope expansion.
4. Difficult to Scale:
Managing multiple Scrum teams working on the same product can be complex
without proper coordination (though frameworks like SAFe help).
The word “Kanban” originates from the Japanese term meaning “visual signal” or
“card”, and it was first developed as part of the Toyota Production System (TPS) in the
1940s. In software engineering, the Kanban methodology was popularized by David J.
Anderson in the early 2000s.
Unlike time-bound frameworks such as Scrum, Kanban allows teams to deliver features
continuously as soon as they’re ready, making it ideal for maintenance projects,
support teams, or continuous deployment environments.
Diagram
Each column on the Kanban board represents a stage in the workflow, and tasks move
from left to right as they progress toward completion.
While Kanban does not follow strict phases like Waterfall or Scrum, it consists of a flow-
based system that tracks tasks through defined workflow stages. The most common
stages are as follows:
1. To Do (Backlog)
All pending tasks or features are listed in the To Do column. These tasks are usually
prioritized by business value or urgency.
The backlog acts as a pool of upcoming work, from which team members pull new tasks
when they have capacity. Kanban promotes a “pull” system — work is pulled based on
team capacity rather than pushed from management, preventing overload.
2. In Progress
Tasks that are currently being worked on move to the In Progress column. This stage
helps track active work and identify resource utilization.
3. Testing (Verification)
After development, tasks move to the Testing stage. Here, the functionality,
performance, and reliability of the feature are verified against the requirements.
Testing in Kanban is continuous rather than sequential, ensuring that quality checks are
integrated into the workflow. Teams can add extra stages (like “Code Review” or “User
Acceptance Testing”) to suit their processes.
4. Done (Completion)
Once a task passes all quality checks and reviews, it moves to the Done column. This
signifies that the task is complete, deployed (if applicable), and ready for use.
Regularly reviewing completed tasks helps teams measure performance and identify
areas of improvement in their workflow. Metrics such as cycle time (the time taken from
“To Do” to “Done”) and throughput (tasks completed per time period) are used to track
efficiency.
5. Continuous Improvement
Unlike other models that end after project delivery, Kanban emphasizes Kaizen
(Continuous Improvement). Teams regularly review their performance data to identify
bottlenecks, inefficiencies, or delays.
Using metrics like lead time, cycle time, and cumulative flow diagrams, teams analyze
workflow patterns and make incremental adjustments. This ensures that processes evolve
naturally over time without causing disruptions.
Kanban is built on four core principles and six foundational practices that guide its
implementation in software development.
Core Principles
3. Manage Flow: Monitor and optimize how tasks move through the system.
5. Implement Feedback Loops: Use regular meetings and metrics for continuous
feedback.
4. Continuous Delivery:
Teams deliver features or fixes as soon as they’re ready, enabling faster value
delivery to customers.
6. Data-Driven Improvement:
Quantitative metrics (like lead time and throughput) help teams make objective
decisions for continuous enhancement.
Demerits of the Kanban Model
1. Lack of Time-Boxing:
Without defined sprint boundaries, deadlines can become unclear, making long-
term planning more difficult.
2. No Defined Roles:
The absence of formal roles can lead to confusion regarding responsibilities in
larger teams.