Você está na página 1de 43

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