Está en la página 1de 10

Metodología Ágil de Desarrollo de Software – XP

Borja López Yolanda


yoly.borja@gmail.com
ESPE, MEVAST

RESUMEN good results. The design of software architecture is a


very important practice for software development. To
have a good architecture means that our system quality
Las metodologías ágiles han ganado bastante attributes will give us a very important value in the
popularidad desde hace algunos años. Si bien son una software. If you define activities that encourage the use
muy buena solución para proyectos a corto plazo, en of methods for the development of architecture in a
especial, aquellos proyectos en donde los requerimientos software development process, you can get many
están cambiando constantemente, en proyecto a largo benefits with respect to the product being developed.
plazo, el aplicar metodologías ágiles no dan tan buenos However, to agile methodologies such activities are not
resultados. El diseño de la arquitectura de software es considered as important.
una práctica muy importante para el desarrollo de
software. Tener una buena arquitectura implica que This is the philosophy of agile methodologies,
nuestro sistema tiene atributos de calidad que nos van a which give more value to the individual, to the
dar un valor muy importante en el software. Si se collaboration with customers and incremental software
definen actividades que fomenten el uso de métodos para development with very short interactions. This approach
el desarrollo de la arquitectura, en un proceso de is showing its effectiveness in projects with changing
desarrollo de software, se puede obtener muchos requirements as required drastically reduce development
beneficios con respecto al producto que se desarrollo. time while maintaining high quality.
Sin embargo, para las metodologías ágiles esas
actividades no se consideran en forma importante. Agile methodologies are revolutionizing the way to
produce software, while this generates much debate
between its supporters and those of skepticism or belief
Esta es la filosofía de las metodologías ágiles, las
do not see them as an alternative to traditional
cuales dan mayor valor al individuo, a la colaboración
methodologies.
con el cliente y al desarrollo incremental del software
con iteraciones muy cortas. Este enfoque está mostrando
The rationale for this study is based on analysis
su efectividad en proyectos con requisitos muy
cambiantes y cuando se exige reducir drásticamente los methodologies Xp, its main features, concepts and
tiempos de desarrollo pero manteniendo una alta calidad. conclusions.

Las metodologías ágiles están revolucionando la JUSTIFICACION


manera de producir software, y a la vez generando un
amplio debate entre sus seguidores y quienes por
escepticismo o convencimiento no las ven como La metodología ágil XP surge con el propósito de
transformar la esencia del desarrollo de los procesos
alternativa para las metodologías tradicionales.
que se ejecutan al momento de llevar acabo la
planificación y ejecución de un proyecto de creación de
La razón de ser de este trabajo se basa en el análisis software esta metodología se enfoca en integrar en
de algunos tipos de metodologías existentes, viendo sus una mejora continua al usuario y al grupo de
principales características, conceptos y conclusiones. individuo que se encargaran de resolver la
problemática percibida.
ABSTRACT
XP en comparación de las metodologías
Agile methodologies have gained a lot of popularity tradicionales es mas rápida, ya que conlleva menos
in recent years. While they are a very good solution for protocolo, lo que evita que existan jerarquías dentro del
short-term projects, especially those projects where grupo, lo cual permite que cada integrante del grupo
requirements are constantly changing, in long-term pueda aportar en cualquier motivo, por la cual se
project, applying agile methodologies do not give such
implementara o hará uso de esta metodología es, que la 2. QUE ES XP
misma se enfoca en resultados a corto plazos es decir
los resultados que se van obteniendo a lo largo de XP es una metodología ágil para el desarrollo de
la modulación serán verificados al instante y de existir software y consiste básicamente en ajustarse
alguna anomalía o falta se hará las correcciones estrictamente a una serie de reglas que se centran en las
correspondientes. De esta forma rápida es posible necesidades del cliente para lograr un producto de buena
obtener los resultados esperados a corto plazo y de calidad en poco tiempo, centrada en potenciar las
manera eficiente el sistema tomara robustez en la relaciones interpersonales como clave para el éxito del
utilización de los módulos se lograra de manera desarrollo de software.
instantánea.
La filosofía de XP es satisfacer al completo las
Los resultados son verificados por el usuario de necesidades del cliente, por eso lo integra como una
manera que apruebe el producto y así obtener una parte más del equipo de desarrollo.
seguridad y solidez en el desarrollo del sistema, de esta
manera el resultado final lograra satisfacer en un gran Promueve el trabajo en equipo, preocupándose en
porcentaje la expectativas y las necesidades del todo momento del aprendizaje de los desarrolladores y
usuario. estableciendo un buen clima de trabajo.

Este tipo de programación es la adecuada para los


1. INTRODUCCIÓN proyectos con requisitos imprecisos, muy cambiantes y
donde existe un alto riesgo técnico.
La programación extrema o XP es una metodología
de desarrollo que se englobaría dentro de las XP está diseñada para el desarrollo de aplicaciones
denominadas metodologías Ágiles en la que se da que requieran un grupo de programadores pequeño,
máxima prioridad a la obtención de resultados y reduce dónde la comunicación sea más factible que en grupos
la burocracia que utiliza las metodologías de desarrollo grandes. La comunicación es un punto
tradicionales. importante y debe realizarse entre los programadores, los
jefes de proyecto y los clientes.
Generalmente el proceso de desarrollo llevaba
asociado un marcado énfasis en el control del proceso
mediante una rigurosa definición de roles, actividades y 3. VALORES DE XP
artefactos, incluyendo modelado y documentación
detallada. Este esquema "tradicional" para abordar el 3.1. Comunicación
desarrollo de software ha demostrado ser efectivo y
necesario en proyectos de gran tamaño (respecto a Prevalece en todas las prácticas de Extreme
tiempo y recursos), donde por lo general se exige un alto Programming. Comunicación cara a cara es la mejor
grado de ceremonia en el proceso. Sin embargo, este forma de comunicación, entre los desarrolladores y el
enfoque no resulta ser el más adecuado para muchos de cliente. Método muy ágil. Gracias a esto el equipo esta
los proyectos actuales donde el entorno del sistema es pude realizar cambios que al cliente no le gustaron.
muy cambiante, y en donde se exige reducir
drásticamente los tiempos de desarrollo pero 3.2. Simplicidad
manteniendo una alta calidad.
La simplicidad ayuda a que los desarrolladores de
Ante las dificultades para utilizar metodologías software encuentren soluciones más simples a
tradicionales con estas restricciones de tiempo y problemas, según el cliente lo estipula. Los
flexibilidad, muchos equipos de desarrollo se resignan a desarrolladores también crean características en el
prescindir de las buenas prácticas de la Ingeniería del diseño que pudieran ayudar a resolver problemas en un
Software, asumiendo el riesgo que ello conlleva. futuro.

En este contexto las metodologías ágiles emergen 3.3. Retroalimentación


como una posible respuesta para llenar ese vacío
metodológico. Por estar especialmente orientadas para La retroalimentación continua del cliente permite a
proyectos pequeños, las Metodologías Ágiles los desarrolladores llevar y dirigir el proyecto en una
constituyen una solución a medida para ese entorno, dirección correcta hacia donde el cliente quiera.
aportando una elevada simplificación que a pesar de ello
no renuncia a las prácticas esenciales para asegurar la
calidad del producto.
3.4. Valentía comunicando los resultados para mejorar futuras
estimaciones. También realiza el seguimiento del
Requiere que los desarrolladores vayan a la par con progreso de cada iteración y evalúa si los objetivos son
el cambio, por que sabemos que este cambio es alcanzables con las restricciones de tiempo y recursos
inevitable, pero el estar preparado con una metodología presentes.
ayuda a ese cambio. Programa para hoy y no para
mañana. Determina cuándo es necesario realizar algún
cambio para lograr los objetivos de cada iteración.

3.5. Respeto 4.5. Entrenador (Coach)

El equipo debe trabajar como uno, sin hacer Es responsable del proceso global. Es necesario que
decisiones repentinas. Extreme Programming promueve conozca a fondo el proceso XP para proveer guías a los
el trabajo del equipo. Cada integrante del proyecto miembros del equipo de forma que se apliquen las
(cliente, desarrolladores, etc.) forman parte integral del prácticas XP y se siga el proceso correctamente.
equipo encargado de desarrollar software de calidad. El
equipo debe trabajar como uno, sin hacer decisiones 4.6. Consultor
repentinas.
Es un miembro externo del equipo con un
4. ROLES XP conocimiento específico en algún tema necesario para el
proyecto. Guía al equipo para resolver un problema
Aunque en otras fuentes de información aparecen específico.
algunas variaciones y extensiones de roles XP, en este
apartado describiremos los roles de acuerdo con la 4.7. Gestor (Big boss)
propuesta original de Beck.
Es el vínculo entre clientes y programadores, ayuda
4.1. Programador a que el equipo trabaje efectivamente creando las
condiciones adecuadas. Su labor esencial es de
El programador escribe las pruebas unitarias y coordinación.
produce el código del sistema. Debe existir una
comunicación y coordinación adecuada entre los
programadores y otros miembros del equipo. 5. MODELO XP

4.2. Cliente La metodología XP define cuatro variables para


cualquier proyecto de software: costo, tiempo, calidad y
El cliente escribe las historias de usuario y las alcance.
pruebas funcionales para validar su implementación.
Además, asigna la prioridad a las historias de usuario y Además, se especifica que, de estas cuatro variables,
decide cuáles se implementan en cada iteración sólo tres de ellas podrán ser fijadas arbitrariamente por
centrándose en aportar mayor valor al negocio. El cliente actores externos al grupo de desarrolladores (clientes y
es sólo uno dentro del proyecto pero puede corresponder jefes de proyecto). El valor de la variable restante podrá
a un interlocutor que está representando a varias ser establecido por el equipo de desarrollo, en función de
personas que se verán afectadas por el sistema. los valores de las otras tres. Este mecanismo indica que,
por ejemplo, si el cliente establece el alcance y la
4.3. Encargado de pruebas (Tester) calidad, y el jefe de proyecto el precio, el grupo de
desarrollo tendrá libertad para determinar el tiempo que
El encargado de pruebas ayuda al cliente a escribir durará el proyecto.
las pruebas funcionales. Ejecuta las pruebas
regularmente, difunde los resultados en el equipo y es Por esto, se trata de realizar ciclos de desarrollo
responsable de las herramientas de soporte para pruebas. cortos (llamados iteraciones), con entregables
funcionales al finalizar cada ciclo. En cada iteración se
4.4. Encargado de seguimiento (Tracker) realiza un ciclo completo de análisis, diseño, desarrollo y
pruebas, pero utilizando un conjunto de reglas y
El encargado de seguimiento proporciona prácticas que caracterizan a XP.
realimentación al equipo en el proceso XP. Su
responsabilidad es verificar el grado de acierto entre las Típicamente un proyecto con XP lleva 10 a 15
estimaciones realizadas y el tiempo real dedicado, ciclos o iteraciones. La siguiente figura esquematiza los
ciclos de desarrollo en cascada e iterativos tradicionales En esta fase, los clientes plantean a grandes rasgos
(por ejemplo, incremental o espiral), comparados con el las historias de usuario que son de interés para la primera
de XP. entrega del producto. Al mismo tiempo el equipo de
desarrollo se familiariza con las herramientas,
tecnologías y prácticas que se utilizarán en el proyecto.

Se prueba la tecnología y se exploran las


posibilidades de la arquitectura del sistema construyendo
un prototipo. La fase de exploración toma de pocas
semanas a pocos meses, dependiendo del tamaño y
familiaridad que tengan los programadores con la
tecnología.

6.2. Fase II: Planificación de la Entrega


Fig. 1 Evolución de los largos ciclos de desarrollo en cascada (a) a
ciclos iterativos más cortos (b) y a la mezcla que hace XP.
En esta fase el cliente establece la prioridad de cada
historia de usuario, y correspondientemente, los
programadores realizan una estimación del esfuerzo
6. PROCESO XP
necesario de cada una de ellas. Se toman acuerdos sobre
el contenido de la primera entrega y se determina un
Un proyecto XP tiene éxito cuando el cliente
cronograma en conjunto con el cliente. Una entrega
selecciona el valor de negocio a implementar basado en
debería obtenerse en no más de tres meses. Esta fase
la habilidad del equipo para medir la funcionalidad que
dura unos pocos días.
puede entregar a través del tiempo. El ciclo de desarrollo
consiste (a grandes rasgos) en los siguientes pasos:
Las estimaciones de esfuerzo asociado a la
implementación de las historias la establecen los
El cliente define el valor de negocio a implementar.
programadores utilizando como medida el punto. Un
El programador estima el esfuerzo necesario para su punto, equivale a una semana ideal de programación.
implementación. Las historias generalmente valen de 1 a 3 puntos. Por
El cliente selecciona qué construir, de acuerdo con otra parte, el equipo de desarrollo mantiene un registro
sus prioridades y las restricciones de tiempo. de la “velocidad” de desarrollo, establecida en puntos
El programador construye ese valor de negocio. por iteración, basándose principalmente en la suma de
Vuelve al paso 1. puntos correspondientes a las historias de usuario que
fueron terminadas en la última iteración.
En todas las iteraciones de este ciclo tanto el cliente
como el programador aprenden. No se debe presionar al La planificación se puede realizar basándose en el
programador a realizar más trabajo que el estimado, ya tiempo o el alcance. La velocidad del proyecto es
que se perderá calidad en el software o no se cumplirán utilizada para establecer cuántas historias se pueden
los plazos. De la misma forma el cliente tiene la implementar antes de una fecha determinada o cuánto
obligación de manejar el ámbito de entrega del producto, tiempo tomará implementar un conjunto de historias. Al
para asegurarse que el sistema tenga el mayor valor de planificar por tiempo, se multiplica el número de
negocio posible con cada iteración. iteraciones por la velocidad del proyecto,
determinándose cuántos puntos se pueden completar. Al
Si bien el ciclo de vida de un proyecto XP es muy planificar según alcance del sistema, se divide la suma
dinámico, se puede separar en las siguientes Fases: de puntos de las historias de usuario seleccionadas entre
la velocidad del proyecto, obteniendo el número de
Exploración, iteraciones necesarias para su implementación.
Planificación de la Entrega (Release),
Iteraciones, El resultado de esta fase es un Plan de Entregas, o
Producción, “Release Plan”
Mantenimiento y
Muerte del Proyecto.
6.3. Fase III: Iteraciones
6.1. Fase I: Exploración
Esta fase incluye varias iteraciones sobre el sistema
antes de ser entregado. El Plan de Entrega está
compuesto por iteraciones de no más de tres semanas. 6.5. Fase V: Mantenimiento
En la primera iteración se puede intentar establecer una
arquitectura del sistema que pueda ser utilizada durante Mientras la primera versión se encuentra en
el resto del proyecto. Esto se logra escogiendo las producción, el proyecto XP debe mantener el sistema en
historias que fuercen la creación de esta arquitectura, sin funcionamiento al mismo tiempo que desarrolla nuevas
embargo, esto no siempre es posible ya que es el cliente iteraciones. Para realizar esto se requiere de tareas de
quien decide qué historias se implementarán en cada soporte para el cliente. De esta forma, la velocidad de
iteración (para maximizar el valor de negocio). Al final desarrollo puede bajar después de la puesta del sistema
de la última iteración el sistema estará listo para entrar en producción. La fase de mantenimiento puede requerir
en producción. nuevo personal dentro del equipo y cambios en su
estructura.
Los elementos que deben tomarse en cuenta durante
la elaboración del Plan de la Iteración son:
6.6. Fase VI: Muerte del Proyecto
historias de usuario no abordadas,
velocidad del proyecto, Es cuando el cliente no tiene más historias para ser
pruebas de aceptación no superadas en la iteración incluidas en el sistema. Esto requiere que se satisfagan
anterior y las necesidades del cliente en otros aspectos como
tareas no terminadas en la iteración anterior. rendimiento y confiabilidad del sistema. Se genera la
documentación final del sistema y no se realizan más
Todo el trabajo de la iteración es expresado en cambios en la arquitectura. La muerte del proyecto
tareas de programación, cada una de ellas es asignada a también ocurre cuando el sistema no genera los
un programador como responsable, pero llevadas a cabo beneficios esperados por el cliente o cuando no hay
por parejas de programadores. presupuesto para mantenerlo.

7. REGLAS Y PRÁCTICAS

La metodología XP tiene un conjunto importante de


reglas y prácticas. En forma genérica, se pueden agrupar
en:

Reglas y prácticas para la Planificación


Fig. 2 Iteración
Reglas y prácticas para el Diseño
Reglas y prácticas para el Desarrollo
Reglas y prácticas para las Pruebas
6.4. Fase IV: Producción

La fase de producción requiere de pruebas 7.1. Planificación


adicionales y revisiones de rendimiento antes de que el
sistema sea trasladado al entorno del cliente. Al mismo La metodología XP plantea la planificación como un
tiempo, se deben tomar decisiones sobre la inclusión de dialogo continuo entre las partes involucradas en el
nuevas características a la versión actual, debido a proyecto, incluyendo al cliente, a los programadores y a
cambios durante esta fase. los coordinadores o gerentes. El proyecto comienza
recopilando “Historias de usuarios”, las que sustituyen a
Es posible que se rebaje el tiempo que toma cada los tradicionales “casos de uso”. Una vez obtenidas las
iteración, de tres a una semana. Las ideas que han sido “historias de usuarios”, los programadores evalúan
propuestas y las sugerencias son documentadas para su rápidamente el tiempo de desarrollo de cada una.
posterior implementación (por ejemplo, durante la fase
de mantenimiento). Si alguna de ellas tiene “riesgos” que no permiten
establecer con certeza la complejidad del desarrollo, se
En esta fase no se realizan más desarrollos realizan pequeños programas de prueba (“spikes”), para
funcionales, pero pueden ser necesarias tareas de ajuste reducir estos riesgos. Una vez realizadas estas
(“fine tuning”). estimaciones, se organiza una reunión de planificación,
con los diversos actores del proyecto (cliente,
desarrolladores, gerentes), a los efectos de establecer un
plan o cronograma de entregas (“Release Plan”) en los
que todos estén de acuerdo. Una vez acordado este tipo de actividad (nueva, corrección, mejora),
cronograma, comienza una fase de iteraciones, en dónde prueba funcional, número de historia,
en cada una de ellas se desarrolla, prueba e instala unas prioridad técnica y del cliente,
pocas “historias de usuarios”. referencia a otra historia previa,
riesgo,
Según Martín Fowler (uno de los firmantes del estimación técnica,
“Agile Manifesto”), los planes en XP se diferencian de
descripción,
las metodologías tradicionales en tres aspectos:
notas y una lista de seguimiento con la fecha,
estado cosas por terminar y comentarios.
Simplicidad del plan. No se espera que un plan
requiera de un “gurú” con complicados sistemas de
gerenciamiento de proyectos. 7.1.2. Plan de entregas (“Release Plan”)
Los planes son realizados por las mismas personas El cronograma de entregas establece qué
que realizarán el trabajo. historias de usuario serán agrupadas para conformar
una entrega, y el orden de las mismas. Este
Los planes no son predicciones del futuro, sino cronograma será el resultado de una reunión entre
simplemente la mejor estimación de cómo saldrán las todos los actores del proyecto (cliente,
cosas. Los planes son útiles, pero necesitan ser desarrolladores, gerentes, etc.).
cambiados cuando las circunstancias lo requieren. De
otra manera, se termina en situaciones en las que el plan XP denomina a esta reunión “Juego de
y la realidad no coinciden, y en estos casos, el plan es planeamiento” (“Planning game”), pero puede
totalmente inútil. denominarse de la manera que sea más apropiada al
tipo de empresa y cliente (por ejemplo, Reunión de
Los conceptos básicos de esta planificación son los planeamiento, “Planning meeting” o “Planning
siguientes: workshop”) Típicamente el cliente ordenará y
agrupará según sus prioridades las historias de
usuario. El cronograma de entregas se realiza en
7.1.1. Las Historias de Usuario
base a las estimaciones de tiempos de desarrollo
realizadas por los desarrolladores.
Las historias de usuario son la técnica
utilizada en XP para especificar los requisitos del
Luego de algunas iteraciones es recomendable
software. Se trata de tarjetas de papel en las cuales
realizar nuevamente una reunión con los actores del
el cliente describe brevemente las características que
proyecto, para evaluar nuevamente el plan de
el sistema debe poseer, sean requisitos funcionales
entregas y ajustarlo si es necesario.
o no funcionales.

El tratamiento de las historias de usuario es 7.1.3. Plan de iteraciones (“Iteration Plan”)


muy dinámico y flexible, en cualquier momento
historias de usuario pueden romperse, remplazarse Las historias de usuarios seleccionadas para
por otras más específicas o generales, añadirse cada entrega son desarrolladas y probadas en un
nuevas o ser modificadas. Cada historia de usuario ciclo de iteración, de acuerdo al orden prestablecido.
es lo suficientemente comprensible y delimitada Al comienzo de cada ciclo, se realiza una reunión
para que los programadores puedan implementarla de planificación de la iteración.
en unas semanas.
Cada historia de usuario se traduce en tareas
Respecto de la información contenida en la específicas de programación.
historia de usuario, existen varias plantillas
sugeridas pero no existe un consenso al respecto. En Así mismo, para cada historia de usuario se
muchos casos sólo se propone utilizar un nombre y establecen las pruebas de aceptación.
una descripción o sólo una descripción, más quizás
una estimación de esfuerzo en días. Beck en su libro Estas pruebas se realizan al final del ciclo en
presenta un ejemplo de ficha (customer story and el que se desarrollan, pero también al final de cada
task card) en la cual pueden reconocerse los uno de los ciclos siguientes, para verificar que
siguientes contenidos: subsiguientes iteraciones no han afectado a las
anteriores. Las pruebas de aceptación que hayan
Fecha, fallado en el ciclo anterior son analizadas para
evaluar su corrección, así como para prever que no embargo, como ya está pronto y “funciona”, rara vez
vuelvan a ocurrir. es rescrito.

Las metodologías de XP sugieren recodificar


7.1.4. Reuniones diarias de seguimiento (“Stand-up cada vez que sea necesario. Si bien, puede parecer
meeting”) una pérdida de tiempo innecesaria en el plazo
inmediato, los resultados de ésta práctica tienen sus
El objetivo de tener reuniones diarias es frutos en las siguientes iteraciones, cuando sea
mantener la comunicación entre el equipo, y necesario ampliar o cambiar la funcionalidad. La
compartir problemas y soluciones. En la mayoría de filosofía que se persigue es, como ya se mencionó,
estas reuniones, gran parte de los participantes tratar de mantener el código más simple posible que
simplemente escuchan, sin tener mucho que aportar. implemente la funcionalidad deseada.
Para no quitar tiempo innecesario del equipo, se
sugiere realizar estas reuniones en círculo y de pie.
7.2.4. Metáforas

7.2. Diseño Una “metáfora” es algo que todos entienden,


sin necesidad de mayores explicaciones. La
La metodología XP hace especial énfasis en metodología XP sugiere utilizar este concepto como
los diseños simples y claros. Los conceptos más una manera sencilla de explicar el propósito del
importantes de diseño en esta metodología son los proyecto, y guiar la estructura y arquitectura del
siguientes: mismo. Por ejemplo, puede ser una guía para la
nomenclatura de los métodos y las clases utilizadas
en el diseño del código. Tener nombres claros, que
7.2.1. Simplicidad: no requieran de mayores explicaciones, redunda en
un ahorro de tiempo.
Un diseño simple se implementa más
rápidamente que uno complejo. Por ello XP propone Es muy importante que el cliente y el grupo
implementar el diseño más simple posible que de desarrolladores estén de acuerdo y compartan
funcione. Se sugiere nunca adelantar la esta “metáfora”, para que puedan dialogar en un
implementación de funcionalidades que no “mismo idioma”. Una buena metáfora debe ser fácil
correspondan a la iteración en la que se esté de comprender para el cliente y a su vez debe tener
trabajando. suficiente contenido como para que sirva de guía a
la arquitectura del proyecto. Sin embargo, ésta
práctica resulta, muchas veces, difícil de realizar.
7.2.2. Soluciones “spike”

Cuando aparecen problemas técnicos, o 7.3. Desarrollo


cuando es difícil de estimar el tiempo para
implementar una historia de usuario, pueden
utilizarse pequeños programas de prueba (llamados
“spike”), para explorar diferentes soluciones. Estos
programas son únicamente para probar o evaluar
una solución, y suelen ser desechados luego de su
evaluación.

7.2.3. Recodificación
Fig. 2 Desarrollo
La recodificación (“refactoring”) consiste en
escribir nuevamente parte del código de un
programa, sin cambiar su funcionalidad, a los
efectos de hacerlo más simple, conciso y/o 7.3.1. Disponibilidad del cliente
entendible. Muchas veces, al terminar de escribir un
código de programa, pensamos que, si lo Uno de los requerimientos de XP es tener al
comenzáramos de nuevo, lo hubiéramos hecho en cliente disponible durante todo el proyecto. No
forma diferente, mas clara y eficientemente. Sin solamente como apoyo a los desarrolladores, sino
formando parte del grupo.
El involucramiento del cliente es fundamental Adicionalmente, la programación en pares tiene
para que pueda desarrollarse un proyecto con la las siguientes ventajas:
metodología XP.
La mayoría de los errores se descubren en el
Al comienzo del proyecto, el cliente debe momento en que se codifican, ya que el código
proporcionar las historias de usuarios. es permanentemente revisado por dos personas.

Pero, dado que estas historias son La cantidad de defectos encontrados en las
expresamente cortas y de “alto nivel”, no contienen pruebas es estadísticamente menor.
los detalles necesarios para realizar el desarrollo del
código. Estos detalles deben ser proporcionados por Los diseños son mejores y el código más corto.
el cliente, y discutidos con los desarrolladores, El equipo resuelve problemas en forma más
durante la etapa de desarrollo. No se requieren de rápida.
largos documentos de especificaciones, sino que los Las personas aprenden significativamente más,
detalles son proporcionados por el cliente, en el acerca del sistema y acerca de desarrollo de
momento adecuado, “cara a cara” a los software.
desarrolladores. El proyecto termina con más personas que
conocen los detallas de cada parte del código.
Las personas aprenden a trabajar juntas,
7.3.2. Uso de estándares
generando mejor dinámica de grupo y haciendo
que la información fluya rápidamente.
Si bien esto no es una idea nueva, XP
promueve la programación basada en estándares, de Las personas disfrutan más de su trabajo.
manera que sea fácilmente entendible por todo el
equipo, y que facilite la recodificación.
7.3.5. Integraciones permanentes
7.3.3. Programación dirigida por las pruebas
(“Test-driven programming”) Todos los desarrolladores necesitan trabajar
siempre con la “última versión”. Realizar cambios o
En las metodologías tradicionales, la fase de mejoras sobre versiones antiguas causan graves
pruebas, incluyendo la definición de los tests, es problemas, y retrasan al proyecto. Es por eso que
usualmente realizada sobre el final del proyecto, o XP promueve publicar lo antes posible las nuevas
sobre el final del desarrollo de cada módulo. La versiones, aunque no sean las últimas, siempre que
metodología XP propone un modelo inverso, en el estén libres de errores. Idealmente, todos los días
que, lo primero que se escribe son los test que el deben existir nuevas versiones publicadas. Para
sistema debe pasar. Luego, el desarrollo debe ser el evitar errores, solo una pareja de desarrolladores
mínimo necesario para pasar las pruebas puede integrar su código a la vez.
previamente definidas.
7.3.6. Propiedad colectiva del código
Las pruebas a los que se refieren esta práctica,
son las pruebas unitarias, realizados por los
En un proyecto XP, todo el equipo puede
desarrolladores. La definición de estos test al
contribuir con nuevas ideas que apliquen a cualquier
comienzo, condiciona o “dirige” el desarrollo.
parte del proyecto. Asimismo, cualquier pareja de
programadores puede cambiar el código que sea
7.3.4. Programación en pares necesario para corregir problemas, agregar
funciones o recodificar. En otras metodologías, este
XP propone que se desarrolle en pares de concepto puede parecer extraño. Muchas veces se
programadores, ambos trabajando juntos en un asume que, si hay algo de propiedad colectiva, la
mismo ordenador. Si bien parece que ésta práctica responsabilidad también es colectiva. Y que “todos
duplica el tiempo asignado al proyecto (y por ende, sean responsables”, muchas veces significa que
los costos en recursos humanos), al trabajar en pares “nadie es responsable”.
se minimizan los errores y se logran mejores
diseños, compensando la inversión en horas. El
7.3.7. Ritmo sostenido
producto obtenido es por lo general de mejor calidad
que cuando el desarrollo se realiza por
programadores individuales.
La metodología XP indica que debe llevarse
un ritmo sostenido de trabajo. Anteriormente, ésta Las pruebas de aceptación son consideradas
práctica se denominaba “Semana de 40 horas”. Sin como “pruebas de caja negra” (“Black box system
embargo, lo importante no es si se trabajan, 35, 40 o tests”). Los clientes son responsables de verificar
42 horas por semana. El concepto que se desea que los resultados de estas pruebas sean correctos.
establecer con esta práctica es el de planificar el Asimismo, en caso de que fallen varias pruebas,
trabajo de manera de mantener un ritmo constante y deben indicar el orden de prioridad de resolución.
razonable, sin sobrecargar al equipo.
Una historia de usuario no se puede
Cuando un proyecto se retrasa, trabajar considerar terminada hasta tanto pase correctamente
tiempo extra puede ser más perjudicial que todas las pruebas de aceptación. Dado que la
beneficioso. El trabajo extra desmotiva responsabilidad es grupal, es recomendable publicar
inmediatamente al grupo e impacta en la calidad del los resultados de las pruebas de aceptación, de
producto. En la medida de lo posible, se debería manera que todo el equipo esté al tanto de esta
renegociar el plan de entregas (“Release Plan”), información.
realizando una nueva reunión de planificación con el
cliente, los desarrolladores y los gerentes.
Adicionalmente, agregar más desarrolladores en 8. VENTAJAS Y DESVENTAJAS
proyectos ya avanzados no siempre resuelve el
problema.
8.1. Ventajas
7.4. Pruebas
Evidentemente, para que algo esté siendo tomado
tan en cuenta como la XP, debe ofrecer una serie de
7.4.1. Pruebas unitarias ventajas a la hora de ponerlo en práctica que haga que el
esfuerzo de entender y aplicar sus prácticas, sea
Las pruebas unitarias son una de las piedras insignificante con respecto a los beneficios obtenidos.
angulares de XP. Todos los módulos deben de pasar
las pruebas unitarias antes de ser liberados o Se consiguen productos usables con mayor rapidez.
publicados. Las pruebas deben ser definidas antes de El proceso de integración es continuo, por lo que el
realizar el código (“Test-driven programming”). esfuerzo final para la integración es nulo. Se
consigue integrar todo el trabajo con mucha mayor
Que todo código liberado pase correctamente facilidad.
las pruebas unitarias es lo que habilita que funcione Se atienden las necesidades del usuario con mayor
la propiedad colectiva del código. En este sentido, el exactitud. Esto se consigue gracias a las continuas
sistema y el conjunto de pruebas debe ser guardado versiones que se ofrecen al usuario.
junto con el código, para que pueda ser utilizado por
Se consiguen productos más fiables y robustos
otros desarrolladores, en caso de tener que corregir,
contra los fallos gracias al diseño de los test de
cambiar o recodificar parte del mismo.
forma previa a la codificación.
Obtenemos código más simple y más fácil de
7.4.2. Detección y corrección de errores entender, reduciendo el número de errores.
Gracias a la filosofía del “pair programming”
Cuando se encuentra un error (“bug”), éste (programación en parejas), se consigue que los
debe ser corregido inmediatamente, y se deben tener desarrolladores apliquen las buenas prácticas que se
precauciones para que errores similares no vuelvan a les ofrecen con la XP.
ocurrir. Asimismo, se generan nuevas pruebas para Gracias al “refactoring” es más fácil el modificar los
verificar que el error haya sido resuelto. requerimientos del usuario.
Conseguimos tener un equipo de desarrollo más
contento y motivado. Las razones son, por un lado
7.4.3. Pruebas de aceptación el que la XP no permite excesos de trabajo (se debe
trabajar 40 horas a la semana), y por otro la
Las pruebas de aceptación son creadas en comunicación entre los miembros del equipo que
base a las historias de usuarios, en cada ciclo de la consigue una mayor integración entre ellos.
iteración del desarrollo. El cliente debe especificar
uno o diversos escenarios para comprobar que una
historia de usuario ha sido correctamente 8.2. Desventajas
implementada.
Resulta muy complicado planear el proyecto y 10. BIBLIOGRAFÍA
establecer el costo y la duración del mismo.
[1] BECK Kent, MARTIN Fowler. Planning Extreme Programming
No se puede aplicar a proyectos de gran escala, que 2da. Edición, Boston, 2004.
requieran mucho personal, a menos que se las [2] SOMMERVILLE Ian. Ingeniería del Software 7ma. Edición,
subdivida en proyectos más pequeños. Pearson Educación S.A, Madrid, 2006.
Es más complicado medir los avances del proyecto, [3] FERNANDEZ Luis. Una revisión sistemática de la adaptación
del proceso software, Revista Española de Innovación Calidad e
pues es muy complicado el uso de una medida Ingeniería del Software (REICES), Vol.3, No. 2, Pág. 21-38,
estándar. Octubre 2007.
Altas comisiones en caso de fallar. [4] CASTRO Paco, Programación Orientada a Objetos, Revista del
Instituto Tecnológico de Informática, Vol. 1, No. 1, Pág. 4,
Octubre 2004.
[5] MARCK C. Paulk, Extreme Programming from a CMM
9. CONCLUSIONES Y RECOMENACIONES Perspective, Revista FOCUS, Vol. 1, No.1, Pág. 8, December
2002
[6] ANONIMO, Detalles de Metodología Xp,
9.1. Conclusiones http://www.extremeprogramming.org/, 15 de Diciembre de 2012.
[7] ANONIMO, Extreme Programming: A Gentle Introduction,
Es difícil estimar el costo y duración del proyecto http://www.extremeprogramming.org/, 15 de Diciembre de 2013
por no existir una definición desde inicio. [8] CALDERON Amaro, Metodologías Ágiles,
http://seccperu.org/files/Metodologias%20Agiles.pdf, 15 de
El cliente le da un valor agregado al proyecto ya que Diciembre de 2013
[9] CASTILLO Oswaldo, FIGUEROA Daniel, SEVILLA Héctor.
ayuda a que los requerimientos sean más Programación Extrema,
compresibles y de fácil aprobación. http://programacionextrema.tripod.com/index.htm, 10 de
diciembre 2013
[10] VALVERDE David, Introducción a la Programación Extrema
Organiza a los integrantes del equipo para trabajar a
(XP), http://www.davidvalverde.com/blog/introduccion-a-la-
un mismo ritmo divertido y con horario adecuado. programacion-extrema-xp/, 11 de Diciembre 2013

Los desarrolladores deben estar involucrados en


todas las funcionalidades del proyecto

La programación en parejas ayuda a reducir costo y


tiempos y mejorar la calidad del proyecto.

Los métodos en cascada o espiral son los más


adecuados para proyectos.

Que requieran decenas de desarrolladores y en los


que las especificaciones estén claramente
determinadas desde el comienzo.

9.2. Recomendaciones.

Para proyectos medianos, y en los que las


especificaciones no se puedan obtener hasta luego
de comenzado el proyecto, XP es la metodología
recomendada.

Usar XP en equipos pequeños de desarrollo que no


superen a 20

Se debe involucrar al cliente en el desarrollo del


proyecto desde el inicio hasta el final ya que es
indispensable que conozca y apruebe la
metodología.

Los desarrolladores deben compartan el código y ser


responsables del código de todo el proyecto.

También podría gustarte