Metodologías ágiles - Ensayo XP vs SCRUM

SCRUM

Scrum es una metodología de desarrollo ágil, en la que se aplican un conjunto de buenas prácticas para trabajar colaborativamente y obtener un resultado de calidad en nuestros proyectos.

Proporciona una estructura de roles, reuniones, reglas y artefactos. Los equipos son los responsables de crear y adaptar sus procesos dependiendo lo que el proyecto exija.

Iteraciones o Sprints

Scrum utiliza iteraciones de longitud llamadas Sprints, típicamente de dos semanas a días de duración. 

Es una alternativa excelente al módelo clásico de cascada, si diferencia más destacable es que en cada etapa las iteraciones se repiten como se muestra en la siguiente imagen.
Roles

Product owner

  • Única persona responsable de maximizar el retorno de la inversión (ROI) del esfuerzo de desarrollo
  • Responsable de la visión del producto
  • Constantemente re-prioriza el Backlog del Producto, ajustando las expectativas a largo plazo, como los planes de liberaciones
  • Es el árbitro final de las preguntas sobre requerimiento
  • Acepta o rechaza cada incremento del producto
  • Decide si se debe liberar
  • Decide si se debe continuar con el desarrollo
  • Considera los intereses de los stakeholders
  • Puede contribuir como miembro del equipo
  • Tiene un papel de liderazgo

Equipo de Desarrollo


  • Multifuncional (incluye miembros con habilidades de testing y a menudo otros no llamados tradicionalmente desarrolladores: analistas de negocio, expertos de dominio, etc.)
  • Auto-organizado/auto-gestionado, sin roles asignados externamente
  • Negocia los compromisos con el Product Owner, de un Sprint a la vez
  • Tiene autonomía con respecto a la forma de lograr sus compromisos
  • Intensamente colaborativo
  • Tiene mayor probabilidad de éxito al encontrarse establecido en un mismo lugar, sobre todo para los primeros Sprints
  • Tiene más éxito si el involucramiento con el equipo es a largo plazo y full-time. Scrum promueve evitar el traslado de personas o dividirlas entre otros equipos.
  • 7 ± 2 miembros
  • Tiene un papel de liderazgo
ScrumMaster

  • Facilita el proceso de Scrum
  • Ayuda a resolver los impedimentos
  • Crea un ambiente propicio para la auto-organización del equipo
  • Captura datos empíricos para ajustar las previsiones
  • Protege al equipo de interferencias externas y distracciones para mantener el flujo del equipo (también conocido como la zona)
  • Aplica los timeboxes
  • Mantiene visibles los artefactos Scrum
  • Promueve la mejora de las prácticas de ingeniería
  • No tiene autoridad en la gestión del equipo (cualquier persona que tenga autoridad sobre el equipo no es, por definición, su ScrumMaster)
  • Tiene un papel de liderazgo
Artefactos


  • Backlog del producto 
  • Ítems del Backlog del Producto (PBIs)
  • Backlog del Sprint
  • Tareas del Sprint
  • Sprint Burndown Chart
  • Product / Reñease Burndown Chart
XP (eXtreme Programming)


Las características fundamentales del método son:

  • Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.
  • Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión.
  • Programación en parejas: se recomienda que las tareas de desarrollo se lleven a caboen duplas, ya que está comprobado que la calidad del código aumenta en estas condiciones.
  • 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.
  • Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes.
  • 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.
  • 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.
  • 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.
Roles

En ésta metodología hay más roles en comparación con scrum, como los siguientes:

Programador
Escribe las pruebas unitarias y produce el código del sistema. Es la esencia del equipo.

Cliente
Escribe las historias de usuario y las pruebas funcionales para validar su implementación. Asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar el mayor valor de negocio.

Tester
Ayuda al cliente a escribir las pruebas funcionales. Ejecuta pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas.

Tracker
Es el encargado de seguimiento. Proporciona realimentación al equipo. Debe verificar el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, comunicando los resultados para mejorar futuras estimaciones.

Entrenador (coach)
Responsable del proceso global. Guía a los miembros del equipo para seguir el proceso correctamente.

Consultor
Es un miembro externo del equipo con un conocimiento específico en algún tema necesario para el proyecto. Ayuda al equipo a resolver un problema específico. Además este tiene que investigar según los requerimientos.

Gestor (Big boss)
Es el dueño de la tienda y el vínculo entre clientes y programadores. Su labor esencial es la coordinación.

Artefactos

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:


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:







Tarjetas CRC














Tabla comparativa



XP
SCRUM
AUTOR
Kent Beck
Jeff Sutherland
Ken Schwaber
AÑO
1999
1995
CARACTERÍSTICAS DESTACABLES
Pruebas unitarias, refabricación, programación en duplas, comunicación entre usuarios y desarrolladores.
Define un conjunto de prácticas y roles.
Método iterativo e incremental que enfatiza las prácticas y los valores.
FASES
1. Planificación de proyectos
2. Diseño
3. Codificación
4. Pruebas


Aclarando que en cualquier momento se puede volver de una etapa a otra.
1. Planeamiento
2. Montaje
3. Desarrollo
4. Liberación


Aclarando que en éste, el modelo es de iteraciones por lo que en cada parte del ciclo de desarrollo se realiza un ciclo interno.

Comentarios

Entradas populares de este blog

Proceso de SCRUM

Topologías de red

Ingeniería de software - Definiciones