Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

A propósito de programación extrema XP (eXtreme Programming) (página 2)



Partes: 1, 2

5. Prácticas Básicas de
XP.

De forma aislada, cualquier práctica individual
de Xp tiene poco sentido, pero en conjunto, unas compensan las
carencias que las otras puedan tener.

[4] nos dice que para evaluar Xp hay que mirar la gran
foto, es decir, todo el conjunto de prácticas:

Figura No.1. Practicas de XP, Tomado
de [2], [4]

El alcance de la siguiente versión esta definido
por las consideraciones de negocios
(prioridad de los módulos, fechas de entrega) y
estimaciones técnicas
(estimaciones de funciones,
consecuencias).

El objetivo del
juego es maximizar el valor del
software
producido, La estrategia es
poner en producción las características
más importantes lo antes posible, Las Piezas clave son las
Story Cards, Los Jugadores son los desarrolladores y el cliente y las
Movidas son Exploración, Selección
y Actualización.

  • Versiones Pequeñas (Short
    Releases)

Un sistema simple se
pone rápidamente en producción.
Periódicamente, se producen nuevas versiones agregando en
cada iteración aquellas funciones consideradas valiosas
para el cliente

  • Metáfora del Sistema (Metaphor)

Cada Proyecto es
guiado por una historia simple de
cómo funciona el sistema en general, reemplaza a la
arquitectura y
debe estar en lenguaje
común, entendible para todos (Cliente y Desarrolladores),
esta puede cambiar permanentemente.

  • Diseño Simple (Simple Designs)

El sistema se diseña con la máxima
simplicidad posible (YAGNY – "No vas a necesitarlo"), Se plasma
el diseño
en tarjetas CRC
(Clase
Responsabilidad – Colaboración), no se
implementan características que no son necesarias, con
esta técnica, las clases descubiertas durante el análisis pueden ser filtradas para
determinar qué clases son realmente necesarias para el
sistema.

  • Pruebas Continuas (Testing)

Los casos de prueba se escriben antes que el código.
Los desarrolladores escriben pruebas
unitarias y los clientes
especifican pruebas funcionales.

  • Refactorización (Refactoring)

Es posible reestructurar el sistema sin cambiar su
comportamiento, por ejemplo eliminando
código duplicado, simplificando funciones, Mejorando el
código constantemente, si el código se esta
volviendo complicado se debería modificar el diseño
y volver a uno más simple. Refactoring (Modificar la forma
del código sin cambiar su funcionamiento).

  • Programación por parejas (Pair
    Programming)

El código es escrito por dos personas trabajando
en el mismo computador.
"Una sola maquina con un teclado y un
mouse"

  • Posesión Colectiva del Código
    (Collective Code Ownership)

Nadie es dueño de un modulo. Cualquier
programador puede cambiar cualquier parte del sistema en
cualquier momento, siempre se utilizan estándares y se
excluyen los comentarios, Los test siempre
deben funcionar al 100% para realizar integraciones con todo el
código permanentemente.

  • Integración continua (Continuous
    Integration)

Los cambios se integran en el código base varias
veces por día. Todos lo casos de prueba se deben pasar
antes y después de la integración, se dispone de una maquina para
la integración y se realizan test funcionales en donde
participa el cliente.

  • Semana laboral de 40
    horas (40-Hour Week)

Cada Trabajador trabaja no más de 40 Horas por
semana. Si fuera necesario hacer horas extra, esto no
debería hacerse dos semanas consecutivas. Sin
héroes, esto hace que se reduzca la rotación del
personal y
mejora la calidad del
producto.

  • Cliente en el Sitio (On Site Customer)

El equipo de desarrollo
tiene acceso todo el tiempo al
cliente, el cual esta disponible para responder preguntas, fijar
prioridades, etc. Esto no siempre se consigue; Un cliente muy
Junior no sirve y un cliente muy Sénior no es disponible.
"Lo ideal es un cliente Analista".

Todo el código debe estar escrito de acuerdo a un
estándar de codificación

6.
Ciclo de Vida

El ciclo de vida
de Xp se enfatiza en el carácter interactivo e incremental del
desarrollo, Según [1] una iteración de desarrollo
es un período de tiempo en el que se realiza un conjunto
de funcionalidades determinadas que en el caso de Xp corresponden
a un conjunto de historias de usuarios.

Las iteraciones son relativamente cortas ya que se
piensa que entre más rápido se le entreguen
desarrollos al cliente, más retroalimentación se va a obtener y esto va
a representar una mejor calidad del producto a largo plazo.
Existe una fase de análisis inicial orientada a programar
las iteraciones de desarrollo y cada iteración incluye
diseño, codificación y pruebas, fases superpuestas
de tal manera que no se separen en el tiempo.

La siguiente figura muestra las fases
en las que se subdivide el ciclo de vida Xp:

Figura No.2. Ciclo de vida de eXtreme
Programming, Tomado de [1], [2]

[1] y [3] nos describen cada una de las fases en las que
se subdivide el ciclo de vida de eXtreme Programming:

6.1. 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.

6.2 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.

6.3. 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.

6.4. 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.

6.5. 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.

7.
Actores y Responsabilidades de Xp

Existen diferentes roles (actores) y responsabilidades
en Xp para diferentes tareas y propósitos durante el
proceso:

Programador (Programmer)

  • Responsable de decisiones técnicas
  • Responsable de construir el sistema
  • Sin distinción entre analistas,
    diseñadores o codificadores
  • En Xp, los programadores diseñan, programan y
    realizan las pruebas

Cliente (Customer)

  • Es parte del equipo
  • Determina qué construir y
    cuándo
  • Escribe tests funcionales para determinar
    cuándo está completo un determinado
    aspecto

Entrenador (Coach)

  • El líder
    del equipo – toma las decisiones importantes
  • Principal responsable del proceso
  • Tiende a estar en un segundo plano a medida que el
    equipo madura

Rastreador (Tracker)

  • Metric Man
  • Observa sin molestar
  • Conserva datos
    históricos

Probador (Tester)

  • Ayuda al cliente con las pruebas
    funcionales
  • Se asegura de que los tests funcionales se
    ejecutan

8.
Artefactos Xp

A continuación describimos los artefactos de Xp,
entre los que se encuentran: Historias de Usuario, Tareas de
Ingeniería y Tarjetas CRC.

8.1. Historias de Usuario

Representan una breve descripción del comportamiento del sistema,
emplea terminología del cliente sin lenguaje
técnico, se realiza una por cada característica
principal del sistema, se emplean para hacer estimaciones de
tiempo y para el plan de
lanzamientos, reemplazan un gran documento de requisitos y
presiden la creación de las pruebas de
aceptación.

Historia de
Usuario

Número:

Nombre Historia de Usuario:

Modificación (o extensión) de
Historia de Usuario (Nro. y Nombre):

Usuario:

Iteración Asignada:

Prioridad en Negocio:

(Alta / Media / Baja)

Puntos Estimados:

Riesgo en Desarrollo:

(Alto / Medio / Bajo)

Puntos Reales:

Descripción:

 

 

 

Observaciones:

Tabla No.1. Modelo
propuesto para una historia de usuario, Tomado de
[3]

Estas deben proporcionar sólo el detalle
suficiente como para poder hacer
razonable la estimación de cuánto tiempo requiere
la implementación de la historia, difiere de los casos de
uso porque son escritos por el cliente, no por los programadores,
empleando terminología del cliente. "Las historias de
usuario son más "amigables" que los casos de uso
formales".

Las Historias de Usuario tienen tres
aspectos:

  • Tarjeta: en ella se almacena suficiente información para identificar y detallar
    la historia.
  • Conversación: cliente y programadores discuten
    la historia para ampliar los detalles (verbalmente cuando sea
    posible, pero documentada cuando se requiera
    confirmación)
  • Pruebas de Aceptación: permite confirmar que
    la historia ha sido implementada correctamente.

Caso de Prueba de
Aceptación

Código:

Historia de Usuario (Nro. y
Nombre):

Nombre:

Descripción:

 

 

Condiciones de
Ejecución:

 

Entrada / Pasos de
ejecución:

 

 

Resultado Esperado:

 

Evaluación de la
Prueba:

 

Tabla No.2. Modelo propuesto para una
prueba de aceptación, Tomado de [3]

8.2. Task Card

Tarea de
Ingeniería

Número Tarea:

Historia de Usuario (Nro. y
Nombre):

Nombre Tarea:

Tipo de Tarea :

Desarrollo / Corrección / Mejora / Otra
(especificar)

Puntos Estimados:

Fecha Inicio:

Fecha Fin:

Programador Responsable:

Descripción:

 

 

 

 

 

Tabla No.3. Modelo propuesto para una
tarea de ingeniería, Tomado de [3]

8.3. Tarjetas CRC (Clase –
Responsabilidad – Colaborador).

Estas tarjetas se dividen en tres secciones que
contienen la información del nombre de la clase, sus
responsabilidades y sus colaboradores. En la siguiente figura se
muestra cómo se distribuye esta
información.

 

Tabla No.4. Modelo de tarjeta CRC,
Tomado de [2]

Una clase es cualquier persona, cosa,
evento, concepto,
pantalla o reporte. Las responsabilidades de una clase son las
cosas que conoce y las que realiza, sus atributos y métodos.
Los colaboradores de una clase son las demás clases con
las que trabaja en conjunto para llevar a cabo sus
responsabilidades.

En la práctica conviene tener pequeñas
tarjetas de cartón, que se llenarán y que son
mostradas al cliente, de manera que se pueda llegar a un acuerdo
sobre la validez de las abstracciones propuestas.

Los pasos a seguir para llenar las tarjetas son los
siguientes:

  • Encontrar clases
  • Encontrar responsabilidades
  • Definir colaboradores
  • Disponer las tarjetas

Para encontrar las clases debemos pensar qué
cosas interactúan con el sistema (en nuestro caso el
usuario), y qué cosas son parte del sistema, así
como las pantallas útiles a la aplicación (un
despliegue de datos, una entrada de parámetros y una
pantalla general, entre otros). Una vez que las clases
principales han sido encontradas se procede a buscar los
atributos y las responsabilidades, para esto se puede formular la
pregunta ¿Qué sabe la clase? y ¿Qué
hace la clase? Finalmente se buscan los colaboradores dentro de
la lista de clases que se tenga.

9.
Críticas a eXtreme Programming

Algunas de las críticas recopiladas de Xp
son:

Xp tiene muchas críticas especialmente contra la
programación por parejas por parte de
muchos programadores con gran sentimiento de posesión del
código, piensan que ellos son los mejores conocedores de
las herramientas y lenguajes que utilizan y que si alguien no lo
entiende es por que no sabe lo suficiente.

También se critica el mito de las 40
horas semanales ya que es un lujo para las exigencias del
mercado.

También hay críticas hacia Xp que dicen
que solo puede funcionar con programadores muy buenos, como Kent
Beck, que son capaces de hacer un buen diseño, sencillo y
fácilmente extensible.

Xp es mas una filosofía de trabajo que
una metodología. Por otro lado ninguna de las
practicas defendidas por Xp son invención de este método, Xp
lo que hace es ponerlas todas juntas.

Xp esta diseñado para grupos de
pequeños programadores, más de 10 ya seria muy
complicado, y mas aun para que estén en el mismo centro de
trabajo.

10.
BIBLIOGRAFÍA

[1] Hurtado, Julio Ariel, Bastiarrica Cecilia. Proyecto
SIMEP-SW Mayo 08 de 2005, Modelo de Procesos,
Calidad y Mejoramiento: CMM, TSP, PSP, ISO, IEEE,
SPICE, etc.

[2] Reynoso Billy Carlos. Metodos Agiles en Desarrollo
de Software, Introducción a la Arquitectura de Software.
Universidad de
Buenos
Aires.

billyr[arroba]microsoft.com.ar

http://www.microsoft.com/spanish/msdn/arquitectura.

[3] José H. Canós, Patricio Letelier y
Mª Carmen Penadés. Metodologías Ágiles
para el desarrollo de software. Universidad Politécnica de
Valencia. { jhcanos | letelier | mpenades
}[arroba]dsic.upv.es

[4] Cubel Navarro, Jose Mª. eXtreme Programming
Laboratorio de
Sistemas de
Información, Universidad Politécnica de
Valencia.

[5] Manuel Calero Solís. Una explicación
de la programación extrema (XP), V Encuentro usuarios
xBase 2003 MADRID
http://www.apolosoftware.com/

XP Agile Universe: www.agileuniverse.com. Conference on
eXtreme Programming and Agile Processes in Software.

Letelier Patricio, Metodologías Ágiles
para el desarrollo de software: Aplicando Extreme Programming.
Universidad Politécnica de Valencia.

Calero Solís, Manuel. Apolo Software. Una
explicación de Programación extrema.
http://www.apolosoftware.com/

Robles, Gregorio. Programación eXtrema (y
Software
Libre)

grex[arroba]gsyc.escet.urjc.es

Web’s Programación extrema:

www.programacionextrema.org

http://www.extremeprogramming.org

http://www.xprogramming.com

 

 

 

Autor:

Adrian Anaya Villegas

Popayan – Cauca – Colombia

Edison Arley Plaza Marín

Carrera 32 No. 4-57

Popayan – Cauca – Colombia

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter