0% found this document useful (0 votes)
10 views

chapter-3 v3

Uploaded by

eliasmesfin7825
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

chapter-3 v3

Uploaded by

eliasmesfin7825
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

Fundamental of Software Engineering

SOEng2051

Chapter 3: Agile Development

12/28/2024 1

Department of Software Engineering


Introduction
• Definition: Agile is an approach to project management and
software development that focuses on flexibility, collaboration,
continuous feedback, and adaptability.
• History: Agile emerged as a response to traditional, rigid
development methods (like Waterfall), which struggled to handle
changing requirements and customer needs effectively.
• Agile Manifesto (2001): This foundational document set Agile’s
core values and principles, emphasizing individuals, interactions,
working software, collaboration, and responsiveness to change.

12/28/2024 2
Introduction
• Key Agile Values and Principles

• The 4 Core Values of Agile

• Individuals and Interactions over Processes and Tools


• Working Software over Comprehensive Documentation
• Customer Collaboration over Contract Negotiation
• Responding to Change over Following a Plan

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

• Scrum is an Agile framework that helps teams develop complex


projects, particularly in software, by breaking work into
manageable units (called sprints), typically lasting 1-4 weeks.
Scrum is designed to promote flexibility, transparency, and
collaboration by organizing work in small, incremental pieces and
continuously gathering feedback from users and stakeholders.

12/28/2024 5
Introduction

Scrum

•Structure: Organized around fixed-length sprints (1-4 weeks), with specific


roles like Scrum Master, Product Owner, and Development Team.
•Key Ceremonies: Sprint Planning, Daily Stand-ups, Sprint Review, and Sprint
Retrospective.
•Product Backlog and Sprint Backlog: The Product Backlog is a prioritized
list of tasks, while the Sprint Backlog contains tasks selected for the current
sprint.
•Use Case: Best for complex projects that benefit from iterative development
and ongoing feedback.

12/28/2024 6
Introduction
• Extreme Programming (XP)

• Structure: Emphasizes technical excellence and continuous


feedback, with practices like Test-Driven Development (TDD), Pair
Programming, and frequent releases.
• Core Practices: Continuous integration, refactoring, coding
standards, and customer involvement.
• Use Case: Ideal for high-stakes projects where product quality is
critical.

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

• Customer-Centric: Frequent feedback loops mean customers stay


engaged and can influence the product’s direction.
• Flexibility and Adaptability: Agile allows teams to pivot when
requirements change, making it well-suited for fast-evolving
projects.
• Faster Time to Market: Incremental deliveries mean usable
features can be released sooner, enabling faster value realization.
• Higher Quality: Continuous testing, feedback, and collaboration
improve product quality and reduce defects over time.
12/28/2024 11
Introduction
• Challenges of Agile

• Requires Strong Collaboration: Agile teams must work closely


together, so it may not fit well in environments lacking team
cohesion or customer availability.
• Difficulty with Fixed Budgets: Agile’s flexibility may make it
hard to predict final project costs, posing challenges for projects
with fixed budgets or deadlines.

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.

• Through sprints, they gradually build out the e-commerce platform,


frequently testing and refining it based on user feedback, ensuring
they remain aligned with customer needs.

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

Phases of Agile Model:


1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback

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

You might also like