Lesson 3.
Agile Methodologies in Software Development
Specific Objectives:
By the end of the lesson, students should be able to:
1. State the components of the Agile methodologies and their importance in modern software
development.
2. Compare Agile with traditional SDLC models (e.g., Waterfall).
3. Discuss key Agile practices (e.g., Scrum, Kanban, sprints, daily stand-ups).
1. Definition of Agile Methodology:
Agile is a software development approach that emphasizes flexibility, collaboration, and
customer-centric iterative progress. Unlike traditional models, which focus on rigid phases and
complete specifications before
development begins, Agile promotes
adaptive planning and encourages rapid,
continuous delivery of functional software.
Agile methodologies are built around short
cycles called iterations or sprints, and this
allows development teams to frequently
reassess project direction based on
feedback.
The agile methodologies follow the project development cycle as presented in the figure.
2. Importance of Agile in Modern Software Development:
I. It has the ability to handle the dynamic nature of projects. As customer needs, market
conditions, and technologies evolve, Agile allows teams to adjust quickly, avoiding the
rigidity of traditional methods.
1
II. Agile focuses on delivering what the customer truly wants by integrating continuous
feedback into the development process. Regular interaction with stakeholders ensures
that the software aligns with real-world needs.
III. Agile reduces the time it takes to deliver working software. Since Agile projects are
developed in incremental cycles, teams can launch a minimal viable product (MVP) and
continuously improve it. This ensures faster delivery of values to the customer.
IV. Agile ensures that projects are broken down into smaller, manageable components,
thereby reducing the risk of project failure. Frequent releases and early feedback allow
teams to catch and address potential issues early in the development cycle.
3. The Agile Manifesto and Its Core Principles:
The Agile Manifesto was created in 2001 by software developers where they outline the values
and principles behind Agile development. By way of summary, the manifesto emphasizes:
Individuals and Interactions over Processes and Tools: While tools and processes are
important, Agile prioritizes human collaboration and problem-solving. The interactions
between team members, stakeholders, and customers are seen as the driving force
behind successful projects.
2
Working Software over Comprehensive Documentation: Agile values the creation of
functional, usable software that meets user needs over exhaustive documentation.
Though documentation is not neglected, the focus remains on delivering working
software at every stage of the project.
Customer Collaboration over Contract Negotiation: In Agile, customer feedback is
constantly integrated throughout the development process. Agile promotes a
partnership approach, where developers and customers work together to refine the
product, rather than adhering strictly to pre-defined contractual obligations.
Responding to Change over Following a Plan: Instead of following a fixed plan, Agile
allows teams to embrace and respond to change as it occurs. This ensures the project
remains aligned with evolving customer requirements and external circumstances.
Note, these values are further supported by 12 principles, which advocate for delivering value
early, improving collaboration, maintaining a sustainable work pace, and encouraging
continuous improvement. This mean in essence, that Agile methodologies enable development
teams to deliver high-quality software in an environment that thrives on collaboration,
flexibility, and responsiveness to change
4. Comparison of Agile Methodologies with Traditional SDLC Models
I. SDLC follows a sequential and phased methodology, while Agile is adaptive and
collaborative.
II. SDLC has predefined stages (planning, design, development, testing, deployment),
while Agile breaks the project into iterations (sprints).
III. SDLC requires thorough documentation, while Agile focuses on fast delivery.
IV. SDLC projects don't have fixed time frames, while Agile projects have precisely-timed
sprints.
V. Agile iterations are shorter than older iterative SDLCs.
Read more on this: https://www.geeksforgeeks.org/difference-between-agile-and-sdlc/
3
5. Benefits of Agile Over Traditional Models in Software Development Studios:
1. Faster Time to Market: Agile allows teams to deliver smaller, functional increments of the
software more quickly than as is seen in traditional models. This is crucial in fast-paced
industries where speed and time-to-market are key competitive advantages. Since the
focus is on delivering the most valuable features first, Agile teams can release usable
software early in the development process.
2. Improved Risk Management: Agile reduces risk by promoting frequent testing and
feedback. Each sprint gives teams the opportunity to identify issues early, address them
immediately, and adjust the project direction if needed. In contrast, in other traditional
models like Waterfall, the rigid structure often leads to discovering major issues only
after significant time and resources have been invested.
3. Enhanced Customer Satisfaction: Because Agile involves the customer throughout the
development process, the product is more likely to meet their expectations. Regular
interaction with stakeholders ensures that the product evolves based on real-time
feedback, which is often not possible in Waterfall where the customer may only see the
final product.
4. Greater Adaptability: In dynamic environments where requirements and market
conditions can change quickly, Agile’s flexibility allows teams to adjust their priorities on
the fly. Hence,new features can be added or existing ones modified based on changing
customer needs, without disrupting the overall development process.
5. Team Collaboration and Empowerment: Agile fosters a collaborative work environment
where team members have more autonomy to make decisions and adapt their work.
Hence, regular communication through daily stand-ups and review meetings ensures
alignment and clarity within the team. In contrast, Waterfall often follows a top-down
management approach where decision-making is more centralized.
4
6. Key Agile Practices
1. Scrum:
Scrum is one of the most widely used frameworks in Agile software development. It is designed
to help teams deliver products in short, iterative cycles while remaining flexible and responsive
to changing requirements. It is an Agile framework that breaks work into sprints (short, time-
boxed iterations, typically 1-4 weeks) during which teams complete a set amount of work from
a prioritized list of tasks. It emphasizes self-organization, collaboration, and frequent reflection
to improve the process. Scrum is made possible by different components: roles taken by
individuals, artifacts – realized in the process, and ceremonies engaged in the framework.
1) Scrum Roles:
a) Product Owner: Represents the stakeholders and customers. Responsible for defining
and prioritizing the product backlog, ensuring that the team is always working on the
highest-value tasks.
b) Scrum Master: Acts as a facilitator and coach for the team. They remove impediments
that block the team’s progress and ensure Scrum practices are followed, but they do not
manage the team.
c) Development Team: A cross-functional group responsible for delivering a working
product at the end of each sprint. They are self-organizing, meaning they determine how
best to accomplish their tasks without external control. This include – DBAs, UI/UX
designers, Programmers, Designers etc.
2) Scrum Artifacts:
a) Product Backlog: A prioritized list of features, fixes, and improvements that need to be
implemented in the product. The Product Owner is responsible for maintaining this list.
b) Sprint Backlog: The subset of the Product Backlog items chosen for the current sprint,
along with a plan to deliver them. The development team is responsible for selecting and
managing the Sprint Backlog.
5
c) Increment: The sum of all Product Backlog items completed during a sprint, plus the value
of all previous increments. Each increment must be a working, releasable product.
3) Scrum Ceremonies:
a) Sprint Planning: A meeting where the team discusses the highest-priority items from the
Product Backlog and decides which items to include in the next sprint.
b) Daily Stand-up: A short (15 minutes) meeting where team members discuss progress,
upcoming work, and any roadblocks.
c) Sprint Review: Held at the end of the sprint, this is where the team demonstrates the
work completed during the sprint to the Product Owner and other stakeholders.
d) Sprint Retrospective: A meeting where the team reflects on the sprint process to identify
what went well and what can be improved in the next sprint.
2. Kanban:
Kanban is another Agile practice used to visualize and manage workflows. Unlike Scrum, which
uses time-boxed iterations, Kanban focuses on continuous delivery without strict deadlines.
Kanban majorly works with a board where the progress of the work is regularly updated. The
helps in the following:
1) Visualizing Workflow on a Kanban Board: The core of Kanban is the Kanban board, a visual
representation of the workflow. Tasks are represented as cards, and the board is divided
into columns such as "To Do," "In Progress," and "Done." This helps teams visualize the
state of tasks and identify bottlenecks in the process. In the modern age, this is
implemented in many project management software.
2) Managing Work-in-Progress (WIP): Kanban sets WIP limits for each stage of the workflow
to prevent overloading the team and ensure a steady flow of work. This encourages focus
and completion of tasks before starting new ones, preventing multitasking and improving
efficiency.
6
3) Continuous Delivery vs. Fixed Iterations: In Kanban, teams work on tasks as they come in,
without predefined sprint cycles. This allows for continuous delivery, where tasks are
completed and released as soon as they are ready. This contrasts with Scrum, where work
is delivered at the end of a sprint. (As regards delivery, explain is the major difference
between Scrum and Kanban?)
3. Sprints:
A sprint is a time-boxed iteration in Agile, commonly used in Scrum, where the team focuses on
completing a specific set of tasks from the Product Backlog.
A sprint is a fixed period (usually 1-4 weeks) during which the team commits to completing
specific tasks. The purpose of a sprint is to provide a regular pace for delivering functional
software that can be tested and reviewed by stakeholders.
Sprints operate on a time-boxed schedule, meaning they have a fixed start and end date. This
creates a sense of urgency and ensures that teams focus on delivering something valuable within
a defined period. Teams meet regularly during the sprint to track progress and adjust plans as
needed. At the end of each sprint, the goal is to deliver a working increment of the product. This
ensures that stakeholders can see progress frequently and provide feedback, reducing the risk
of misunderstandings or missed requirements.
4. Daily Stand-ups:
The daily stand-up is a short, time-boxed meeting (usually 15 minutes) held every day during a
sprint. It helps keep the team aligned and informed about each other's work. The primary
purpose of the daily stand-up is to track progress, identify roadblocks, and coordinate efforts.
During the daily stand-ups, each team member briefly discusses:
1. What they accomplished since the last stand-up.
2. What they plan to do before the next stand-up.
3. Any impediments or blockers capable of preventing progress.
7
Daily stand-ups are short by design to encourage focus and efficiency. Team members stand
during the meeting (hence the name), which helps keep the meeting brief and to the point. The
Scrum Master coordinates and ensures the meeting stays on track and within the time limit.
The stand-up encourages team collaboration, as members become aware of each other's work
and can offer help if needed. It also fosters transparency, as everyone is accountable for their
progress and challenges, which can be addressed immediately.
In conclusion, each of these Agile practices plays a key role in enhancing the flexibility, speed,
and collaboration of software development teams. Scrum provides structure with its roles and
ceremonies, while Kanban focuses on optimizing flow and reducing bottlenecks. Sprints ensure
regular delivery of working software, and daily stand-ups promote transparency and team
alignment.