Extreme Programming Overview Guide
Extreme Programming Overview Guide
Novatec Publisher
Chapter 1
Extreme Programming: overview
21
Extreme Programming
XP values
XP is based on four fundamental values:
• Feedback
Communication
Simplicity
Courage
When the customer learns from the system they use and reevaluates their
needs, it generates feedback for the development team. That is,
he feeds back to the team with changes in the needs that will still be
implemented and, eventually, in those that are already part of the software.
Feedback is the fundamental mechanism that allows the customer to drive.
the development daily and ensure that the team directs its
focus on what will generate more value.
So that the client can share their learning with the team, it is
it is necessary for him to permanently use the value of communication.
communication between the client and the team allows for all the details of
projects should be treated with the attention and agility they deserve. The XP
seeks to ensure that communication occurs in the most direct and effective manner
possible. Thus, he seeks to bring all those involved in the project closer together.
so that everyone can communicate face-to-face or in the richest way
whatisviable.
Communication, although essential, is not enough to ensure that the
theclientcanlearnduringtheprojectandgeneratefeedbackquickly.
it is also necessary for the team to understand and utilize the value of simplicity
that teaches us to implement only what is sufficient to
meet each client's needs. In other words, when coding a function
we should only worry about today's problems and leave the
problems of the future for the future. We should not try to predict the future,
because we rarely get the predictions right. By avoiding speculation about what
it will happen tomorrow, we gained time and allowed the customer to have
access to the functionality more quickly. This allows him to use it in
your business, generating value for it and making it feasible for it to provide feedback
to the team as soon as possible.
22
Chapter 1 • Extreme Programming: overview
XPPractices
XPis based on the following practices:
Client Present
Planning Game
Stand Up Meeting
Pair Programming
Test-Driven Development
Refactoring
Collective Code
Standardized Code
Simple Design
Metaphor
Sustainable Rhythm
Continuous Integration
Short Releases
23
Extreme Programming
Client Present
The XPtrabalha operates under the premise that the client must lead the development.
mentoring based on the feedback received from the system. For the exchange of
feedback may occur and the client may obtain the maximum value from the project
It is essential that he actively participates in the development process.
Moreover, your presence facilitates the simplicity of the process in
various aspects, especially in communication.
PalnnnigGame
XP uses various forms of planning to ensure that the team
always work on what is most important to the customer.
For this reason, every project in XP is divided into releases and iterations.
so that the client and the team have various opportunities to meet to
review the planning.
Releases are modules of the system that generate a well-defined value for the
client. Iterations, in turn, are periods of time lasting a few weeks
(around two, on average) in which the team implements a set
of functionalities agreed with the client. At the beginning of each release and of
[Link]
the client evaluates the functionalities that need to be implemented and prioritizes
those that will be part of the next release or the next iteration.
NoXP,thefunctionalitiesaredescribedinsmallcardsandarecalled
the stories. During the planning game, the stories are estimated,
for the client to understand the cost of implementing each one
of them. The estimate is made using a special unit that receives the
point name.
The point represents a unit of time that varies throughout the development.
movement according to the speed of the team, where speed indicates the
how much the team was able to implement in the previous iteration. All the
detailsaboutreleases,iterations,stories,points,andvelocitywillbedescribed
I will explain in detail in the following chapters.
StandUp Meeting
The development team meets every morning to evaluate the work
what was executed the day before and prioritize what will be implemented
24
Chapter 1 • Extreme Programming: overview
PaP
raelrogrammnig
InNoXP,developersimplementfunctionalitiesinpairs,or
there are always two developers in front of each computer who
work together to produce the same code. This practice, which receives the
programming name in pair allows the code to be reviewed permanently
while it is being built. It also contributes to the imple-
make it simpler and more effective, since the developers complement each other
They lie and have more opportunities to generate innovative solutions.
Test-Driven Development
XPis intended for building high-quality systems, which leads to
the need for various validation mechanisms to ensure that the soft-
the software is correct. One of these mechanisms is pair programming, just as
was mentioned earlier. In addition to it, XP also uses the technique de-
test-driven development.
Developerswritetestsforeachfeaturebeforecoding
to fulfill them. By doing so, they deepen the understanding of the needs
of the client (which enhances the analysis), they are concerned with external interfaces
in the methods and classes before coding them (which improves the design),
we know how far to code each functionality (which helps to maintain the system-
they become equipped with a test suite that can be used
at any time to validate the entire system.
Refactoring
In order for the system to evolve incrementally, the team must do
that he expresses his goals easily and is always clear and
easy to understand. Often, this will lead the team to modify
parts of the system that are functioning to facilitate its maintenance.
Refactoring is the act of changing code without affecting its functionality.
he implements. It is used to make the software easier to manage.
manipulated and makes strong use of the tests described previously for ga-
ensure that the modifications do not interrupt its operation.
25
Extreme Programming
CollectiveCode
NoXPthesystemisnotsegmentedintoparts,sothateachdeveloper
vendor will be responsible for one of them. The developers have access to
all parts of the code and can change what they consider important
without the need to ask for permission from another person, as the code is
collective.
Thisprovidesgreateragilitytotheprocessandcreatesanotherreviewmechanism.
is and verification of the code, since what is written by a peer today,
ends up being manipulated by another tomorrow. If something is confu-
healthy code, the pair should refactor it to make it more readable.
Standardized Code
So that all developers can manipulate any part of the
software more quickly, the team establishes coding standards,
which also serve to make the system more homogeneous and allow for
any future maintenance is carried out more quickly.
SimpleDesign
In order for the client to receive feedback quickly, the team needs to be agile in
development,[Link]
to create generalizations within the code, in order to prepare it to possibly
seeing future needs, the team should always opt for code that
be sufficient to meet the needs of the functionality that is im-
complementing. Developers rely on the premise that they will be ca-
you are capable of incorporating any future needs when and if they arise. For
yes, they rely on refactoring, testing, and other XP practices
to support them.
Metaphor
To facilitate the creation of a simple design, the development team
uses metaphors, as they have the power to convey complex ideas of
simple forms, through a common language that is established between the
development team and the client.
26
Chapter 1 • Extreme Programming: Overview
Sustainable Rhythm
The quality of the design, the code, the metaphors, and the system is determined
directly from the quality of the developers and their ability that they
they must remain alert, creative, and willing to solve problems. To
ensure that the team always has maximum performance and produces
software with the best possible quality, XPrecommends that developers
workers should only work eight hours a day and avoid doing overtime,
since it is essential to be well-rested every morning in order to make use of the
mind in its fullness throughout the day.
ContinuousIntegration
When a new feature is incorporated into the system, it can affect
others that were already implemented. To ensure that the entire system
always function harmoniously, the team practices
continuous grace that leads pairs to integrate their codes with the rest
of the system several times a day. Each time a pair does this, it executes
all tests to ensure that the integration has occurred properly
satisfactory.
An integration can always produce errors in the system. Thus, the
the team uses tests to discover any defects as quickly as possible
It is possible since discovering them soon facilitates and accelerates the correction and reduces the
probability of small problems turning into big pains
headfirst into the future.
Short Releases
As explained previously, XP aims to generate a flow.
continuous value for the customer. Therefore, he works with releases
short, meaning the team produces a reduced set of features
and deploy it quickly so that the client can start using it already
the software in daily life and benefit from it. Throughout the project, the team-
will put the system into production several times, each time incorporating
more features and generating more value.
Figure 1.1 presents all the XP practices summarized:
27
Extreme Programming
Team characteristics
A team that uses XP is usually composed of people who
represent the following roles:
Project Manager
Coach
Test Analyst
Technical Writer
Developer
Project Manager
The project manager is responsible for the administrative matters of the project.
He tries to free the team from issues that are not directly related.
linked to the daily development activity. In addition, it manages the
28
Chapter 1 • Extreme Programming: Overview
Coach
The coach is the technical responsible for the project. The XP recommends that a
a technically well-prepared professional should be highlighted to guide the
team in such a way that it follows the best practices recommended by XP.
may also act in the implementation of the system, your main task is
ensure the smooth operation of the process and seek ways to improve it
continuously.
Test Analyst
The test analyst is responsible for helping the client write the tests.
acceptance. When these tests are not automated, the test analyst
itmustensurethattheyareexecutedmultipletimesthroughouttheiterations
project actions. It seeks to ensure that any system defects
should be identified as soon as they appear. In this way, it provides feedback for
the team quickly, so that it can make the corrections quickly
ten and prevent problems from spreading.
Technical Writer
The technical writer helps the development team document the system.
[Link] presence allows developers to focus on priorities.
directly in the implementation of the software. Although they may continue
while doing some documentation, the technical writer is the one who does the majority of the
the work of documentation.
Developer
The developer is the person who analyzes, designs, and codes the system. In
suma is the person who effectively builds the software. Within XP, not
there are divisions between analyst, designer, programmer, etc. Each developer
the vendor plays these different roles at various times during the project.
29