Diferencia entre revisiones de «Extreme Programming»

 
(No se muestran 2 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
'''Metodología Ágil XP (Extreme Programming) '''
+
{{Ficha Software
[[Image: Xpl.JPG|thumb|right|398x254px|]]
+
|nombre=Extreme Programming
== Introducción ==
+
|familia=
La  Programación  Extrema (XP) es  probablemente  la [[metodología ágil]] más conocida; está centrada en la colaboración, la creación temprana y rápida de [[software]], y una serie de prácticas útiles en el desarrollo de software. XP se funda  en  cuatro  valores:  comunicación,  simplicidad,  retroalimentación  y  coraje,  que incluyen  también  12    prácticas  fundamentales  como  la  programación  por  pares, refactorización constante y un desarrollo orientado a las pruebas, entre otras.
+
|imagen=Xpl.JPG|
 +
|tamaño=
 +
|descripción=[[Metodología ágil]] más conocida; está centrada en la colaboración, la creación temprana y rápida de [[software]]
 +
|imagen2=
 +
|tamaño2=
 +
|descripción2=
 +
|creador=
 +
|desarrollador=
 +
|diseñador=
 +
|modelo de desarrollo=
 +
|fecha de creación=
 +
|lanzamiento inicial=
 +
|versiones=
 +
|última versión estable=
 +
|núcleo=
 +
|tipo de núcleo=
 +
|plataformas soportadas=
 +
|género=
 +
|sistemas operativos=
 +
|idioma=
 +
|licencia=
 +
|premios=
 +
|web=
 +
}}
 +
'''Extreme Programming'''. La  Programación  Extrema (XP) es  probablemente  la [[metodología ágil]] más conocida; está centrada en la colaboración, la creación temprana y rápida de [[software]], y una serie de prácticas útiles en el desarrollo de software. XP se funda  en  cuatro  valores:  comunicación,  simplicidad,  retroalimentación  y  coraje,  que incluyen  también  12    prácticas  fundamentales  como  la  programación  por  pares, refactorización constante y un desarrollo orientado a las pruebas, entre otras.
 +
 
 
== Ciclo de vida de XP ==  
 
== Ciclo de vida de XP ==  
 +
 
El  ciclo  de  vida  de  XP  consiste  de  5  fases:  Exploración,  Planeación, Iteraciones, Producción, Mantenimiento.
 
El  ciclo  de  vida  de  XP  consiste  de  5  fases:  Exploración,  Planeación, Iteraciones, Producción, Mantenimiento.
 +
 
=== Exploración ===
 
=== Exploración ===
En  la  fase  de  Exploración  los  [[clientes]] escriben  las  historias de usuario (funcionalidades con que debe contar el [[sistema]])  de  lo  que  ellos quisieran incluir para la primera entrega.  Cada plantilla describe  las características que deben ser adicionadas al programa. Al mismo tiempo el equipo del proyecto se familiariza  con  las  herramientas,  la  tecnología  y  las  prácticas  que  utilizarán  en  el proyecto. La tecnología ha ser usada será probada y las posibles [[arquitecturas]] para el [[sistema]]  son  exploradas  construyendo  un  [[prototipo  del  sistema]].  La  fase  de exploración toma entre unas cuantas semanas a unos cuantos meses, dependiendo de que tanto los programadores conocen la tecnología.  
+
 
 +
En  la  fase  de  Exploración  los  clientes  escriben  las  historias de usuario (funcionalidades con que debe contar el [[sistema]])  de  lo  que  ellos quisieran incluir para la primera entrega.  Cada plantilla describe  las características que deben ser adicionadas al programa. Al mismo tiempo el equipo del proyecto se familiariza  con  las  herramientas,  la  tecnología  y  las  prácticas  que  utilizarán  en  el proyecto. La tecnología ha ser usada será probada y las posibles arquitectura para el sistema son  exploradas  construyendo  un  prototipo  del  sistema.  La  fase  de exploración toma entre unas cuantas semanas a unos cuantos meses, dependiendo de que tanto los programadores conocen la tecnología.  
 +
 
 
=== Planeación ===
 
=== Planeación ===
La  fase  de  planeación configura la  prioridad para las  historias de usuario, contenidas  en  las tarjetas CRC (Clase-Responsabilidad-Colaboración, una técnica  que  reemplaza a los  diagramas  para  la  representación  de  modelos,  en  las  que  se  escriben  las responsabilidades)  y  se  realiza  un  contrato  del  contenido  para  la  primera  entrega.  Los programadores primero  estiman cuánto esfuerzo  requieren  para  cada  historia  y se hace una programación de acuerdo a esta estimación. El tiempo de la programación de  la  primera  entrega  normalmente  no  excede  dos  meses  y  el  tiempo  de  la  fase como tal toma un par de días.  
+
 
 +
La  fase  de  planeación configura la  prioridad para las  historias de usuario, contenidas  en  las tarjetas CRC (Clase-Responsabilidad-Colaboración, una técnica  que  reemplaza a los  diagramas  para  la  representación  de  modelos,  en  las  que  se  escriben  las responsabilidades)  y  se  realiza  un  contrato  del  contenido  para  la  primera  entrega.  Los programadores primero  estiman cuánto esfuerzo  requieren  para  cada  historia  y se hace una programación de acuerdo a esta estimación. El tiempo de la programación de  la  primera  entrega  normalmente  no  excede  dos  meses  y  el  tiempo  de  la  fase como tal toma un par de días.  
 +
 
 
=== Iteraciones ===
 
=== Iteraciones ===
La  fase  de  iteraciones  hacia  la  entrega  incluye  varias  iteraciones  del [[sistema]] antes  de  la  primera  entrega.  La  programación  que  se  determinó  en  la  etapa  de planeación es dividida en un número de iteraciones donde cada una tomará de una a cuatro semanas para ser implementada. La primera iteración crea la [[arquitectura]] de todo el [[sistema]]; esto es logrado seleccionando las historias que hacen cumplir la estructura  para  todo  el [[sistema]].  El [[cliente]]  decide  las  historias  seleccionadas  para cada iteración. Las pruebas funcionales  creadas  por los [[clientes]] son para correr  al final de cada iteración. Al final de la última iteración, el [[sistema]] estará listo para ser entregado y llevarlo a producción.  
+
 
 +
La  fase  de  iteraciones  hacia  la  entrega  incluye  varias  iteraciones  del sistema antes  de  la  primera  entrega.  La  programación  que  se  determinó  en  la  etapa  de planeación es dividida en un número de iteraciones donde cada una tomará de una a cuatro semanas para ser implementada. La primera iteración crea la [[arquitectura]] de todo el [[sistema]]; esto es logrado seleccionando las historias que hacen cumplir la estructura  para  todo  el sistema.  El [[cliente]]  decide  las  historias  seleccionadas  para cada iteración. Las pruebas funcionales  creadas  por los clientes son para correr  al final de cada iteración. Al final de la última iteración, el sistema estará listo para ser entregado y llevarlo a producción.  
 +
 
 
=== Producción ===
 
=== Producción ===
La  fase  de  producción  requiere  pruebas  extras  y  chequeos  de  la  ejecución  del [[sistema]] antes de que  sea entregado al [[cliente]].  En ésta fase, se  pueden encontrar nuevos  cambios  y  se  toma  la  decisión  si  serán  incluidos  en  la  entrega  actual. Durante esta fase, las iteraciones pueden necesitar ser recortadas de tres semanas a una semana. Después que la primera entrega es producida para el uso del [[cliente]], el  proyecto  XP  debe  mantener  el  [[sistema]] en  producción  corriendo  mientras  que también se estén produciendo nuevas iteraciones.
+
 
 +
La  fase  de  producción  requiere  pruebas  extras  y  chequeos  de  la  ejecución  del sistema antes de que  sea entregado al cliente.  En ésta fase, se  pueden encontrar nuevos  cambios  y  se  toma  la  decisión  si  serán  incluidos  en  la  entrega  actual. Durante esta fase, las iteraciones pueden necesitar ser recortadas de tres semanas a una semana. Después que la primera entrega es producida para el uso del cliente, el  proyecto  XP  debe  mantener  el  sistema  en  producción  corriendo  mientras  que también se estén produciendo nuevas iteraciones.  
 +
 
 
=== Mantenimiento ===
 
=== Mantenimiento ===
La  fase de  mantenimiento  requiere también  un esfuerzo  para soportar  las  tareas de los [[clientes]]. Así, la velocidad del desarrollo puede desacelerarse después de que el  [[sistema]] está en producción. La fase de mantenimiento puede requerir incorporar nuevas personas al equipo y cambiar la  estructura del equipo. Dentro de esta fase se llega a un estado llamado “de muerte”, que sucede cuando el [[cliente]] no tiene más historias para ser implementadas. Esto requiere que el [[sistema]] satisfaga también las necesidades en otros aspectos, como por ejemplo lo concerniente a la ejecución y la confiabilidad.  Éste  es  el  momento  en  el  proceso  XP  cuando  la  documentación necesaria  del [[sistema]] es  finalmente  escrita  porque  no  habrá  más  cambios  en  la [[arquitectura]],  diseño  o  código.  La  muerte  puede  ocurrir  si  el [[sistema]] no  está entregando  los  [[artefactos]]  deseados  o  si  se  está  convirtiendo  muy  costoso implementarlo.
+
 
== Actores  y  sus  responsabilidades ==  
+
La  fase de  mantenimiento  requiere también  un esfuerzo  para soportar  las  tareas de los clientes. Así, la velocidad del desarrollo puede desacelerarse después de que el  sistema está en producción. La fase de mantenimiento puede requerir incorporar nuevas personas al equipo y cambiar la  estructura del equipo. Dentro de esta fase se llega a un estado llamado “de muerte”, que sucede cuando el cliente no tiene más historias para ser implementadas. Esto requiere que el sistema satisfaga también las necesidades en otros aspectos, como por ejemplo lo concerniente a la ejecución y la confiabilidad.  Éste  es  el  momento  en  el  proceso  XP  cuando  la  documentación necesaria  del sistema  es  finalmente  escrita  porque  no  habrá  más  cambios  en  la arquitectura,  diseño  o  código.  La  muerte  puede  ocurrir  si  el sistema  no  está entregando  los  [[artefactos]]  deseados  o  si  se  está  convirtiendo  muy  costoso implementarlo.
 +
 
 +
== Actores  y  sus  responsabilidades ==  
 +
 
 
Hay  diferentes  roles  en  XP  para  diferentes tareas y propósitos durante el proceso y sus prácticas.
 
Hay  diferentes  roles  en  XP  para  diferentes tareas y propósitos durante el proceso y sus prácticas.
 +
 
*Programador.    El  programador  escribe  las  pruebas  y  mantiene  el  código  del programa  tan  simple  y  definido  como  sea  posible.  
 
*Programador.    El  programador  escribe  las  pruebas  y  mantiene  el  código  del programa  tan  simple  y  definido  como  sea  posible.  
*[[Cliente]].  Escribe  las  historias  (especificaciones)  y  pruebas  funcionales,  decide cuando es logrado cada requisito y determina la prioridad  de la implementación  de cada uno de ellos.   
+
*Cliente.  Escribe  las  historias  (especificaciones)  y  pruebas  funcionales,  decide cuando es logrado cada requisito y determina la prioridad  de la implementación  de cada uno de ellos.   
*Verificadores (Testers). Ayudan al [[cliente]] a escribir pruebas funcionales, las corren regularmente,  comunican  los  resultados  de  las  mismas  y  mantienen  las herramientas de prueba.
+
*Verificadores (Testers). Ayudan al cliente a escribir pruebas funcionales, las corren regularmente,  comunican  los  resultados  de  las  mismas  y  mantienen  las herramientas de prueba.
 
*Seguidor de rastros (Tracker). El seguidor de rastros retroalimenta en XP. Sigue las  estimaciones  hechas  por  el  equipo,  es  decir,  la  estimación  del  esfuerzo;  y  da retroalimentación  en  cómo  están  de  acertados  para  mejorar  las  futuras estimaciones.  
 
*Seguidor de rastros (Tracker). El seguidor de rastros retroalimenta en XP. Sigue las  estimaciones  hechas  por  el  equipo,  es  decir,  la  estimación  del  esfuerzo;  y  da retroalimentación  en  cómo  están  de  acertados  para  mejorar  las  futuras estimaciones.  
 
*Facilitador.  Es  la  persona  responsable  del  proceso  como  un  todo.  Un  buen entendimiento de XP es importante en este rol para habilitar al entrenador para guiar a los otros miembros del equipo en el siguiente proceso.
 
*Facilitador.  Es  la  persona  responsable  del  proceso  como  un  todo.  Un  buen entendimiento de XP es importante en este rol para habilitar al entrenador para guiar a los otros miembros del equipo en el siguiente proceso.
 
*Consultor  técnico.  El  consultor  técnico  es  un  miembro  externo  que  procesa  el conocimiento  técnico  específico  necesitado  y  guía  al  equipo  en  resolver  sus problemas específicos.
 
*Consultor  técnico.  El  consultor  técnico  es  un  miembro  externo  que  procesa  el conocimiento  técnico  específico  necesitado  y  guía  al  equipo  en  resolver  sus problemas específicos.
 
*Administrador.  El  administrador  toma  las  decisiones.  Para  lograr  esto,  él  se comunica con el equipo del proyecto para determinar la situación actual y distinguir cualquier dificultad o deficiencia en el proceso.  
 
*Administrador.  El  administrador  toma  las  decisiones.  Para  lograr  esto,  él  se comunica con el equipo del proyecto para determinar la situación actual y distinguir cualquier dificultad o deficiencia en el proceso.  
 +
 
== Ventajas ==
 
== Ventajas ==
 +
 
*Programación organizada.
 
*Programación organizada.
 
*Menor taza de errores.
 
*Menor taza de errores.
 
*Satisfacción del programador.
 
*Satisfacción del programador.
 +
 
== Desventajas ==
 
== Desventajas ==
 +
 
*Es recomendable emplearlo solo en proyectos a corto plazo.
 
*Es recomendable emplearlo solo en proyectos a corto plazo.
 
*Altas comisiones en caso de fallar.
 
*Altas comisiones en caso de fallar.
 +
 
==Beneficios==
 
==Beneficios==
 +
 
*El cliente tiene el control sobre las prioridades.
 
*El cliente tiene el control sobre las prioridades.
 
*Se hacen pruebas continuas durante el proyecto.
 
*Se hacen pruebas continuas durante el proyecto.
 
*La XP es mejor utilizada en la implementación de nuevas tecnologías donde los requerimientos cambian rápidamente.
 
*La XP es mejor utilizada en la implementación de nuevas tecnologías donde los requerimientos cambian rápidamente.
+
 
 
== Alcance ==
 
== Alcance ==
 +
 
La metodología XP no es aplicable en todas partes ni se  han identificado todos sus límites. Es decir, se necesita todavía mucha [[investigación empírica]] y experimental  en  diferentes  perspectivas.  Sin  embargo  se  han  identificado  algunas limitaciones:  
 
La metodología XP no es aplicable en todas partes ni se  han identificado todos sus límites. Es decir, se necesita todavía mucha [[investigación empírica]] y experimental  en  diferentes  perspectivas.  Sin  embargo  se  han  identificado  algunas limitaciones:  
XP  esta  dirigido  para  equipos de  trabajo pequeños y  medianos.  El  ambiente físico es también  importante  en  XP.  La  comunicación  y  coordinación  entre  los  miembros  de proyectos debe existir en todo momento. Sin embargo, la distribución geográfica de los equipos no esta necesariamente fuera del alcance de XP, en caso de que esto incluya dos  equipos  en  proyectos  relacionados  con  una  interacción  limitada.  La  cultura  del negocio  que  afecta  la  unidad  de  desarrollo  es  otro  aspecto  puntual  en  XP.  Cualquier resistencia  contra  sus  prácticas  y  sus principios en representación de  los  integrantes, administradores o [[clientes]] del proyecto pueden ser suficientes para que el proceso falle.
+
 
 +
XP  esta  dirigido  para  equipos de  trabajo pequeños y  medianos.  El  ambiente físico es también  importante  en  XP.  La  comunicación  y  coordinación  entre  los  miembros  de proyectos debe existir en todo momento. Sin embargo, la distribución geográfica de los equipos no esta necesariamente fuera del alcance de XP, en caso de que esto incluya dos  equipos  en  proyectos  relacionados  con  una  interacción  limitada.  La  cultura  del negocio  que  afecta  la  unidad  de  desarrollo  es  otro  aspecto  puntual  en  XP.  Cualquier resistencia  contra  sus  prácticas  y  sus principios en representación de  los  integrantes, administradores o clientes del proyecto pueden ser suficientes para que el proceso falle.  
 +
 
 
También la tecnología puede proporcionar  insuperables obstáculos para el éxito de un proyecto. Por ejemplo, la tecnología que no soporte los cambios o demandas de largo tiempo de retroalimentación no es aplicable para procesos XP.  
 
También la tecnología puede proporcionar  insuperables obstáculos para el éxito de un proyecto. Por ejemplo, la tecnología que no soporte los cambios o demandas de largo tiempo de retroalimentación no es aplicable para procesos XP.  
  
 
== Fuentes ==
 
== Fuentes ==
 +
 
*Fernández Escribano, Gerardo. Introducción a Extreme Programming: Ingeniería del Software II, 9-12-2002
 
*Fernández Escribano, Gerardo. Introducción a Extreme Programming: Ingeniería del Software II, 9-12-2002
*http://programacionextrema.tripod.com/fases.htm
+
*[http://programacionextrema.tripod.com/ fases]
*http://www.extremeprogramming.org
+
*[http://www.extremeprogramming.org/ extremeprogramming]
  
 
[[Category:Ciencias_informáticas]]
 
[[Category:Ciencias_informáticas]]

última versión al 12:32 12 mar 2012

Extreme Programming
Información sobre la plantilla
Xpl.JPG
Metodología ágil más conocida; está centrada en la colaboración, la creación temprana y rápida de software

Extreme Programming. La Programación Extrema (XP) es probablemente la metodología ágil más conocida; está centrada en la colaboración, la creación temprana y rápida de software, y una serie de prácticas útiles en el desarrollo de software. XP se funda en cuatro valores: comunicación, simplicidad, retroalimentación y coraje, que incluyen también 12 prácticas fundamentales como la programación por pares, refactorización constante y un desarrollo orientado a las pruebas, entre otras.

Ciclo de vida de XP

El ciclo de vida de XP consiste de 5 fases: Exploración, Planeación, Iteraciones, Producción, Mantenimiento.

Exploración

En la fase de Exploración los clientes escriben las historias de usuario (funcionalidades con que debe contar el sistema) de lo que ellos quisieran incluir para la primera entrega. Cada plantilla describe las características que deben ser adicionadas al programa. Al mismo tiempo el equipo del proyecto se familiariza con las herramientas, la tecnología y las prácticas que utilizarán en el proyecto. La tecnología ha ser usada será probada y las posibles arquitectura para el sistema son exploradas construyendo un prototipo del sistema. La fase de exploración toma entre unas cuantas semanas a unos cuantos meses, dependiendo de que tanto los programadores conocen la tecnología.

Planeación

La fase de planeación configura la prioridad para las historias de usuario, contenidas en las tarjetas CRC (Clase-Responsabilidad-Colaboración, una técnica que reemplaza a los diagramas para la representación de modelos, en las que se escriben las responsabilidades) y se realiza un contrato del contenido para la primera entrega. Los programadores primero estiman cuánto esfuerzo requieren para cada historia y se hace una programación de acuerdo a esta estimación. El tiempo de la programación de la primera entrega normalmente no excede dos meses y el tiempo de la fase como tal toma un par de días.

Iteraciones

La fase de iteraciones hacia la entrega incluye varias iteraciones del sistema antes de la primera entrega. La programación que se determinó en la etapa de planeación es dividida en un número de iteraciones donde cada una tomará de una a cuatro semanas para ser implementada. La primera iteración crea la arquitectura de todo el sistema; esto es logrado seleccionando las historias que hacen cumplir la estructura para todo el sistema. El cliente decide las historias seleccionadas para cada iteración. Las pruebas funcionales creadas por los clientes son para correr al final de cada iteración. Al final de la última iteración, el sistema estará listo para ser entregado y llevarlo a producción.

Producción

La fase de producción requiere pruebas extras y chequeos de la ejecución del sistema antes de que sea entregado al cliente. En ésta fase, se pueden encontrar nuevos cambios y se toma la decisión si serán incluidos en la entrega actual. Durante esta fase, las iteraciones pueden necesitar ser recortadas de tres semanas a una semana. Después que la primera entrega es producida para el uso del cliente, el proyecto XP debe mantener el sistema en producción corriendo mientras que también se estén produciendo nuevas iteraciones.

Mantenimiento

La fase de mantenimiento requiere también un esfuerzo para soportar las tareas de los clientes. Así, la velocidad del desarrollo puede desacelerarse después de que el sistema está en producción. La fase de mantenimiento puede requerir incorporar nuevas personas al equipo y cambiar la estructura del equipo. Dentro de esta fase se llega a un estado llamado “de muerte”, que sucede cuando el cliente no tiene más historias para ser implementadas. Esto requiere que el sistema satisfaga también las necesidades en otros aspectos, como por ejemplo lo concerniente a la ejecución y la confiabilidad. Éste es el momento en el proceso XP cuando la documentación necesaria del sistema es finalmente escrita porque no habrá más cambios en la arquitectura, diseño o código. La muerte puede ocurrir si el sistema no está entregando los artefactos deseados o si se está convirtiendo muy costoso implementarlo.

Actores y sus responsabilidades

Hay diferentes roles en XP para diferentes tareas y propósitos durante el proceso y sus prácticas.

  • Programador. El programador escribe las pruebas y mantiene el código del programa tan simple y definido como sea posible.
  • Cliente. Escribe las historias (especificaciones) y pruebas funcionales, decide cuando es logrado cada requisito y determina la prioridad de la implementación de cada uno de ellos.
  • Verificadores (Testers). Ayudan al cliente a escribir pruebas funcionales, las corren regularmente, comunican los resultados de las mismas y mantienen las herramientas de prueba.
  • Seguidor de rastros (Tracker). El seguidor de rastros retroalimenta en XP. Sigue las estimaciones hechas por el equipo, es decir, la estimación del esfuerzo; y da retroalimentación en cómo están de acertados para mejorar las futuras estimaciones.
  • Facilitador. Es la persona responsable del proceso como un todo. Un buen entendimiento de XP es importante en este rol para habilitar al entrenador para guiar a los otros miembros del equipo en el siguiente proceso.
  • Consultor técnico. El consultor técnico es un miembro externo que procesa el conocimiento técnico específico necesitado y guía al equipo en resolver sus problemas específicos.
  • Administrador. El administrador toma las decisiones. Para lograr esto, él se comunica con el equipo del proyecto para determinar la situación actual y distinguir cualquier dificultad o deficiencia en el proceso.

Ventajas

  • Programación organizada.
  • Menor taza de errores.
  • Satisfacción del programador.

Desventajas

  • Es recomendable emplearlo solo en proyectos a corto plazo.
  • Altas comisiones en caso de fallar.

Beneficios

  • El cliente tiene el control sobre las prioridades.
  • Se hacen pruebas continuas durante el proyecto.
  • La XP es mejor utilizada en la implementación de nuevas tecnologías donde los requerimientos cambian rápidamente.

Alcance

La metodología XP no es aplicable en todas partes ni se han identificado todos sus límites. Es decir, se necesita todavía mucha investigación empírica y experimental en diferentes perspectivas. Sin embargo se han identificado algunas limitaciones:

XP esta dirigido para equipos de trabajo pequeños y medianos. El ambiente físico es también importante en XP. La comunicación y coordinación entre los miembros de proyectos debe existir en todo momento. Sin embargo, la distribución geográfica de los equipos no esta necesariamente fuera del alcance de XP, en caso de que esto incluya dos equipos en proyectos relacionados con una interacción limitada. La cultura del negocio que afecta la unidad de desarrollo es otro aspecto puntual en XP. Cualquier resistencia contra sus prácticas y sus principios en representación de los integrantes, administradores o clientes del proyecto pueden ser suficientes para que el proceso falle.

También la tecnología puede proporcionar insuperables obstáculos para el éxito de un proyecto. Por ejemplo, la tecnología que no soporte los cambios o demandas de largo tiempo de retroalimentación no es aplicable para procesos XP.

Fuentes

  • Fernández Escribano, Gerardo. Introducción a Extreme Programming: Ingeniería del Software II, 9-12-2002
  • fases
  • extremeprogramming