chapter-3 v3
chapter-3 v3
SOEng2051
12/28/2024 1
12/28/2024 2
Introduction
• Key Agile Values and Principles
12/28/2024 3
Introduction
• Agile Principles
• Emphasis on satisfying the customer, embracing change, delivering
working software frequently, and maintaining sustainable
development, among others.
• Agile Frameworks
• Agile is an umbrella term, so it encompasses several frameworks.
Here are some of the most popular ones:
12/28/2024 4
Introduction
12/28/2024 5
Introduction
Scrum
12/28/2024 6
Introduction
• Extreme Programming (XP)
12/28/2024 7
Introduction
• Core Agile Practices
• a. User Stories
• Small, user-focused requirements written in plain language (e.g.,
"As a user, I want to search products so I can quickly find what I
need").
• Capture user needs without diving into technical details, keeping
teams focused on the user's perspective.
12/28/2024 8
Introduction
• Core Agile Practices
b. Backlogs
• Product Backlog: A prioritized list of all desired product features.
• Sprint Backlog: A subset of tasks from the Product Backlog
selected for the current sprint.
12/28/2024 9
Introduction
• Core Agile Practices
• C. Daily Stand-ups
• Short, focused team meetings (usually 15 minutes) to discuss
progress, roadblocks, and plans for the day.
• Encourages accountability, real-time feedback, and quick decision-
making.
12/28/2024 10
Introduction
• Benefits of Agile
12/28/2024 12
Introduction
• Agile in Real Life: A Case Study
• Consider a software company building a new e-commerce app
using Agile Scrum:
• Sprint Planning: The team begins by creating a product backlog
of features (e.g., login, product catalog, shopping cart).
• Daily Stand-ups: Team members update each other on progress,
blockers, and next steps.
• Sprint Review: At the end of the sprint, the team demonstrates a
working login feature to stakeholders, receiving feedback.
12/28/2024 13
Introduction
• Sprint Retrospective: The team discusses what went well
(efficient collaboration), what could improve (better time
estimates), and decides to apply changes in the next sprint.
12/28/2024 14
Introduction
• differences between Agile, Incremental, and Iterative
approaches
• Agile
• Definition: Agile is a project management and product
development approach that emphasizes flexibility, collaboration,
and customer feedback. Agile typically combines both incremental
and iterative processes.
• Example: In software development, a team builds an app in small,
functional increments over multiple sprints. Each sprint (typically 1-
2 weeks) delivers a new set of features, tested and adjusted based
on customer feedback before the next sprint starts.
12/28/2024 15
Introduction
• Incremental
• Definition: Incremental development builds a product piece-by-
piece, delivering parts of the product (increments) over time. Each
increment adds functionality until the final product is complete.
• Example: Building a word processor incrementally might start with
a basic text editor. The first increment could add spell check, the
second grammar check, and the third formatting features, with
each part fully functional upon completion.
12/28/2024 16
Introduction
• Iterative
• Definition: Iterative development involves creating a basic version
of the product (a prototype) and then refining it repeatedly. Each
iteration improves the product based on feedback or testing.
• Example: Developing a game iteratively may start with a simple
prototype featuring only basic gameplay. In each iteration, the
team refines graphics, gameplay mechanics, and storylines,
gradually enhancing the game until it’s ready for release.
12/28/2024 17
Introduction
• Summary of Differences
• Agile integrates incremental and iterative methods to
continuously deliver and refine products.
• Incremental focuses on adding complete parts to build up a
product.
• Iterative focuses on revising and improving the same initial
version of a product until it meets desired quality.
12/28/2024 18
…
12/28/2024 19
Phase of Agile Model
• 1. Requirements Gathering
• Purpose: To collect initial requirements, understand the project’s
scope, and identify key objectives from stakeholders.
• Approach: In Agile, requirements gathering is a continuous,
evolving process. Instead of setting all requirements upfront, Agile
teams gather initial requirements to understand the project’s
purpose, and then refine or add requirements in each iteration
based on feedback.
12/28/2024 20
Phase of Agile Model
• Output: A prioritized list of user stories or product backlog items
that define initial project needs.
• Example: For a banking app, initial requirements might include
user authentication, viewing account balance, and transaction
history. These requirements are written as user stories and
organized in a prioritized backlog for the development team.
12/28/2024 21
Phase of Agile Model
• 2. Design the Requirements
• Purpose: To plan the architecture, design, and technical approach
required to build the solution.
• Approach: Agile focuses on adaptive design rather than detailed,
upfront design. Teams create a flexible architecture that can
evolve, allowing for iterative improvements in response to
feedback.
12/28/2024 22
Phase of Agile Model
• Output: Basic design models, diagrams, or prototypes that act as a
foundation for the first iteration, with additional design details
added in future iterations.
• Example: For a social media app, the team might initially design a
simple profile page layout, which will later be expanded to include
features like photo sharing or friend lists based on iterative
feedback.
12/28/2024 23
Phase of Agile Model
• 3. Construction/Iteration
• Purpose: To develop the product in increments (usually in sprints)
by coding, integrating, and testing small parts of the functionality.
• Approach: Each sprint or iteration focuses on building a subset of
features. At the end of each sprint, the team delivers a potentially
shippable product increment that includes new or improved
features.
12/28/2024 24
Phase of Agile Model
• Output: A working increment of the product with added
functionality after each sprint, ready for stakeholder review.
• Example: For an e-commerce site, the first sprint might focus on
setting up product browsing, the next sprint on adding a shopping
cart, and the following one on implementing checkout functionality.
Each sprint builds on the last.
12/28/2024 25
Phase of Agile Model
• 4. Testing/Quality Assurance
• Purpose: To ensure that the functionality meets the requirements
and works reliably.
• Approach: Testing is integrated throughout the Agile process
(rather than only at the end) with frequent quality checks, unit
tests, integration tests, and user testing within each sprint. Defects
are identified and fixed as they arise, maintaining high quality.
12/28/2024 26
Phase of Agile Model
• Output: A bug-free, quality-checked increment ready for
deployment.
• Example: In a healthcare app, automated tests might validate that
each new feature meets security and privacy standards, while
manual testing ensures user-friendly navigation and functionality.
• .
12/28/2024 27
Phase of Agile Model
• 5. Deployment
• Purpose: To release the latest product increment to end-users or
stakeholders.
• Approach: Deployment in Agile can be done frequently and
incrementally, depending on the readiness and value of each
increment. Continuous integration and deployment practices help
automate the release process, making it easier to roll out new
features and fixes.
• .
12/28/2024 28
Phase of Agile Model
• Output: A live product that end-users can interact with, updated
frequently to reflect the latest completed features.
• Example: A financial app might release a basic budgeting tool in
the first deployment, then regularly deploy updates with new tools,
such as investment tracking or spending insights, as they’re
completed.
12/28/2024 29
Phase of Agile Model
• 6. Feedback
• Purpose: To gather insights and suggestions from stakeholders
and users about the latest increment.
• Approach: Agile encourages frequent feedback after each iteration
to ensure that the product aligns with user needs and expectations.
This feedback loop allows the team to make adjustments quickly
and guides future development.
12/28/2024 30
Phase of Agile Model
• Output: Feedback gathered from stakeholders, end-users, or team
members, which is then used to adjust priorities and refine future
iterations.
• Example: In a fitness app, users might provide feedback asking for
more detailed tracking features. The team then uses this feedback
to prioritize features like workout history and progress graphs in the
next sprint.
12/28/2024 31
Agile Testing Methods
• Agile testing methods are designed to integrate testing throughout
the Agile development process, ensuring that quality checks
happen frequently and feedback is quickly incorporated. This
approach helps Agile teams maintain high standards of quality
without slowing down the rapid development cycles typical in Agile.
Key Agile testing methods include:
12/28/2024 32
Agile Testing Methods
• Acceptance Test-Driven Development (ATDD)
• Purpose: ATDD involves creating tests based on acceptance
criteria before coding begins to ensure that each feature meets the
agreed requirements.
• Process: Product owners, developers, and testers collaborate to
write acceptance tests, which are usually expressed in simple, user-
friendly language. These tests guide development and verify if the
feature fulfills the user requirements.
• Example: For a login feature, the acceptance test might check if
users can log in with valid credentials and are prevented from
logging in with incorrect details.
12/28/2024 33
Agile Testing Methods
• Unit Testing
• Purpose: Unit testing is performed on the smallest testable parts
of code (usually functions or methods) to ensure they work as
expected.
• Process: Developers write unit tests as they develop each feature,
checking that individual components function independently. Unit
tests are often automated and run regularly to catch bugs early.
• Example: For an e-commerce site, a unit test for the “add to cart”
function checks if it correctly updates the cart count and calculates
the total price.
12/28/2024 34
Agile Testing Methods
• Test-Driven Development (TDD)
• Purpose: TDD aims to write tests before developing the
corresponding code, ensuring code quality and helping developers
clarify requirements.
• Process: The TDD cycle consists of writing a failing test (Red),
writing code to pass the test (Green), and refactoring for
improvement (Refactor). This cycle repeats for every new feature or
function.
• Example: If implementing a search feature, the developer would
first write a test expecting certain search results and then code
until the feature passes this test.
12/28/2024 35
Agile Testing Methods
• Smoke Testing
• Purpose: Smoke testing, or "sanity testing," checks the basic
functionality of an application to confirm that it is stable enough for
further testing.
• Process: This test is typically performed on initial builds, ensuring
core features work without in-depth testing.
• Example: After a new deployment, a smoke test would verify that
users can log in, navigate the app, and access primary features
without issues.
12/28/2024 36
When to use the Agile Model?
• When frequent changes are required.
• When a highly qualified and experienced team is available.
• When a customer is ready to have a meeting with a software team
all the time.
• When project size is small.
Advantage(Pros) of Agile Method:
• Frequent Delivery
• Face-to-Face Communication with clients.
• Efficient design and fulfils the business
requirement.
• Anytime changes are acceptable.
• It reduces total development time.
12/28/2024 37
Disadvantages(Cons) of Agile Model:
• Due to the shortage of formal documents, it creates confusion and
crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.
• Due to the lack of proper documentation, once the project
completes and the developers allotted to another project,
maintenance of the finished project can become a difficulty.
12/28/2024 38