Programación extrema. Alguien me explica?

Alguien podría explicarme como es esto de la programación extrema.
(si, si... ya sé que hay mucha documentación en Goolge :D )
Lo que yo quisiera saber a ciencia cierta es como aplicar todo esa teoría en la practica.
No he encontrado algún material que me diga a ciencia cierta cuál es el camino a seguir, es decir, cuántas fases maneja, que procesos se aplican en cada una de ellas, que productos de trabajo arroja. Y ya me extendí demasiado. (hehe...)
¿Alguien lo ha usado en algún proyecto? Podrían ayudarme a aclarar esa duda.
Gracias de Antemano.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Pues la respuesta a todas

Pues la respuesta a todas esas preguntas con extremo detalle está claramente explicado en:

Si tienes paciencia y lo lees de principio a fin podrás tener una idea mucho más clara de que se trata.

Básicamente, en mis propias palabras y solo para alimentar tu interés se trata de una disciplina que pone énfasis en la construcción de software, la colaboración con el usuario y la aceptación del cambio.

Se tiene la erronea creencia que usando XP no se tiene que hacer análisis o diseño, administración del proyecto , documentación o pruebas, simplemente se hace de forma diferente.

Algunos puntos sobre tus preguntas:

- Se aplica usando iteraciones.
- El camino a seguir es este:

- Fases: 1 la iteración
- Procesos: 1 iterativo e incremental
- Que procesos de aplican en cada una? Realmente se aplican varias disciplinas, en menor o mayor grado dependiendo de la iteración
- Producto: Software funcionando y documentación del software.

Para que tengas una mejor idea de que es hagamos el siguiente experimento.

Ve a esa página, empieza a leer y apenas tengas una duda vuelves aquí y preguntas.

En un método tradicional ( no XP ) te diría, ve lee todo, haces un análisis de lo que entendiste, me haces una lista de todas tus dudas llenas X,Y o Z documentos y lo mandas a blablaha.

En XP lo haces de inmediato.

Así que ve , lee y pregunta.

Byte!

ok

ok bro...
Voy a poner a leerme la documentación. Alguna duda vuelvo y la publico..

Nuevas preguntas sobre XP

Amigo, me puse a leer y mas o menos entendí lo siguiente:

XP tiene en cuenta mayormente los siguientes puntos
- La consulta con cliente
- La importancia de los test
- No exceso de planificación, porque no hay que desperdiciar mucho el tiempo

Las fases de XP, son las siguientes:

*** fase de planificación:
- Recopilar las historias de usuario
- Release planing (calendario), tiempo de implementacion de las historias de usuario.
- Tareas de desarrollo

*** fase de diseño:
- diseños simples
- no agregar funcionalidad extra

*** fase de codificación

*** fase de pruebas
- test de aceptacion

Ahora bien te hago las siguientes preguntas:
1. Algo que no entiendo es que dice que las pruebas deben hacerse antes de la codificación ¿Cómo es eso? Es decir, como voy a probar mi aplicación si aún no esta construida?
2. Como funciona esto de las iteraciones, no vienen siendo cada una de las fases de XP. Eso tampoco lo entedí muy bien.

Gracias de antemano.

Imagen de Sr. Negativo

TDD

Puedes ver esto http://www.javamexico.org/blogs/sr_negativo/tdd_en_la_vida_real

Si, ya sé haciendome publicidad.

Una pregunta mas de XP

Me podrían decir que iría en la fase de diseño?
Es decir ademas de Diagrama de clases, diseño de la base de datos, que elementos agregaría?
Gracias.

"Pero entonces, entendí mal,

"Pero entonces, entendí mal, las pruebas no iban antes de la codificación"

Si, si van antes, pero en vez de ser una "fase" de pruebas amplia y extensa, son pruebas muy chiquitas y precisas, son pruebas unitarias.

Como vas a probar si no está terminada? Pues escribes el código necesario para terminarla y repites, pero de nuevo, no es toda la aplicación es por componente.

Además del post de Sr. Negativo ahi te va algo al respecto:

(

Una iteración en un número fijo de días ( 5, 10, 15, 30 los que el proyecto defina ) donde se hace un poco de todo, análisis, diseño, implementación, pruebas, pero dependiendo de la iteración haces más o menos de algo. Muy similar a la siguiente gráfica:

Aunque esa gráfica es de UP, sirve de ejemplo ( UP finalmente es también una metodología ágil, muy similar al XP )

El punto interesante con XP es que nunca sabes cuantas iteraciones vas a hacer, lo cual es uno de los principales problemas de las metodologias ágiles, no es fácil dar una fecha de término de proyecto. Terminas cuando ya no haya más en el backlog para trabajar. Terminas cuando ya no quieras hacer más iteraciones. La intención de cada iteración es tener una parte del producto terminada ( aunque con funcionalidad limitada )

Ejemplo, si vas a hacer una .... no sé un foro de discusión, en la primera iteración puedes tener una lista de posts sin seguridad, sin formato sin varias cosas pero ya con algo que postee mensajes, en la siguiente iteración le agregas funcionalidad. etc.

Más o menos?

:)

"Me podrían decir que iría en

"Me podrían decir que iría en la fase de diseño?
Es decir ademas de Diagrama de clases, diseño de la base de datos, que elementos agregaría?"

Lo bonito ( o feo ) de XP es que la aplicación es el diseño.

Cuando haces la prueba diseñas que quieres tener, cuando haces el código para satisfacer la prueba implementas ese diseño; cuando haces refactoring mejoras el diseño de tu aplicación existente. Luego puedes documentar lo que ya hiciste.

La idea aquí no es tener una gran documentación de diseño, sino lo más simple posible para que puedas funcionar ( diagramas de clases hechas con papel y lápiz por ejemplo )

Para leer más sobre el tema:

Espero que esto te sirva.

Muchas Gracias

A OscarRyz y a Sr. Negativo.
Muchas gracias por todo. Ahora tengo más entendimiento sobre el tema.

Listo. Si tienes más dudas

Listo.

Si tienes más dudas nos preguntas.

Chau! :) :)