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

Agile Unit I

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

Agile Unit I

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

AGILE SOFTWARE PROCESS

(Professional Elective –I) B. Tech IT III Year – I Semester


UNIT-I

Syllabus: The Agile Movement - A Five Minute Primer, What is Agile Development, The
Agile Methodologies Agile Values, Agile Practices, Agile Principles Agile Characteristics-
The Characteristics of an Agile Project, The Development Team Project Management,
The Customer, Processes and Tools The Contract, What Projects Can Benefit from Agile
Development.

1. Introduction
Definition: Agile is a software development methodology to build a software incrementally
using short iterations of 1 to 4 weeks so that the development process is aligned with the
changing business needs. Instead of a single-pass development of 6 to 18 months where all
the requirements and risks are predicted upfront, Agile adopts a process of frequent feedback
where a workable product is delivered after 1-to-4-week iteration.

2. A Five-Minute Primer (or) The Development Team Project Management

Roles in Agile
a. Scrum Master
A Scrum Master is a team leader and facilitator who helps the team members to follow
agile practices so that they can meet their commitments. The responsibilities of a scrum
master are as follows −
• To enable close co-operation between all roles and functions.
• To remove any blocks.
• To shield the team from any disturbances.
• To work with the organization to track the progress and processes of the company.
• To ensure that Agile Inspect & Adapt processes are leveraged properly which includes
o Daily stand-ups,
o Planned meetings,
o Demo,
o Review,
o Retrospective Meetings, and
o To facilitate team meetings and decision-making process.
b. Product Owner
A Product Owner is the one who drives the product from business perspective. The
responsibilities or a Product Owner are as follows −
• To define the requirements and prioritize their values.
• To determine the release date and contents.
• To take an active role in iteration planning and release planning meetings.
• To ensure that team is working on the most valued requirement.
• To represent the voice of the customer.
• To accept the user stories that meet the definition of done and defined acceptance
criteria.
c. Cross-functional Team
Every agile team should be a self-sufficient team with 5 to 9 team members and an
average experience ranging from of 6 to 10 years. Typically, an agile team comprises of 3
to 4 developers, 1 tester, 1 technical lead, 1 product owner and 1 scrum master. Product
Owner and Scrum master are considered to be a part of Team Interface, whereas other
members are part of Technical Interface.
3. What is Agile Development

Twelve Principles of Agile Manifesto


• Customer Satisfaction − Highest priority is given to satisfy the requirements of
customers through early and continuous delivery of valuable software.
• Welcome Change − Changes are inevitable during software development. Ever-
changing requirements should be welcome, even late in the development phase. Agile
processes should work to increase customers' competitive advantage.
• Deliver a Working Software − Deliver a working software frequently, ranging from a
few weeks to a few months, considering shorter time-scale.
• Collaboration − Business people and developers must work together during the entire
life of a project.
• Motivation − Projects should be built around motivated individuals. Provide an
environment to support individual team members and trust them so as to make them
feel responsible to get the job done.
• Face-to-face Conversation − Face-to-face conversation is the most efficient and
effective method of conveying information to and within a development team.
• Measure the Progress as per the Working Software − Working software is the key
and it should be the primary measure of progress.
• Maintain Constant Pace − Agile processes aim towards sustainable development. The
business, the developers, and the users should be able to maintain a constant pace with
the project.
• Monitoring − Pay regular attention to technical excellence and good design to enhance
agility.
• Simplicity − Keep things simple and use simple terms to measure the work that is not
completed.
• Self-organized Teams − An agile team should be self-organized and should not depend
heavily on other teams because the best architectures, requirements, and designs emerge
from self-organized teams.
• Review the Work Regularly − Review the work done at regular intervals so that the
team can reflect on how to become more effective and adjust its behavior accordingly.

4. The Agile Methodologies Agile Values


Agile methodologies: Agile methodologies are specific frameworks or approaches that
embody the principles and values of the Agile movement. These methodologies provide a
structured way to implement Agile practices and guide software development teams in
delivering high-quality products. Some of the most widely known Agile methodologies
include Scrum, Kanban, Extreme Programming (XP), Lean Software Development, and
Feature-Driven Development (FDD). Here's a brief overview of some popular Agile
methodologies:
a. Scrum: Scrum is one of the most widely used Agile frameworks. It emphasizes time-
boxed iterations called "sprints," usually lasting two to four weeks. Scrum teams have
specific roles, including the Product Owner, Scrum Master, and Development Team.
Daily stand-up meetings, sprint planning, sprint reviews, and retrospectives are integral
to Scrum. The Product Backlog is a prioritized list of user stories or features, which the
team works on during each sprint.
b. Kanban: Kanban is a visual management method that focuses on workflow
optimization and limiting work in progress (WIP). Teams using Kanban visualize their
tasks on a Kanban board, moving items through different stages of the process. The
goal is to create a smooth and steady flow of work. Kanban is particularly useful for
teams dealing with frequent changes or support tasks.
c. Extreme Programming (XP): Extreme Programming is an Agile methodology that
emphasizes technical excellence and continuous feedback. XP practices include Test-
Driven Development (TDD), Pair Programming, Continuous Integration, Collective
Code Ownership, and frequent releases. XP teams focus on delivering small increments
of functionality and have a strong emphasis on automated testing.
d. Lean Software Development: Lean Software Development draws inspiration from
lean manufacturing principles. It prioritizes delivering value to customers, reducing
waste, and optimizing flow. Lean principles include eliminating delays, building quality
in, empowering the team, and amplifying learning.
e. Feature-Driven Development (FDD): Feature-Driven Development is an Agile
approach that focuses on building software around specific features or use cases. It
involves domain modeling, iterative design, and short development cycles. FDD is
well-suited for larger projects with multiple teams and complex feature sets.

Agile Values:
The Agile Manifesto, as mentioned earlier, outlines four core values that guide Agile
methodologies and practices. Let's delve into each of these values:
a. Individuals and interactions over processes and tools: This value emphasizes the
importance of people and collaboration in the software development process. While
processes and tools are essential, Agile teams prioritize effective communication and
teamwork. Building a cohesive and motivated team is crucial for delivering successful
software.
b. Working software over comprehensive documentation: This value highlights the
importance of delivering functional software that provides value to customers. While
documentation is necessary, Agile teams value working software as the primary
measure of progress. Documentation should be concise, relevant, and supportive of the
development process.
c. Customer collaboration over contract negotiation: Agile development places a
significant emphasis on involving customers throughout the project. Collaborating with
customers allows teams to understand their needs, gather feedback, and deliver a
product that meets or exceeds expectations. This ongoing collaboration is valued over
rigid contracts that might not accommodate changing requirements.
d. Responding to change over following a plan: Agile projects embrace change as a
natural part of the development process. Agile teams prioritize being adaptable and
responsive to changing requirements, technology advancements, and customer
feedback. While having a plan is important, Agile encourages teams to be flexible and
make adjustments as needed to deliver the best possible product.
By adhering to these Agile values and leveraging the practices of various Agile
methodologies, software development teams can foster a culture of collaboration,
adaptability, and continuous improvement, ultimately leading to the successful delivery of
valuable software products.
5. Agile Practices

Agile practices are specific techniques and activities that Agile teams use to implement Agile
principles effectively. These practices foster collaboration, transparency, and continuous
improvement throughout the software development process. Here are some key Agile practices
commonly used by Agile teams:
a. User Stories: Agile teams use user stories to capture requirements from the perspective
of end-users or stakeholders. User stories are short, simple, and written in a non-
technical language. They describe a particular feature or functionality that delivers
value to the customer.
b. Sprint Planning: At the beginning of each iteration (sprint), the development team,
along with the Product Owner, holds a sprint planning meeting. During this meeting,
they collaboratively decide which user stories or features to include in the upcoming
sprint. The team estimates the effort required for each task and commits to delivering
the selected work within the sprint.
c. Daily Stand-up Meetings: Daily stand-ups are short, time-boxed meetings where team
members provide updates on their progress, discuss any challenges or blockers, and
plan their activities for the day. It fosters communication and keeps the team aligned.
d. Sprint Review: At the end of each sprint, the team conducts a sprint review meeting
with stakeholders, including customers, to demonstrate the working software
increment. Stakeholders provide feedback and offer suggestions for further
improvements.
e. Retrospectives: After each sprint, Agile teams hold a retrospective meeting to reflect
on the completed sprint. They discuss what went well, what could be improved, and
what actions can be taken to enhance their processes and collaboration.
f. Continuous Integration: Agile teams practice continuous integration, which involves
frequently merging code changes into a shared repository. This ensures that the
codebase is always up-to-date and helps identify integration issues early.
g. Test-Driven Development (TDD): TDD is a practice where developers write
automated tests before writing the actual code. This helps ensure that the code meets
the specified requirements and maintains a consistent level of quality.
h. Pair Programming: In pair programming, two developers work together at the same
computer. One developer writes the code, while the other reviews it in real-time. This
practice fosters collaboration, improves code quality, and facilitates knowledge sharing.
i. Burndown Charts: Agile teams often use burndown charts to visualize their progress
throughout the sprint. Burndown charts show the remaining work versus time, helping
the team stay on track and identify potential issues.
j. Continuous Delivery: Agile teams strive to achieve continuous delivery, where they
can release a functional software increment at any time. Frequent releases enable the
team to gather feedback and deliver value to customers quickly.
k. Retrospectives: Regular retrospectives are essential for Agile teams to reflect on their
processes and identify areas for improvement. The team discusses what worked well
and what didn't during the sprint, and they collaboratively come up with action items
to enhance their performance in the next iterations.
6. Agile Characteristics-The Characteristics of an Agile Project

Iterative/incremental and Ready to Evolve: Most of the agile development methods break a
problem into smaller tasks. There is no direct long-term planning for any requirement.
Normally, iterations are planned which are of vary short period of time, for example, 1 to 4
weeks. A cross-functional team is created for each iteration that works in all functions of
software development like planning, requirements analysis, design, coding, unit testing, and
acceptance testing. The result at the end of the iteration is a working product and it is
demonstrated to the stakeholders at the end of an iteration. After demo, review comments are
taken and are planned to be incorporated in the working software as required.

Face-to-face Communication: Each agile team should have a customer representative such
as a product owner in scrum methodology. This representative is authorized to act on behalf of
the stakeholders and he can answer the queries of the developers in between iterations.
An information radiator (physical display) is normally located prominently in an office, where
passers-by can see the progress of the agile team. This information radiator shows an up-to-
date summary of the status of a project.

Feedback Loop: Daily stand-up is a common culture of any agile development; it is also
known as daily scrum. It is a kind of a brief session where each team member reports to each
other regarding the status of what they have done, what to do next, and any issues they are
facing.

7. The Customer, Processes and Tools the Contract

In Agile development, the customer, processes and tools, and the contract play crucial roles in
fostering collaboration, delivering value, and managing the project effectively. Let's explore
each of these aspects:
a. The Customer: In Agile development, the customer represents the end-users,
stakeholders, or anyone who will benefit from the software being developed. The
customer is an active and integral part of the development process, playing a key role
in shaping the product's direction and providing feedback.
Key Aspects of the Customer in Agile:
• Collaboration: Agile development emphasizes close collaboration with the customer
throughout the project. The development team and the customer work together to define
requirements, clarify expectations, and prioritize features.
• Continuous Feedback: Agile projects seek regular feedback from the customer at
various stages of development. By delivering working increments at the end of each
iteration, the team gathers feedback that informs subsequent development efforts.
• Empowerment: Agile projects empower the customer to make decisions and influence
the product's development. The customer has the authority to adjust priorities and
provide input on changes to be made during the project.
• Delivering Value: Agile focuses on delivering value to the customer early and often. By
involving the customer throughout the development process, Agile teams ensure that
the delivered software aligns with the customer's needs and provides meaningful
solutions.
a. Processes and Tools: While Agile development values individuals and interactions over
processes and tools, processes and tools still play essential roles in supporting the team's
workflow and collaboration.
Key Aspects of Processes and Tools in Agile:
• Lightweight Processes: Agile methodologies promote lightweight processes that
streamline development without creating unnecessary bureaucracy. Teams tailor their
processes to fit the project's specific needs, avoiding overly rigid or complex
frameworks.
• Visual Management: Agile teams often use visual management tools like Kanban
boards or Scrum boards to track work progress, visualize workflow, and ensure
transparency within the team.
• Continuous Integration and Automated Testing: Agile projects emphasize continuous
integration, where code changes are integrated into the main codebase frequently.
Automated testing ensures that code quality is maintained, and defects are detected
early.
3. The Contract: In traditional software development, contracts are often detailed and
fixed, specifying all the requirements and deliverables upfront. In Agile, the contract
between the development team and the customer takes a more adaptive approach to
accommodate changes and evolving requirements.
Key Aspects of the Contract in Agile:
• Flexible Scope: Agile contracts typically allow for changes to the scope based on the
customer's evolving needs and feedback. This flexibility allows the team to deliver the
highest-priority features and adjust priorities as necessary.
• Collaborative Approach: Agile contracts foster a collaborative approach between the
customer and the development team. The contract focuses on shared objectives, open
communication, and a willingness to work together to achieve project goals.
• Value-Oriented: Agile contracts emphasize delivering value to the customer over
strictly adhering to predefined deliverables. The team's success is measured by the value
provided to the customer, not just meeting contractual requirements.
• Iterative and Incremental Delivery: Agile contracts support iterative and incremental
delivery, where the team delivers working increments at regular intervals. This allows
the customer to see tangible progress and provide feedback throughout the project.
Overall, Agile development embraces customer collaboration, flexible processes and tools, and
adaptive contracts to ensure that the delivered software meets customer needs, aligns with
changing requirements, and delivers maximum value. These aspects help Agile teams remain
responsive, transparent, and focused on delivering successful software products.
8. What Projects Can Benefit from Agile Development

Agile development can benefit a wide range of projects, particularly those with certain
characteristics and requirements that align well with Agile principles. Here are some types of
projects that can benefit from Agile development:
1. Software Development Projects: Agile is most commonly associated with software
development, and it is highly effective for building software products and applications.
The iterative and incremental nature of Agile allows for continuous improvement and
adaptation to changing requirements, making it well-suited for complex software
development.
2. Startups and Innovative Projects: Startups and projects with high uncertainty can
benefit from Agile's adaptive approach. Agile allows teams to experiment, gather
feedback, and pivot quickly based on market responses and user needs.
3. Projects with Evolving Requirements: Projects with unclear or rapidly changing
requirements can benefit from Agile's ability to accommodate changes and prioritize
work based on current needs.
4. Complex Projects: Agile is suitable for projects with a high degree of complexity, as it
allows for breaking down the work into smaller manageable increments, making it
easier to tackle complex challenges.
5. Projects with Frequent Deliverables: Projects that require regular delivery of new
features or updates can benefit from Agile's incremental approach. This ensures that
stakeholders receive value regularly and can provide feedback throughout the
development process.
6. Customer-Centric Projects: Agile emphasizes customer collaboration and continuous
feedback. Projects with a strong focus on delivering value to customers can benefit from
this customer-centric approach.
7. Projects with Cross-Functional Teams: Agile encourages the use of cross-functional
teams with a diverse skill set. Projects that require collaboration across different
disciplines benefit from the collective expertise and holistic problem-solving offered
by Agile teams.
8. Maintenance and Support Projects: Agile can be beneficial for maintenance and support
projects where the development team needs to address ongoing issues, bug fixes, and
customer requests in a responsive manner.
9. Research and Development (R&D) Projects: Agile can be used in R&D projects where
exploration and experimentation are essential. The iterative nature of Agile allows
teams to learn from their experiments and adapt their approach accordingly.
10. Projects with Limited Upfront Requirements: Agile projects can start with minimal
initial requirements, and additional details can be fleshed out during the development
process through collaboration with stakeholders.
11. Projects with High Customer Engagement: Agile encourages regular customer
involvement throughout the development process. Projects that require close
collaboration with customers and stakeholders to understand their needs and gather
feedback are well-suited for Agile.
It's important to note that while Agile can benefit a wide variety of projects, it may not be the
best fit for every scenario. Some projects with fixed, well-defined requirements and rigid
regulatory constraints might be better suited for traditional project management approaches.
The decision to adopt Agile should be based on the project's specific characteristics,
complexity, and the ability of the team and stakeholders to embrace Agile principles and
practices effectively.
AGILE SOFTWARE PROCESS
(Professional Elective –I) B. Tech IT III Year – I Semester
UNIT-II
Syllabus: The Agile Methodologies: Common Themes, Methodology Descriptions,
Extreme Programming, Scrum, Feature Driven Development, The Crystal
Methodologies, Adaptive Software Development, Dynamic Systems Development
Method, Lean Software Development, Starting Monday: Investigate Further Selecting an
Approach that Fits: Choosing between an Agile or Traditional Approach, Selecting the
Right Agile Approach

What Are the Different Types of Agile Frameworks?


Agile refers to the methods and best practices for organizing projects based on the
values and principles documented in the Agile Manifesto. However, there’s no one right way
to implement Agile, and many different types of frameworks from which to choose.
In this article, we will cover the basics of Agile methodology and explore the different
frameworks.

Kanban
Kanban methodology is about day-to-day workflows and processes. It is a simple,
visual means of managing projects that enables teams to see the progress so far and what’s
coming up next. Kanban projects are primarily managed through a Kanban board, which
segments tasks into three columns: “To Do,” “Doing,” and “Done.”
Many project management software solutions have Kanban board integration, which
teams can use to plot out a task’s progress from start to finish.
The main benefit of this methodology is the increased transparency, allowing team
leaders to clearly see which tasks are assigned to which team members and what is yet to be
completed to make meaningful progress.

Scrum
Scrum is one of the most popular Agile methodologies, as it can bring teams together
with a sharp focus and an efficient, collaborative approach to task execution.
It is similar to Kanban in many ways. Scrum typically uses a Scrum board, similar to a
Kanban board, and groups tasks into columns based on progress. Unlike Kanban, Scrum
focuses on breaking a project down into sprints and only planning and managing one sprint at
a time.
Under this methodology, you would assign a Scrum leader and product owner, who
have a direct influence over the rest of the team. This assigned leadership can help teams to
spearhead projects and complete them over a short space of time through a series of sprints.
Sprints are the Scrum way of breaking projects down into iterations that can last
anywhere between one and four weeks each. Bringing team members together from different
departments, these sprints help you channel a collective focus to your projects.
Scrum also features a robust set of principles and activities that dictate how you work. These
include:
• Sprint planning: Planning sessions to identify the purpose behind your sprints
• Roles: Key roles in the Scrum project management process
• Product backlog: A list of tasks arranged according to priority level

Extreme Programming (XP)


Extreme Programming (XP) was designed for Agile software development projects. It
focuses on continuous development and customer delivery and uses intervals or sprints, similar
to a Scrum methodology. However, XP also has 12 supporting processes specific to the world
of software development:
• Planning game
• Small releases
• Customer acceptance tests
• Simple design
• Pair programming
• Test-driven development
• Refactoring
• Continuous integration
• Collective code ownership
• Coding standards
• Metaphor
• Sustainable pace
Extreme Programming puts the customer at the center of everything the team does. In XP,
teams can involve the end users in a meaningful way and use the feedback they get to deliver
the best possible product.
Feature-driven development (FDD)
Feature-driven development is another software-specific Agile framework. This
methodology involves creating software models every two weeks and requires a development
and design plan for every model feature. It has more rigorous documentation requirements than
XP, so it’s better for teams with advanced design and planning abilities. FDD breaks projects
down into five basic activities:
• Develop an overall model
• Build a feature list
• Plan by feature
• Design by feature
• Build by feature

Dynamic Systems Development Method (DSDM)


The Dynamic Systems Development Method (DSDM) was born of the need for a common
industry framework for rapid software delivery. Rework is to be expected, and any
development changes that occur must be reversible. Like Scrum, XP, and FDD, DSDM uses
sprints. This framework is based on eight fundamental principles:
• Focus on the business need
• Deliver on time
• Collaborate
• Never compromise quality
• Build incrementally from firm foundations
• Develop iteratively
• Communicate continuously and clearly
• Demonstrate control

Crystal
Crystal is a family of Agile methodologies that includes Crystal Clear, Crystal Yellow,
Crystal Orange, Crystal Red, etc. Each has a unique framework. Your choice depends on
several project factors, such as your team size, priorities, and project criticality.

Lean
Lean development is often grouped with Agile, but it’s an entirely different methodology
that happens to share many of the same values. The main principles of the Lean
methodology include:
• Eliminating waste
• Build quality in
• Create knowledge
• Defer commitment
• Deliver fast
• Respect people
• Optimize the whole
Adaptive Project Framework
Adaptive Project Framework, or APF, is an Agile methodology that keeps teams on
their feet, ready to adapt to changing circumstances and project scope.
By breaking each project down into iterative cycles, or phases, teams can frequently check in
and evaluate what’s necessary to complete each small project. Through regular assessment,
teams can react quickly to changes and ensure they stay on track with timelines.

You might also like