Agile Extreme
programming
XP
Agenda
Introduce team
Agile method(brief)
XP history
XP with other methods
XP features
XP release cycle
XP principles
XP values
The Phases of XP
Requirements scenarios
XP testing
XP advantages and disadvantages
summery
Agile method
Focus on software rather than its design &
documentation(Working software over comprehensive documentation)
Involve customer in development approach
Individuals and interactions over processes
and tools
Rely on incremental approach(change over plan)
Deliver software quickly to customers
Agile method continue
Not fit for larger projects
Rely on team members understanding aspects of system
without documentation
All development stages are interleaved
Cost of Errors Increases
Through a Projects Lifetime
Cost of Errors
Project Phase
7
Extreme Programming (XP)
Features
New versions may be built several times per day;
Increments are delivered to customers every 2 weeks;
All tests must be run for every build and the build is
only accepted if tests run successfully.
The project is divided into iterations.
(Divide your development schedule into about a dozen iterations of 1 to 3
weeks in length. One week is the best choice even though it seems very
short. Keep the iteration length constant through out the project)
Don't schedule your programming tasks in advance. Instead have
an iteration planning meeting at the beginning of each iteration to
plan out what will be done
XP principles
Incremental
planning
Sustainable Test-first
pace development
Pair
Simple design
programming
Collective Small
ownership releases
Continuous
Refactoring
integration
Incremental planning
(requirements are recorded on
story cards and determined by
time and priority)
Small releases
The minimal useful first
simple design
Test first
development
All developers are expected to refactor the code continuously as soon as
possible code improvements are found (i.e. put comments)
.
Developers work in pairs checking each
other work and provide support to
always do the code work
Collective ownership
The pairs of developers work on all areas of the system, so
that no islands of expertise develop all developers take
responsibility for all the code any one can change any
thing
Metaphor
Names within code and other work artifacts are chosen to be descriptive of the system being created.
Coding Standard
Each team member follows the team standard for format and appearance of the artifacts.
Whole Team
The team works together in a lab space or open area where collaboration and communication are maximized.
As soon as the work on task is complete , it is integrated into the whole
system
Large amount of
overtime are not
acceptable
Sustainable pace
On-site customer(representative of the end user of system)
The Values of Extreme Programming
The Values of Extreme Programming
Simplicity:
do what is needed and asked for, but no more
Communication:
Everyone is part of the team and we communicate face to face daily
Feedback:
We demonstrate our software early and often then listen carefully and
make any changes needed
Respect
Everyone gives and feels the respect they deserve as a valued team
member.
Courage
We will tell the truth about progress and estimates.
Difference between Values and practices
Values are more important than practices
aspect that can change to adapt to people (people over
processes)
they are really a part of the methodology.
The Phases of XP
Phase description
Exploration Project inception, high-level user requirements, technical
prototyping
planning Prioritization of work , break down into releases and first plan
iterations Testing and development of the system includes iterations
planning
Where low level work break down occurs.
End users may work here at refining interface ensuring usability
productionizing Deployment of software into the customers production
environment
maintenance Ongoing maintenance ,patches and enhancement
Requirements scenarios
Requirements scenarios
Continue
Customer User requirements
making decisions are expressed as
on requirements scenarios or user
stories.
the development The customer
team breaks them chooses the stories
down into based on their
implementation priorities and the
tasks schedule
estimates.
XP and change
software engineering is to design for change
it proposes constant code improvement (refactoring) to
make changes easier when they have to be
implemented.
XP testing features
Incremental
test
Test-first
development
development
from
scenarios
Automated test harnesses are used
User involvement in test
to run all component tests each
development and validation
time that a new release is built.
.
XP testing difficulties
XP testing difficulties
continue..
Programmers prefer programming to testing
and sometimes they take short cuts when
writing tests.
Some tests can be very difficult to write
incrementally
It difficult to judge the completeness of a set
of tests. Although you may have a lot of
system tests, your test set may not provide
complete coverage
XP advantages
Individuals are not held responsible for
problems with the code. Instead, the team
has collective responsibility for resolving
these problems.
It acts as an informal review process because
each line of code is looked at by at least two
people.
It helps support refactoring
XP disadvantages
You may have difficulty to get many
developers accept this practice
Your customers may be
busy
XP is code centric rather than
design centric
development(not fit for large
projects)
summery
notice
Note that CRC not in XP
In the summery slide
Extreme programming(XP)
Reference
http://www.extremeprogramming.org
http://www.xprogramming.com/xpmag/whatisxp.htm
http://www.agilemanifesto.org/
http://www.poppendieck.com/
The Pragmatic Programmer: From Journeyman to
Master,
by Andrew Hunt and David Thomas