Agile software development is an iterative approach that emphasizes collaboration between self-organizing teams. It promotes adaptive planning, evolutionary development, and rapid response to change. Key characteristics include breaking work into small increments, short iterations of 1-4 weeks with full development cycles, cross-functional teams without hierarchy, and face-to-face communication. Agile differs from traditional methods by focusing more on collaboration and working software than documentation. Common challenges to adopting agile include getting individuals to work as cohesive teams and increasing transparency.
2. What is Agile Development?
Agile software development is a group of software
development methods based on iterative and
incremental development, where requirements and
solutions evolve through collaboration between self-
organizing, cross-functional teams.
It promotes adaptive planning, evolutionary
development and delivery, a time-boxed iterative
approach, and encourages rapid and flexible response
to change.
4. Characteristics
Agile methods break tasks into small increments with
minimal planning and do not directly involve long-
term planning.
Iterations are short time frames that typically last from
one to four weeks.
Each iteration involves a team working through a full
software development cycle, including planning,
requirements analysis, design, coding, unit
testing, and acceptance testing when a working
product is demonstrated to stakeholders.
This minimizes overall risk and allows the project to
adapt to changes quickly.
5. Contd.
Team composition in an agile project is usually cross-
functional and self-organizing, without consideration
for any existing corporate hierarchy or the corporate
roles of team members.
Team members normally take responsibility for tasks
that deliver the functionality an iteration requires.
They decide individually how to meet an iteration's
requirements.
6. Contd.
Agile methods emphasize face-to-face communication over
written documents when the team is all in the same
location.
Most agile teams work in a single open office which
facilitates such communication.
Team size is typically small (5-9 people) to simplify team
communication and team collaboration.
Larger development efforts can be delivered by multiple
teams working toward a common goal or on different parts
of an effort.
This might require a coordination of priorities across
teams.
When a team works in different locations, they maintain
daily contact through videoconferencing, voice, e-mail,
etc.
7. How Agile is Different
Focus on collaboration:
Less paperwork and more conversation
Stakeholders actively involved
Focus on working software:
Greater feedback makes agile projects easier to manage
Less documentation is required
Less bureaucracy
Agilists are generalizing specialists:
Less hand offs between people
Less people required
Specialists find it difficult at first to fit into the team
Agile is based on practice, not theory:
This is a significant change from traditional
You need to see how agile works in practice to truly understand it
9. Challenges of Agile
Some of the primary challenges observed in organizations
moving towards an Agile mindset are:
People working as cohesive teams and not a set of individuals
Increased visibility into the work that is actually done
Titles become redundant
Privacy is less important than sharing
Costs often increase when implementing change
10. Contd.
Failure is acceptable, as long as it is identified earlier
Consistent velocity versus peaks and troughs
Micro management is felt even though teams are supposed
to be self-organizing.
Teams need support from multiple directions.
Reactionary is acceptable and expected.
Target scope often moves, thus less upfront design
11. Agile methods
SCRUM and eXtreme Programming [XP] are the most
common).
These methodologies consist of best practices and
processes that, when development teams align with them,
lead to the following positive outcomes:
•Increased quality of code delivered
•Teams evolving to constantly get better
•Higher levels of customer satisfaction (both internal and
external)
•Consistency in delivery estimates
12. Comparison with other methods
Traditional Methods: sequential phased approach. Eg.
Water flow model.
Project Phase
Requirement Architecture
Code Test
Analysis & Design
Deploy
14. Criticism
Agile methodologies have been criticized for lacking any scientifically-
based evidence to support their proponents' claims.
Another common criticism of agile software development methods is
that it is developer-centric rather than user-centric.
Agile software development focuses on processes for getting
requirements and developing code and does not focus on product
design.
Agile methodologies can also be inefficient in large organizations and
certain types of projects.
Agile methods seem best for developmental and non-sequential
projects.
Many organizations believe that agile methodologies are too extreme,
and adopt a hybrid approach that mixes elements of agile and plan-
driven approaches.