domingo, 26 de febrero de 2017

¿XP (Extreme Programming) VS SCRUM?



Metodologías ágiles
Las metodologías ágiles son una serie de técnicas, herramientas y procedimientos  en el desarrollo de software, las cuales surgieron como respuesta para los desarrolladores de software que buscaban implementar nuevos sistemas de información así como para los negocios pequeños los cuales tenían problema al usar las metodologías tradicionales pues terminaban centrándose más en la documentación que en la propia construcción del software.
Existen varias metodologías ágiles pero hablaremos principalmente de 2:

¿XP (Extreme Programming) VS SCRUM?

Extreme Programming (XP) ó Programación Extrema:
Se centra en las relaciones interpersonales como el éxito en el desarrollo de software. Se basa en la realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, que se entreguen trabajos de calidad, la simplicidad en las soluciones que se estén implementando  así como la aceptación del cambio.
Principalmente se preocupa por la entrega de software en lapsos de tiempo menores y con reducidos costos pero incluyendo una buena calidad dejando de lado la exhaustiva  definición de requerimientos así como la producción de una extensa documentación.
Algunas de las prácticas de XP son:
  • Juego de la planificación
  • Pequeñas entregas
  • Diseño simple
  • Pruebas
  • Programación por parejas
  • Integración continua
  • Estándares de codificación
  • Propiedad colectiva




ROLES
DESCRIPCIÓN
Cliente
Se encarga de escribir las historias de Usuario y las pruebas funcionales para validar su implementación
Programador
Escribe las pruebas unitarias y produce el código del sistema.
Encargado de Pruebas (TESTER)
Ayuda a escribir las pruebas funcionales, ejecuta las pruebas y se encarga de dar a conocer los resultados a los demás miembros del equipo.
Encargado de seguimiento (Tracker)
Da realimentación al equipo además de que lleva un seguimiento de cada iteración que se hace
Entrenador (COACH)
O Tutor
Es responsable del equipo y verifica que se apliquen las prácticas de XP
Ayuda en todo
Gestor(BIG BOSS)
Se encarga de coordinar de modo que entre el cliente y el equipo trabajen de forma adecuada
ARTEFACTOS
DESCRIPCIÓN
Historias de Usuarios
Breve descripción del comportamiento del sistema. Se realiza una por cada funcionalidad que se quiera.
Tareas de Ingeniería
Describe las actividades o tareas que realizara un programador conforme a las historias de Usuario. Se debe incluir el nombre y el número de historia a la que pertenece, los puntos a realizar para terminar la tarea, el nombre del responsable, fechas, etc.
Tarjetas CRC
Clase-Responsabilidad-Colaborador
Es una representación en tarjetas de cartón o de papel en donde se muestra el nombre de las clases, los métodos de esta y el nombre de las clases con las que colabora.







PROCESO:



SCRUM
Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Esta especialmente diseñada para proyectos con requisitos que suelen cambiarse de manera rápida. Se caracteriza por realizar el desarrollo de software mediante iteraciones denominadas sprints así como las reuniones a lo largo del proyecto para la coordinación e integración del trabajo.
También se utiliza cuando no se entrega al cliente lo que necesita en tiempo y forma así como cuando los costes se disparan o la calidad no es la que se esperaba


ROLES
DESCRIPCIÓN
Cliente (Product Owner)

Define las funcionalidades del proyecto así como las ordena en orden de importancia junto con cada iteración
Facilitador (Scrum Master)

Representa la gestión del proyecto además de que se encarga de vigilar que el equipo trabaje de forma productiva así como la existencia de la cooperación entre todos los roles
Equipo (Team)
Típicamente de 5 a 9 personas, deben ser auto-organizados y solo puede existir un cambio de  miembros entre los sprints.
ARTEFACTOS
DESCRIPCIÓN
Lista de requisitos priorizada (Product Backlog)

Una lista de todos los trabajos que se deseen en el proyecto, esta es priorizada por el product owner.
Lista de tareas de la iteración (Sprint Backlog)
Es la lista de tareas que el equipo hace en las reuniones para la p0lanificaciópn de cada iteración con el objetivo de completar los requisitos seleccionados para la iteración.
La lista permite ver las tareas en donde se esta teniendo problemas.


Gráficos de trabajo pendiente (Burndown Chart)
Muestra la velocidad a la que se está completando los objetivos/requisitos. Y así estimar si el Equipo podrá completar el trabajo en el tiempo requerido, si se quitan requerimientos o se necesita otro equipo.









PROCESO





Actividades:    
  • Planificación de la iteración (Sprint Planning) El equipo selecciona los temas a partir del Product Backlog que pueden comprometerse a completar y Se crea el Sprint Backlog
  • Ejecución de la iteración (Sprint)
  • Reunión diaria de sincronización del equipo (Scrum Daily Meeting) Reunión Diaria entre el equipo que dura aproximadamente 15 minutos con el fin de coordinar.
  • Demostración de los requisitos completados (Sprint Review) Se presenta lo que se ha realizado durante el sprint
  • Retrospectiva (Sprint Retrospective) Participa todo el equipo y se revisa lo que funciona o no, dura normalmente de 15 a 30 minutos
  • Refinamiento de la lista de requisitos y cambios en el proyecto



Programación Extrema XP
Scrum
Roles
  •         Cliente
  •         Programador
  •         Encargado de Pruebas (TESTER)
  •         Encargado de seguimiento (Tracker)
  •         Entrenador (COACH) o Tutor
  •         Gestor(BIG BOSS)

  • Cliente (Product Owner) 
  • Facilitador (Scrum Master)
  • Equipo (Team)
Artefactos
  • Historias de Usuarios
  • Tareas de Ingeniería
  • Tarjetas CRC
  • Clase-Responsabilidad-Colaborador

  • Lista de requisitos priorizada (Product Backlog) 
  • Lista de tareas de la iteración (Sprint Backlog) 
  • Gráficos de trabajo pendiente (Burndown Chart)



Programación por parejas
Programación Individual

Creación del Producto, programación.
Se basa más en la administración del Producto

Pruebas
Funcionalidad







Conociendo los aspecto más importantes tanto de la programación extrema como de Scrum podemos concluir que Scrum es más formal puesto que  se va haciendo la documentación para definir los requerimientos de modo que se puedan ir elaborando los sprint  y se centra más en la funcionalidad del sistema, va más orientado a lo que viene siendo la administración del proyecto además de que durante el proceso aunque se tata de seguir el orden de las iteraciones según como las priorizó el Product owner, si el equipo de trabajo se da cuenta que es mejor modificar el orden lo harán para avanzar en el proyecto   mientras que en XP se enfoca más en las pruebas sobre el programa para así ver que es lo que falta, si funciona como se esperaba, se orienta más a la creación del producto y sigue estrictamente el orden que haya elegido el cliente, pues él es el que manda.
Otra diferencia es que en Scrum los miembros del equipo trabajan individualmente mientras que en XP se trabaja la programación por parejas pero aun así la metodología que se use dependerá del proyecto que se esté trabajando pues se tiene que establecer la metodología que se adecue más.


“¿Qué es Scrum?” extraído el 25 de Febrero de 2017 desde la fuente https://proyectosagiles.org/que-es-scrum/

Espinoza, S. (2007) Ingeniería de Software. Programación Extrema [Diapositivas PowerPoint]  Febrero 24, 2017 Sitio Web: https://es.slideshare.net/edgarespinoza/programacion-extrema

Grafeuille, E. (2008) Una Introducción a Scrum [Diapositivas PowerPoint] Febrero 25, 2017 Sitio Web: https://www.mountaingoatsoftware.com/.../Spanish-Redistributable-Intro-Scrum.ppt


Letelier, P., Sánchez,E.. (2003). Metodologías Ágiles en el Desarrollo de Software. [PDF File] Febrero 25, 2017, de Grupo ISSI Sitio web: http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf

No hay comentarios.:

Publicar un comentario