Extreme Programming
Extreme Programming
Extreme Programming
User stories serve the same purpose as use cases but are not the same.
They are used to create time estimates for the release planning meeting.
They are also used instead of a large requirements document. User Stories
are written by the customers as things that the system needs to do for them.
They are similar to usage scenarios, except that they are not limited to
describing a user interface. They are in the format of about three sentences
of text written by the customer in the customers terminology without
techno-syntax.
User stories also drive the creation of the acceptance tests. One or
more automated acceptance tests must be created to verify the user story
has
been
correctly
implemented.
Developers estimate how long the stories might take to implement. Each
story will get a 1, 2 or 3 week estimate in "ideal development time". This
ideal development time is how long it would take to implement the story in
code if there were no distractions, no other assignments, and the researchers
knew exactly what to do. Longer than 3 weeks means the researchers need
to break the story down further. Less than 1 week and the researchers are at
too detailed a level, combine some stories. About 80 user stories plus or
minus 20 is a perfect number to create a release plan during release
planning.
Another difference between stories and a requirements document is a
focus on user needs. The researchers should try to avoid details of specific
technology, data base layout, and algorithms. The researchers should try to
keep stories focused on user needs and benefits as opposed to specifying
GUI layouts.
Architectural Spike
Create spike solutions to figure out answers to tough technical or design
problems. A spike solution is a very simple program to explore potential
solutions. Build the spike to only addresses the problem under examination
and ignore all other concerns. Most spikes are not good enough to keep, so
expect to throw it away. The goal is reducing the risk of a technical problem
or
increase
the
reliability
of
a user
story's
estimate.
desire to have the project done immediately by hiring too many people at
one time.
Iteration
Iterative Development adds agility to the development process. 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 throughout the project. This is the heart beat of
your project. It is this constant that makes measuring progress and planning
simple
and
reliable
in
XP.
user
requirements.
It is also against the rules to look ahead and try to implement anything
that it is not scheduled for this iteration. There will be plenty of time to
implement that functionality when it becomes the most important story in
the release
plan.
of
whatever
it
takes
to
ensure
the
functionality
works.
Acceptance tests are black box system tests. Each acceptance test
represents
some
expected
result
from
the
system.
Customers
are
The
decision
to
put
it
into
production
is
theirs.
Iteration
Detail
plan
for
the
iteration.
and
management.
debugging
helps
customers
concisely
define
the
the
a
failed
problem
acceptance
is
test,
developers
fixed.
then
create unit tests to show the defect from a more source code
specific point of view. Failing unit tests give immediate
feedback to the development effort when the bug has been
repaired. When the unit tests run at 100% then the failing
acceptance test can be run again to validate the bug is fixed.
Project Velocity
The project velocity (or just velocity) is a measure of how much work
is getting done on your project. To measure the project velocity the
researchers simply add up the estimates of the user stories that
were finished during the iteration. It's just that simple. The
researchers also total up the estimates for the tasks finished during
the iteration. Both of these measurements are used for iteration
planning.
During the meeting customers are allowed to choose the same
number of user stories equal to the project velocity measured in the
previous iteration. Those stories are broken down into technical
tasks and the team is allowed to sign up for the same number of
tasks
equal
to
the
previous
iteration's
project
velocity.
remain.