Republica bolivariana de Venezuela
Ministerio del poder popular para la educación
Universidad Experimental de los Llanos Occidentales
“EZEQUIEL ZAMORA”
PROGRAMACION
EXTREMA
PROFESORA: INTEGRANTES
Kelly Gomez Carlos Archila
Junior Castillo
Gavier Coa
Albanis Bautista
David Roman
Definición de XP como una metodología ágil
La programación extrema es una metodología ágil de gestión de proyectos que se
centra en la velocidad y la simplicidad con ciclos de desarrollo cortos y con menos
documentación. La estructura del proceso está determinada por 5 valores
fundamentales, 5 reglas y 12 prácticas de XP (que detallaremos más adelante en
este artículo).
Al igual que otras metodologías ágiles, la programación extrema es una método de
desarrollo de software dividido en sprints de trabajo. Los marcos ágiles siguen un
proceso iterativo, en el que se completa y revisa el marco al final de cada sprint,
refinándolo para adaptarlo a los requisitos cambiantes y alcanzar la eficiencia
máxima. Al igual que otros métodos ágiles, el diseño de la programación extrema
permite a los desarrolladores responder a las solicitudes de los clientes, adaptarse
y realizar cambios en tiempo real. Sin embargo, la programación extrema es mucho
más disciplinada; realiza revisiones de código frecuentes y pruebas unitarias para
realizar cambios rápidamente. Además es muy creativa y colaborativa, ya que
promueve el trabajo en equipo durante todas las etapas de desarrollo.
Historia de XP
eXtreme Programming, también llamada XP, es una metodología de programación
considerada ágil, aunque se creó en 1996, años antes de que se firmara el
Manifiesto Ágil. Los fundamentos de XP vienen de las prácticas tomadas a cabo por
Kent Beck en un proyecto para el pago de nóminas en Chrysler. El trabajo de Kent
en este proyecto se hizo popular por haber tenido éxito en tan sólo un año y dos
meses cuando un equipo de 30 personas había fracasado durante años.
Esta aplicación de nóminas, llamada C3, pretendía sustituir una aplicación anterior
hecha con una tecnología antigua. En el momento de la incorporación de Kent al
proyecto, tres años después de su inicio, C3 no había podido pagar una sola nómina
en Chrysler.
Implementando principios de las industrias de fabricación, como Lean
Manufacturing, el equipo de Kent consiguió aumentar enormemente la eficiencia del
sistema. Al principio se calculaba que ejecutar el proceso de pago de nóminas
llevaría unas 1000 horas. Diversas actividades de mejora redujeron este tiempo a
alrededor de 40 horas, luego a 12 y por último quedó en tan sólo 9 horas.
A pesar del gran avance que supusieron estas técnicas, el proyecto C3 fue
cancelado solo unos años después, en el 2000, tras la compra de Chrysler por
Daimler-Benz. Con esto puede verse que, usar XP, no es una garantía de éxito.
Principios Básicos
La programación extrema está impulsada por el valor. En lugar de usar motivadores
externos, la programación extrema permite que tu equipo trabaje de una manera
más sencilla (priorizando la simplicidad y la colaboración sobre diseños complejos),
basándose siempre en estos cinco valores.
1. Simplicidad
Antes de empezar cualquier trabajo de programación extrema, debes hacerte la
siguiente pregunta: ¿Cuál es el proceso más simple y que también funciona? El
concepto “que también funciona” es un diferenciador clave ya que lo más simple no
siempre es práctico o efectivo. En la programación extrema, tu atención se centra
en realizar primero el trabajo más importante. Esto significa que debes buscar un
proyecto simple que sabes que puedes lograr.
2. Comunicación
XP se basa en una respuesta rápida y una comunicación efectiva. Para trabajar de
manera efectiva, el equipo debe ser abierto y honesto entre sí. Cuando surgen
problemas, se espera que todos aporten sus comentarios e ideas, ya que
probablemente alguno de ellos ya tenga una solución adecuada. Y si no la tiene,
podrán resolver el problema más rápidamente como grupo de lo que podrían hacerlo
solos.
3. Comentarios
Al igual que otras metodologías ágiles, el método XP incorpora comentarios
e historias de usuarios directamente en el proceso. El enfoque de XP es producir
trabajo de forma rápida y sencilla, para luego compartir los resultados para obtener
comentarios de forma casi inmediata. Por eso, los desarrolladores están en contacto
casi constante con los clientes durante todo el proceso. En la programación
extrema, se lanzan varias versiones con regularidad para obtener información
nueva desde el primer momento y con frecuencia. Podrás adaptar el proceso (en
lugar del proyecto) para incorporar los comentarios recibidos de clientes. Por
ejemplo, si los comentarios ayudan a reducir el tiempo de retraso innecesario,
podrás ajustar el proceso para que los desarrolladores trabajen para mejorar el
tiempo de retraso en lugar de ajustar el proyecto completo.
4. Valentía
Para implementar la programación extrema, se requiere de mucha valentía. Siempre
se espera que seas honesto al brindar actualizaciones al equipo sobre tu progreso,
lo que puede dejarte en una posición de vulnerabilidad. Si no cumples con una fecha
de entrega en la programación extrema, es probable que al líder de tu equipo no le
interese analizar los motivos. En cambio, le dirías que no cumpliste con la fecha de
entrega, te responsabilizarías por ello y te pondrías a trabajar nuevamente.
Si eres líder de un equipo, tu responsabilidad al comienzo del proceso de XP será
establecer las expectativas de éxito y definir lo que será “el trabajo terminado”. A
menudo suele haber poca planificación para lidiar con el fracaso ya que el equipo
se centra principalmente en el éxito. Sin embargo, puede ser un poco alarmante ya
que sabemos que las cosas no siempre suceden como se planifican. Pero si surgen
cambios durante el proceso de XP, se espera que el equipo se adapte y acompañe
estos cambios.
5. Respeto
Teniendo en cuenta que las comunicaciones y la honestidad son prioridad en el
método XP, tiene sentido que el respeto sea una virtud esencial. Para que los
equipos se comuniquen y colaboren de manera efectiva, deben aprender a estar en
desacuerdo. Pero hay maneras de hacerlo amablemente. El respeto es una base
importante que promueve la bondad y la confianza, incluso cuando se expresan las
opiniones con total honestidad. Para la programación extrema, estas son las
expectativas:
Respeto mutuo entre los clientes y el equipo de desarrollo.
Respeto mutuo entre los miembros del equipo.
El reconocimiento de que todos en el equipo aportan algo valioso al proyecto.
Elementos
en el proceso de desarrollo de XP.
Los valores de la programación extrema son los aspectos más filosóficos. Las
reglas, por otro lado, son los usos prácticos de cómo se realiza el trabajo.
Necesitarás contar con ambos aspectos para gestionar un equipo XP efectivo.
1. Planificación
Durante las etapas de planificación de la programación extrema, deberás
determinar si el proyecto es viable y si se adapta al método XP. Para hacer esto,
deberás evaluar:
Las historias de usuarios para confirmar que coinciden con el valor de
simplicidad y garantizar que el cliente esté disponible para participar del
proceso. Si la historia del usuario es más compleja o fue creada por un cliente
anónimo, es probable que no sea adecuada para el método XP.
El valor comercial y el nivel de prioridad del proyecto para asegurarte de que
esté alineado con la idea de “realizar el trabajo más importante primero”.
La etapa de desarrollo en la que te encuentras. La programación extrema se
adapta mejor al desarrollo en sus etapas iniciales y no será un método tan
efectivo para iteraciones posteriores.
Una vez que hayas confirmado que el proyecto es viable para implementar la
programación extrema, te recomendamos crear un cronograma de lanzamiento. Sin
embargo, es importante tener en cuenta que debes lanzarlo tan pronto sea posible
y con frecuencia para poder obtener comentarios. Para hacer esto:
Divide el proyecto en iteraciones y crea un plan para cada una.
Establece plazos realistas y un ritmo de trabajo sostenible.
Comparte actualizaciones a medida que ocurren para permitir que el equipo
sea lo más honesto y transparente posible.
Comparte actualizaciones en tiempo real para ayudar al equipo a identificar,
adaptar y realizar cambios más rápidamente.
Usa una herramienta de gestión de proyectos para crear un tablero Kanban o
un cronograma para poder dar seguimiento al progreso en tiempo real.
2. Gestión
Uno de los elementos clave de la programación extrema es el espacio de trabajo.
Los puristas de XP recomiendan usar un espacio de trabajo abierto donde todos los
miembros del equipo puedan trabajar juntos. Debido a que la programación extrema
es altamente colaborativa, es una ventaja contar con un espacio donde puedan
reunirse todos los colaboradores físicamente. Sin embargo, en estas épocas, esta
no siempre es una solución práctica o factible. Si trabajas en un equipo remoto,
considera usar una plataforma que fomente el trabajo asincrónico para
la colaboración remota. De esta manera, todos los miembros podrán trabajar juntos
en el proyecto, incluso si no se encuentran en el mismo espacio físico.
Al igual que con otros métodos ágiles, puedes organizar reuniones diarias de
actualización para verificar el estado del trabajo y fomentar las comunicaciones
abiertas y constantes. Te recomendamos implementar un ciclo semanal y un ciclo
trimestral. Durante el ciclo trimestral, tu equipo y tú revisarán las historias que
guiarán el trabajo a realizar. También analizarán los procesos de XP, para identificar
brechas u oportunidades para realizar cambios. Luego, trabajarás en ciclos
semanales, que comenzarán con una reunión con el cliente. El cliente elegirá la
historia de usuario para que los programadores trabajen esa semana.
Como gerente o líder de equipo, tu atención deberá centrarse en mantener el
progreso constante del trabajo, supervisar el ritmo, gestionar la carga de trabajo del
equipo para que puedan trabajar en los errores o problemas a medida que surjan,
o cambiar el proceso de XP para que se ajuste a tu proyecto e iteración actuales.
Recuerda que el objetivo de la programación extrema es ser flexible y ágil, por lo
que tu trabajo estará muy centrado en el trabajo actual del equipo y en poder
responder rápidamente a cualquier cambio.
3. Diseño
Si recién incursionas en la programación extrema, te recomemos empezar con el
diseño más simple posible, ya que las iteraciones posteriores incrementarán su
complejidad. Intenta no agregar ninguna funcionalidad temprana durante esta etapa
para mantener el proceso lo más sencillo posible.
Los equipos de metodología XP a menudo usan tarjetas de clase, responsabilidad
y colaboración (CRC, por sus siglas en inglés) para mostrar cómo interactúa cada
elemento en el diseño global. Al completar cada campo de la tarjeta, podrás obtener
una imagen visual de cómo se relacionan e interactúan todas las funciones. Las
tarjetas CRC incluyen:
Clase (conjunto de elementos similares)
Responsabilidades (según la clase)
Colaboradores (clase que interactúa con el colaborador en cuestión)
Las tarjetas CRC son útiles para simular el proceso y detectar problemas
potenciales. Independientemente del tipo de diseño, te recomendamos usar un
sistema que permita reducir los cuellos de botella potenciales. Para esto, asegúrate
de prevenir los riesgos de manera proactiva. Tan pronto como descubras una
amenaza potencial, asigna uno o dos miembros del equipo para encontrar una
solución en caso de que suceda.
4. Codificación
Uno de los aspectos clave de la programación extrema es el contacto permanente
que mantendrás con el cliente durante todo el proceso de codificación. Esta
interacción te permite probar e incorporar comentarios dentro de cada iteración, en
lugar de esperar hasta el final de cada sprint. Sin embargo, las reglas de codificación
son bastante estrictas en el método XP. Algunas incluyen:
Todo el código debe cumplir con el estándar de programación.
Se deben realizar pruebas unitarias para definir los requisitos y desarrollar
todos los aspectos del proyecto.
La programación se realiza en parejas: dos desarrolladores trabajan juntos y
simultáneamente en la misma computadora. El tiempo de programación
sigue siendo el mismo; sin embargo, se duplica el enfoque para lograr
resultados de la más alta calidad posible.
Se deben usar integraciones continuas para agregar código nuevo y probarlo
de inmediato.
Solo un par de desarrolladores puede actualizar el código en un momento
dado para reducir los errores.
Propiedad colectiva del código: cualquier miembro del equipo puede cambiar
el código en cualquier momento.
5. Prueba
Deberás realizar pruebas durante todo el proceso de programación extrema. Todo
el código deberá someterse a pruebas unitarias antes de su lanzamiento. Si
detectas errores durante estas pruebas, necesitarás crear pruebas adicionales para
corregirlos. Más adelante, incorporarás la misma historia de usuario en la que has
estado trabajando en una prueba de aceptación. Durante esta prueba, el cliente
examinará los resultados para comprobar que has implementado correctamente la
historia de usuario al producto.
Fases
FASE 1: PLANIFICACIÓN
Según la identificación de las historias de usuario, se priorizan y se descomponen
en mini-versiones. La planificación se va a ir revisando. Cada dos semanas
aproximadamente de iteración, se debe obtener un software útil, funcional, listo para
probar y lanzar.
FASE 2: DISEÑO
En este paso se intentará trabajar con un código sencillo, haciendo lo mínimo
imprescindible para que funcione. Se obtendrá el prototipo. Además, para el diseño
del software orientado a objetos, se crearán tarjetas CRC (Clase-Responsabilidad-
Colaboración).
FASE 3: CODIFICACIÓN «DE TODOS»
La programación aquí se hace «a dos manos», en parejas en frente del mismo
ordenador. Incluso, a veces se intercambian las parejas. De esta forma, nos
aseguramos que se realice un código más universal, con el que cualquier otro
programador podría trabajar y entender. Y es que deber parecer que ha sido
realizado por una única persona. Así se conseguirá una programación organizada
y planificada.
FASE 4: PRUEBAS
Se deben realizar pruebas automáticas continuamente. Al tratarse normalmente de
proyectos a corto plazo, este testeo automatizado y constante es clave. Además, el
propio cliente puede hacer pruebas, proponer nuevas pruebas e ir validando las
mini-versiones.
FASE 5: LANZAMIENTO
Si hemos llegado a este punto, significa que hemos probado todas las historias de
usuario o mini-versiones con éxito, ajustándonos a los requerimientos del clientes.
Tenemos un software útil y podemos incorporarlo en el producto.
Ciclo de vida de xp
El ciclo de vida de XP fomenta la integración continua, ya que requiere que los
miembros del equipo trabajen casi constantemente, cada hora o todos los días. Sin
embargo, el ciclo de vida completo se estructura de la siguiente manera:
Extraer trabajos sin finalizar de las historias de usuarios
Priorizar los elementos más importantes
Comenzar con la planificación iterativa
Incorporar un plan realista
Mantener una comunicación constante con todas las partes interesadas y
empoderar al equipo
Presentar el trabajo
Recibir comentarios
Regresar a la etapa de planificación iterativa y repetir si es necesario
Definición y características de los elementos del ciclo de vida.
Como la programación extrema se centra en el desarrollo de software, suele ser
implementada solamente por los equipos de ingeniería. Incluso los equipos de
software, suelen usarla únicamente para determinadas configuraciones. Para
obtener el máximo beneficio de la programación extrema, recomendamos usarla en
los siguientes casos:
Para gestionar un equipo más pequeño. Debido a su naturaleza altamente
colaborativa, la programación extrema funciona mejor en equipos pequeños
de menos de diez personas.
Si estás constantemente en contacto con tus clientes. La programación
extrema incorpora los requisitos de los clientes a lo largo del proceso de
desarrollo y también se basa en ellos para las pruebas y aprobaciones.
Si trabajas con un equipo flexible que pueda aceptar el cambio (sin
resentimientos). Dada su propia naturaleza, la programación extrema a
menudo requerirá que todo el equipo deseche todo su arduo trabajo. Algunas
reglas también permiten que algunos miembros del equipo realicen cambios
en cualquier momento, lo que supondría un problema si los demás
compañeros del equipo se lo toman como algo personal.
Si dominas los aspectos técnicos de la codificación. La programación
extrema no es para principiantes ya que necesitas poder trabajar e
implementar cambios rápidamente.