Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Computacin y Sistemas
5. Principios
Los principios fundamentales se apoyan en los valores y tambin son cuatro. Se busca
1. realimentacin veloz,
2. modificaciones incrementales,
3. trabajo de calidad y
4. asuncin de simplicidad.
Los principios suponen un puente entre los valores (algo intrnseco al equipo de desarrollo) y las
prcticas, que se vern, y que estn ms ligadas a las tcnicas que se han de seguir.
6. Caractersticas
La programacin extrema
da por supuesto que es
imposible prever todo
antes de comenzar a
programar; es imposible o
si lo fuera es demasiado
costoso e innecesario, ya
que muchas veces se
gasta demasiado tiempo y
recursos en cambiar la
documentacin de la
planificacin para que se
parezca al cdigo.
Para evitar esto, XP
intenta implementar una
forma de trabajo donde se
adapte fcilmente a las
circunstancias.
Bsicamente consiste en
trabajar estrechamente con el cliente, haciendo pequeas iteraciones (mini-entregas), cada dos
semanas, donde no existe mas documentacin que el cdigo en si; cada versin contiene las
modificaciones necesarias segn el cliente vaya retroalimentando el sistema (por eso es
necesaria la disponibilidad del cliente durante todo el desarrollo).
Para suplir la falta de requisitos, casos de uso, y dems herramientas; XP utiliza historias de
usuarios, la historia de usuario es una frase corta que representa alguna funcin que realizara el
sistema. Cada historia de usuario no puede demorar en desarrollarse ms de una semana, si as
lo requiera, debe segmentarse.
Es requisito para XP definir un estndar en el tipo de codificacin, esto hace que los
programadores tengan definido ya el estilo de programacin y no que cada uno programe a su
estilo.
Los programadores trabajan en parejas (dos por cada maquina) intercambindose en el tipeo,
esta interesante forma de trabajar tiene ventajas como:
Detectar mas fcilmente los errores de programacin (el programador libre
controla al que tipea)
El programador poco experimentado aprende del que mas lo esta.
Si una pareja consigue desarrollar algn trozo de cdigo reutilizable, se
comunica mas fcilmente a los otros programadores.
El testing en cada iteracin es ms que importante; de eso se trata este paradigma de
programacin, corregir mientras se programa. De esta forma se van cubriendo todos los baches
que cada versin padezca.
Computacin y Sistemas
El cdigo no es de nadie, todo el equipo puede manipular el cdigo que existe, de esta forma
cada pareja puede mejorar cada seccin de cdigo que utiliza, esto requiere de un testing del
mismo y la re-implementacin en el sistema general.
Cada dos semanas se entrega una versin al cliente, que lo verifica, realiza el feedback y se
contina el desarrollo; este ciclo continua hasta que el sistema cumpla con las expectativas del
cliente, acto que concluir el proyecto.
No existe documentacin del proyecto (para mi, el taln de Aquiles de este modelo) lo que mas
se acerca a la documentacin son las historias de usuario, pero al concluir el proyecto se
descartan. Inclusive se recomienda hacer dos secciones, una con todas las historias de usuario
que faltan desarrollar, y otra donde se archiven las concluidas, esto aproximara el estado de
avance del proyecto.
7. El Proceso de Desarrollo Extremo
La programacin extrema parte del caso habitual de una compaa que desarrolla software,
generalmente software a medida, en la que hay diferentes roles:
un equipo de gestin
un equipo de desarrolladores
los clientes.
La relacin con el cliente es totalmente diferente a lo que se ha venido haciendo en las
metodologas tradicionales que se basan fundamentalmente en una fase de captura de requisitos
previa al desarrollo y una fase de validacin posterior al mismo.
Interaccin con el cliente
En
la
programacin
extrema al cliente no slo
se le pide que apoye al
equipo de desarrollo, en
realidad podramos decir
que es parte de l. Su
importancia es capital a la
hora de abordar las
historias de los usuarios y
las
reuniones
de
planificacin,
como
veremos ms adelante.
Adems, ser tarea suya
realimentar al equipo de
desarrolladores despus
de cada iteracin con los
problemas con los que se
ha encontrado, mostrando
sus
prioridades,
expresando
sus
sensaciones.
Existirn
mtodos como pruebas de aceptacin que ayudarn a que la labor del cliente sea lo ms
fructfera posible.
En resumen, el cliente se encuentra mucho ms cercano al proceso de desarrollo. Se elimina la
fase inicial de captura de requisitos y se permite que stos se vayan definiendo de una forma
ordenada durante el tiempo que dura el proyecto. El cliente puede cambiar de opinin sobre la
marcha y a cambio debe encontrarse siempre disponible para resolver dudas del equipo de
desarrollo y para detallar los requisitos especificados cuando sea necesario.
Computacin y Sistemas
Computacin y Sistemas
La planificacin debe de seguir unas ciertas premisas. La primordial es que las entregas se
hagan cuanto antes y que con cada iteracin el cliente reciba una nueva versin. Cuanto ms
tiempo se tarde en introducir una parte esencial, menos tiempo habr para trabajar en ella
posteriormente. Se aconsejan muchas entregas y muy frecuentes. De esta forma, un error en
una parte esencial del sistema se encontrar pronto y, por tanto, se podr arreglar antes.
Sin embargo, los requisitos anteriores en cuanto a la planificacin no deben suponer horas extra
para el equipo de desarrollo. El argumento que se esboza es que lo que se trabaja de ms un
da, se deja de trabajar al siguiente. Diversas prcticas como las pruebas unitarias, la integracin
continua o el juego de la planificacin permiten eliminar los principales motivos por los que suele
ser necesario trabajar muchas horas extra.
Pero lo mejor de todo es que a la hora de planificar uno se puede equivocar. Es ms, todos
sabemos que lo comn es equivocarse y por ello la metodologa ya tiene previsto mecanismos
de revisin. Por tanto, es normal que cada 3 a 5 iteraciones se tengan que revisar las historias
de los usuarios y renegociar nuevamente la planificacin.
Hemos visto que al principio del proyecto se hace una planificacin en iteraciones que debe ser
retocada al cabo de unas cuantas iteraciones. A esto hay que aadir que en cada iteracin
tambin hay que realizar la planificacin de la misma, lo que ha venido a llamarse planificacin
iterativa. En la planificacin iterativa se especifican las historias de los usuarios cuya
implementacin se considera primordial y se aaden aqullas que no han pasado las pruebas de
aceptacin de anteriores iteraciones. La planificacin de una iteracin tambin hace uso de
tarjetas en las que se escribirn tareas, que durarn entre uno y tres das (la duracin la deben
decidir los propios desarrolladores).
Diseo, desarrollo y pruebas
El desarrollo es la pieza clave de todo el proceso de programacin extrema. Todas las tareas
tienen como objetivo que se desarrollo a la mxima velocidad, sin interrupciones y siempre en la
direccin correcta.
Tambin se otorga una gran importancia al diseo y establece que ste debe ser revisado y
mejorado de forma continua segn se van aadiendo funcionalidades al sistema. Esto se
contrapone a la prctica conocida como "Gran diseo previo" habitual en otras metodologas.
Los autores de XP opinan que este enfoque es incorrecto dado que a priori no se tiene toda la
informacin suficiente para disear todo el sistema y se limita la posibilidad del cliente de
cambiar de opinin respecto a las funcionalidades deseadas. Como veremos a continuacin a
cambio se establecen los mecanismos para ir remodelando el diseo de forma flexible durante
todo el desarrollo.
La clave del proceso de desarrollo de XP es la comunicacin. La gran mayora de los problemas
en los proyectos de desarrollo son provocados por falta de comunicacin en el equipo, as que
se pone un gran nfasis en facilitar que la informacin fluya lo ms eficientemente posible.
Es en este punto donde entra uno de los trminos estrella de la programacin extrema: la
metfora. El principal objetivo de la metfora es mejorar la comunicacin entre los todos
integrantes del equipo al crear una visin global y comn del sistema que se pretende
desarrollar. La metfora debe estar expresada en trminos conocidos para los integrantes del
grupo, por ejemplo comparando lo que se va a desarrollar con algo que se puede encontrar en la
vida real. Aunque tambin se incluye informacin sobre las principales clases y patrones que se
usarn en el sistema.