0% found this document useful (0 votes)
26 views10 pages

Extreme Programming Overview Guide

The document provides an introduction to the Extreme Programming (XP) software development process. XP is an agile process focused on projects with vague and frequently changing requirements, small teams, and incremental development. XP is based on values such as feedback, communication, simplicity, and courage, as well as practices such as having an on-site customer, planning, pair programming, and test-driven development.

Translated by

ScribdTranslations
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views10 pages

Extreme Programming Overview Guide

The document provides an introduction to the Extreme Programming (XP) software development process. XP is an agile process focused on projects with vague and frequently changing requirements, small teams, and incremental development. XP is based on values such as feedback, communication, simplicity, and courage, as well as practices such as having an on-site customer, planning, pair programming, and test-driven development.

Translated by

ScribdTranslations
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Extreme Programming

Learn how to enchant your users


deveolpnigsow
ft are
withagiltyandhighquality

Vinícius Manhães Teles

Preface by Kent Beck


Special collaborations by Kent Beck and Robert Mee

Novatec Publisher
Chapter 1
Extreme Programming: overview

Extreme Programming, or XP, is a software development process.


software aimed at:
Projects whose requirements are vague and frequently change;
Development of object-oriented systems;
Small teams, preferably up to 12 developers;
• Incremental (or iterative) development, where the system starts to
to be implemented right at the beginning of the project and gradually gaining new features
personalities over time.
ThereisacategoryofdevelopmentprocessesknownasPro-
Agile Development processes, within which XP and other processes are
fit. They share the premise that the customer learns about
your needs, as it is able to manipulate the system that
is being produced. Based on the system's feedback, it re-evaluates its
needs and priorities, generating changes that must be incorporated
to the software. Learning is important because it allows the customer
direct the development in such a way that the team always produces that
what has the highest value for your business.
XP is a development process that seeks to ensure that the client
get the maximum value from each workday of the development team
mentor. It is organized around a set of values and practices that
acts in a harmonious and cohesive manner to ensure that the customer always
get a high return on investment in software.

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

Eventually, based on feedback, the team will be able to generalize.


[Link],however,theywillcomeinthe
in the form of an explicit need and not as the speculation of something that
it could become necessary in the future.
Since the system is developed incrementally, the team is
continuously maintaining the software and creating new func
personalities. In many cases, it will change something that was working.
directly, which leads to the risk of causing failures in the system. For this reason,
the team needs to be courageous and believe that, by using the practices and values
with XP, it will be able to develop the software securely and efficiently.

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

on the day it begins. It is a quick meeting known as


stand up meeting, which in English means standing meeting.

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

Figure 1.1 – XP Practices (source: [Link]).

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

customer relationship ensuring that they participate actively


mind of development and provide the essential information so that the
the team can implement the desired system.

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

You might also like