METODOLOGÍA XP
La programación extrema es una metodología de desarrollo ligero (o ágil) basada
en una serie de valores y de prácticas de buenas maneras que persigue el
objetivo de aumentar la productividad a la hora de desarrollar programas.
Este modelo de programación se basa en una serie de metodologías de desarrollo de software en la que se da prioridad a los trabajos que dan un resultado directo y que reducen la burocracia que hay alrededor de la programación.
Una de las características principales de este método de programación, es que sus ingredientes son conocidos desde el principio de la informática. Los autores de XP han seleccionado aquellos que han considerado mejores y han profundizado en sus relaciones y en cómo se refuerzan los unos con los otros. El resultado de esta selección ha sido esta metodología única y compacta. Por esto, aunque no está basada en principios nuevos, sí que el resultado es una nueva manera de ver el desarrollo de software.
Este modelo de programación se basa en una serie de metodologías de desarrollo de software en la que se da prioridad a los trabajos que dan un resultado directo y que reducen la burocracia que hay alrededor de la programación.
Una de las características principales de este método de programación, es que sus ingredientes son conocidos desde el principio de la informática. Los autores de XP han seleccionado aquellos que han considerado mejores y han profundizado en sus relaciones y en cómo se refuerzan los unos con los otros. El resultado de esta selección ha sido esta metodología única y compacta. Por esto, aunque no está basada en principios nuevos, sí que el resultado es una nueva manera de ver el desarrollo de software.
El objetivo que se perseguía en el momento de crear esta metodología era la búsqueda de un método que hiciera que los desarrollos fueran más sencillos. Aplicando el sentido común.
CARACTERÍSTICAS
FUNDAMENTALES
Las características
fundamentales del método son:
v Desarrollo
iterativo e incremental: pequeñas mejoras, unas tras otras.
v Pruebas
unitarias continuas, frecuentemente repetidas y automatizadas,
incluyendo pruebas de regresión. Se aconseja escribir el código de la
prueba antes de la codificación. Véase, por ejemplo, las herramientas de prueba JUnit orientada
a Java, DUnit orientada a Delphi, NUnit para la plataforma.NET o PHPUnit para
PHP. Estas tres últimas inspiradas en JUnit, la cual, a su vez, se insipiró en
SUnit, el primer framework orientado a realizar tests, realizado para el
lenguaje de programación Smalltalk.
v Programación
en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos
personas en un mismo puesto. Se supone que la mayor calidad del código escrito
de esta manera -el código es revisado y discutido mientras se escribe- es más
importante que la posible pérdida de productividad inmediata.
v Frecuente integración
del equipo de programación con el cliente o usuario. Se recomienda que un
representante del cliente trabaje junto al equipo de desarrollo.
v Corrección
de todos los errores antes de añadir nueva funcionalidad. Hacer
entregas frecuentes.
v Refactorización del
código, es decir, reescribir ciertas partes del código para aumentar su
legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas
han de garantizar que en la refactorización no se ha introducido ningún fallo.
v Propiedad
del código compartida: en vez de dividir la responsabilidad en el desarrollo de
cada módulo en grupos de trabajo distintos, este método promueve el que todo el
personal pueda corregir y extender cualquier parte del proyecto. Las frecuentes
pruebas de regresión garantizan que los posibles errores serán detectados.
v Simplicidad en
el código: es la mejor manera de que las cosas funcionen. Cuando todo funcione
se podrá añadir funcionalidad si es necesario. La programación extrema apuesta
que es más sencillo hacer algo simple y tener un poco de trabajo extra para
cambiarlo si se requiere, que realizar algo complicado y quizás nunca
utilizarlo.
La simplicidad y la
comunicación son extraordinariamente complementarias. Con más comunicación
resulta más fácil identificar qué se debe y qué no se debe hacer. Cuanto más
simple es el sistema, menos tendrá que comunicar sobre éste, lo que lleva a una
comunicación más completa, especialmente si se puede reducir el equipo de
programadores
.
ACTIVIDADES DE XP
·
Codificar
Es necesario
codificar y plasmar nuestras ideas a través del código. En programación,
el código expresa la interpretación del problema, así podemos
utilizar el código para comunicar, para hacer comunes las ideas, y por tanto
para aprender y mejorar.
·
Hacer pruebas
Las características
del software que no pueden ser demostradas mediante pruebas simplemente no
existen. Las pruebas dan la oportunidad de saber si lo implementado es lo que
en realidad se tenía en mente. Las pruebas nos indican que nuestro trabajo
funciona, cuando no podemos pensar en ninguna prueba que pudiese originar un
fallo en nuestro sistema, entonces habremos acabado por completo.
·
Escuchar
En una frase,
"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 qué 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. Tenemos que escuchar a nuestros
clientes cuáles son los problemas de su negocio, debemos de tener una
escucha activa explicando lo que es fácil y difícil de obtener, y la
realimentación entre ambos nos ayudan a todos a entender los problemas.
·
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,
lo apropiado es dividirla en varias. Si hay fallos en el diseño o malos
diseños, estos deben de ser corregidos cuanto antes.
Resumiendo las
actividades de Xp: Tenemos que codificar porque sin código no
hay programas, tenemos que hacer pruebas por que sin pruebas no sabemos si
hemos acabado de codificar, tenemos que escuchar, porque si no escuchamos no
sabemos que codificar ni probar, y tenemos que diseñar
para poder codificar, probar y escuchar indefinidamente.
FASES DE ESTA METODOLOGÍA
·
Fase de la exploración
En esta fase, los clientes plantean a grandes rasgos las historias de usuario
que son de interés para la primera 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.
·
Fase del planeamiento
Se priorizan las historias de usuario y se acuerda el alcance del release. Los
programadores estiman cuánto esfuerzo requiere cada historia y a partir de allí
se define el cronograma. La duración del cronograma del primer release no
excede normalmente dos meses. La fase de planeamiento toma un par de días. Se
deben incluir varias iteraciones para lograr un release. El cronograma fijado
en la etapa de planeamiento se realiza a un número de iteraciones, cada una
toma de una a cuatro semanas en ejecución. La primera iteración crea un sistema
con la arquitectura del sistema completo. Esto es alcanzado seleccionando las
historias que harán cumplir la construcción de
la estructura para el sistema completo. El cliente decide las
historias que se seleccionarán para cada iteración. Las pruebas funcionales
creadas por el cliente se ejecutan al final de cada iteración. Al final de la
última iteración el sistema esta listo para producción.
·
Fase de producción
Requiere prueba y comprobación extra del funcionamiento del sistema antes de
que éste se pueda liberar al cliente. En esta fase, los nuevos cambios pueden
todavía ser encontrados y debe tomarse la decisión de si se incluyen o no en el
release actual. Durante esta fase, las iteraciones pueden ser aceleradas de una
a tres semanas. Las ideas y las sugerencias pospuestas se documentan para una
puesta en práctica posterior por ejemplo en la fase de mantenimiento.
Después de que se realice el primer release productivo para uso del cliente, el
proyecto de Xp debe mantener el funcionamiento del sistema mientras que realiza
nuevas iteraciones.
·
Fase de mantenimiento
Requiere de un mayor esfuerzo para satisfacer también las tareas del cliente.
Así, la velocidad del desarrollo puede desacelerar después de que el
sistema esté en la producción. La fase de mantenimiento puede requerir la
incorporación de nueva gente y cambiar la estructura del equipo.
·
Fase de muerte
Es cuando el cliente no tiene más historias para ser incluidas en el sistema.
Esto requiere que se satisfagan las necesidades del cliente en otros aspectos
como rendimiento y confiabilidad del sistema. Se genera
la documentación final del sistema y no se realizan más cambios en la
arquitectura. La muerte del proyecto también ocurre cuando el sistema
no genera los beneficios esperados por el cliente o cuando no hay presupuesto
para mantenerlo
No hay comentarios:
Publicar un comentario