Este documento describe la programación extrema (XP), un enfoque ágil para el desarrollo de software. XP se centra en la adaptabilidad a los cambios de requisitos mediante ciclos de desarrollo cortos e incrementales, programación en parejas y retroalimentación continua del cliente. Las actividades básicas de XP son codificar, hacer pruebas, escuchar, y diseñar de manera sencilla. Los valores fundamentales de XP son la simplicidad, comunicación, retroalimentación y coraje.
2. HISTORIA
La programación extrema EXtreme Programming
(PX) es un enfoque de la ingeniería de Software
formulado por Kent Beck, autor el primero libro
sobre la materia, Extreme Programming
Explained: Embrace Change 1999. Es el más
destacado de los procesos ágiles de desarrollo
de software.
Al igual que éstos, la programación extrema se
diferencia de las metodologías tradicionales
principalmente en que pone más énfasis en la
adaptabilidad que en la previsibilidad. Los
defensores de PX consideran que los cambios de
requisitos sobre la marcha son un aspecto
natural, inevitable e incluso deseable del
Desarrollo de Proyectos.
3. ¿QUÉ ES?
Es un modelo de proceso de software que
toma los principios y prácticas aceptadas, y
las lleva a niveles extremos.
OBJETIVO
Reducir el riesgo en el ciclo de vida el software
mediante grupos de desarrollo pequeños. Considera
que la mejor manera de tratar la falta de requisitos
estables en un sistema, es mediante la agilidad, quizá
más representativita del proceso de XP, es la
programación en pares.
5. C
R
E
E
N
C
I
A
S
D
E
L
M
O
D
E
L
O
Los cambios en un sistema son frecuentes
Se deben mejoras los cambios de manera incremental
Se debe apoyar los cambios
Se debe lograr una rrápida retroalimentación
Se debe lograr un trabajo de calidad
Se debe buscar la simpleza
Dado un conjunto apropiado de prácticas y tecnología, la
curva de costo puede aplanarse
6. V
A
L
O
R
E
S
Los Valores originales de la programación extrema son:
simplicidad, comunicación, retroalimentación (feedback) y
coraje. Un quinto valor, respeto, fue añadido en la segunda
edición de Extreme Programming Explained.
La Simplicidad: es la base de la programación extrema. Se
simplifica el diseño para agilizar el desarrollo y facilitar
mantenimiento. Un diseño complejo del código junto a
sucesivas modificaciones por parte de diferentes
desarrolladores hacen que la complejidad aumente
exponencialmente.
La Comunicación se realiza de diferentes formas, para los
Programadores el código comunica mejor cuanto más simple
sea. Si el código es complejo hay que esforzarse para hacerlo
inteligible. El código auto-documentado es más fiable que los
comentarios ya que éstos últimos pronto quedan desfasados
con el código a medida que es modificado.
7. Retroalimentación feedback: Al estar el cliente integrado
en el Proyecto, su opinión sobre el estado del proyecto
se conoce en tiempo real. Al realizarse ciclos muy cortos
tras los cuales se muestran resultados, se minimiza el
tener que rehacer partes que no cumplen con los
requisitos y ayuda a los programadores a centrarse en
lo que es más importante.
Coraje o valentía: Los puntos anteriores parecen tener
sentido común, entonces, ¿por qué coraje? Para los
gerentes la programación en parejas puede ser difícil de
aceptar, porque les parece como si la productividad se
fuese a reducir a la mitad ya que solo la mitad de los
programadores está escribiendo código.
V
A
L
O
R
E
S
8. ACTIVIDADES BÁSICAS
Codificar: Es la única actividad de la que no podremos
prescindir. Sin código fuente no hay programa, aunque
hay gente que cuenta que existe software en
producción del que se perdió el código fuente.
Hacer pruebas: Las características del software que
no pueden ser demostradas mediante pruebas
simplemente no existen. Las pruebas me dan la
oportunidad de saber si lo que implementé es lo que
en realidad yo pensaba que había implementado. Las
pruebas nos indican que nuestro trabajo funciona,
cuando no podemos pensar en ninguna prueba que
pudiese originar un fallo en nuestro sistema entonces
has acabado por completo.
9. ACTIVIDADES BÁSICAS
Escuchar: Los programadores no lo conocemos todo, y
sobre todo muchas cosas que las personas de negocios
piensan que son interesantes. Si ellos pudieran
programarse su propio software ¿para que nos
querrían?. Si vamos a hacer pruebas tenemos que
preguntar si lo obtenido es lo deseado, y tenemos que
preguntar a quien necesita la información.
Diseñar: El diseño crea una estructura que organiza la
lógica del sistema, un buen diseño permite que el
sistema crezca con cambios en un solo lugar. Los
diseños deben de ser sencillos, si alguna parte del
sistema es de desarrollo complejo, divídela en varias. Si
hay fallos en el diseño o malos diseños, estos deben de
ser corregidos cuanto antes.