Así era la primera implementación de Scrum para Software

En 1986,  Nonaka y Takeuchi , en el artículo «The New New Product Development Game» bautizaron con la expresión «campos de scrum» a los entornos de  desarrollo de nuevos productos, en los que equipos reducidos y multidisciplinares, trabajaban en el mismo espacio físico, compartiendo el conocimiento y empleando ingeniería concurrente, en lugar de ciclos o fases secuenciales.

En estos ambientes de trabajo se logran niveles de eficiencia y valor para el producto desarrollado, mayores que los obtenidos empleando ingeniería secuencial y producción basada en procesos. En los 80, Nonaka y Takeuchi analizaron esta forma de producción, observando cómo trabajaban los equipos de las empresas tecnológicas que lograban mayores niveles de eficiencia y valor en sus productos: Fuji-Xerox, Canon, Honda, NEC, Epson, Brother, 3M, Xerox y Hewlett-Packard.

Diez años más tarde Ken Schwaber presentó en OOPSLA (1995) el modelo de campo de scrum que empleaba en su equipo de programación.

Las implementaciones de campos de scrum para desarrollo de software se vienen enriqueciendo desde entonces y  las implementaciones actuales se parecen ya poco a la original de Ken. Ahora es muy raro que alguien configure un campo de scrum con los controles originales (paquetes, cambios, riesgos, soluciones…) el backlog único ha evolucionado a backlog de producto y backlog de sprint. También es habitual usar un backlog estratégico o «epics» de producto. La evolución ha añadido a la reunión de revisión de sprint, otra de inicio y más tarde otra de retrospectiva. Tampoco se suele usar la fase de cierre, etc.

También el inventario de prácticas posibles se ha enriquecido. En 2001 apareció el gráfico burndown, más tarde de generalizó el uso de estimación de póker, luego la incorporación de tableros de control visual kanban…

Para tener una visión de retrospectiva, este es el «paper» de Ken Schwber presentado en 1995  su implementación de Scrum en OOPSLA: «SCRUM Development Process » y este otro su artículo del mismo año «Living on the Edge» en el que describía su implementación de Scrum para Software.

Esta es la traducción de algunos fragmentos de la descripción original.

Los primeros en observar diferentes implementaciones de SCRUM para el desarrollo de nuevos productos con alto rendimiento fueron Takeuchi y Nonaka (1) en Fuji-Xerox, Canon, Honda, NEC, Epson, Brother, 3M, Xerox, y Hewlett-Packard.
Coplien ha seguido y documentado un enfoque similar para el desarrollo de software en Borland, logrando la mayor productividad con C++ (1). Recientemente, Jeff Sutherland ha aplicado un enfoque más refinado de SCRUM en Smaltalk, y Schwaber en el desarrollo de Delphi.


Llamamos a este enfoque metodología SCRUM (véase Takeuchi y Nonaka, 1986) por el uso del término SCRUM en rugby –la formación cerrada que forman los delanteros para realizar el avance-

Scrum es una metodología para mejora y mantenimiento de un sistema existente o la producción de un prototipo. Se asume la existencia de diseño y código en su mayor parte  orientado a objetos, basado en librerías y clases. SCRUM gestionará la reingeniería completa posterior  de sistemas heredados.
…..

FASES DE SCRUM

SCRUM comprende las siguientes fases:

1.- Pre-juego

Planificación: Definición de una nueva versión basada en la pila actual, junto con una estimación de coste y agenda. Si se trata de un nuevo sistema, esta fase abarca tanto la visión como el análisis. Si se trata de la mejora de un sistema existente comprende un análisis de alcance más limitado.
Arquitectura: Diseño de la implementación de las funcionalidades de la pila. Esta fase incluye la modificación de la arquitectura y diseño generales.

2.- Juego

Desarrollo de sprints: Desarrollo de la funcionalidad de la nueva versión con respeto continuo a las variables de tiempo, requisitos, costo y competencia. La interacción con estas variables define el final de esta fase. El sistema va evolucionando a través de múltiples iteraciones de desarrollo o sprints.

3.- Post-juego

Preparación para el lanzamiento de la versión, incluyendo la documentación final y pruebas antes del lanzamiento de la versión.

Pasos de cada fase

Pasos de la planificación

  • Desarrollo de un backlog completo.
  • Determinación de la fecha de entrega y la funcionalidad de una o más versiones.
  • Selección de la versión más adecuada para desarrollo inmediato.
  • Trazado de los “paquetes del producto” (objetos) sobre los elementos del backlog de la versión elegida.
  • Selección del equipo o equipos para desarrollar la nueva versión.
  • Evaluación y control adecuado de los riesgos.
  • Estimación del coste de la versión, incluyendo desarrollo, material, marketing, formación y despliegue.
  • Conformidad de la dirección y financiación del proyecto.

Pasos de diseño y arquitectura

  • Revisión de los elementos del backlog incluidos en la versión.
  • Identificación de los cambios necesarios para implementar el backlog.
  • Análisis del dominio para incluir los requisitos que incluye el desarrollo mejora o actualización.
  • Acotar la arquitectura del sistema para apoyar el nuevo contexto y necesidades.
  • Identificar problemas del desarrollo o modificaciones.
  • Reunión de revisión de diseño. Cada equipo presenta los cambios para implementar los elementos del backlog, e identificar posibles reasignaciones.

Pasos del desarrollo (Sprint)

La fase de desarrollo es un ciclo de trabajo repetitivo.  La gestión determina el cumplimiento de los tiempos, funcionalidad y calidad. Este enfoque es conocido también como ingeniería concurrente.

El desarrollo consiste en los siguientes macro-procesos:

  • Reunión con los equipos para revisar los planes de lanzamiento de versión.
  • Distribución, revisión y ajuste de los estándares de conformidad para el producto.
  • Sprints iterativos hasta que el producto se considera listo para su distribución.

Un sprint es un conjunto de actividades de desarrollo llevado a cabo durante un periodo predefinido, por lo general entre una y cuatro semanas. Duración basada en la complejidad del producto, evaluación de riesgos y grado de supervisión deseado.
El tiempo determinado para el sprint establece su velocidad e intensidad.
El riesgo se evalúa de forma continua a través de las respuestas a los controles adecuados establecidos.

Cada sprint consiste en uno o varios equipos realizando:

  • Desarrollo: Definición de los cambios necesarios para la implementación de los requisitos del backlog en módulos, la apertura de los módulos, análisis del dominio, diseño, desarrollo, implementación, pruebas y documentación de los cambios. El Desarrollo consiste en el micro proceso de descubrimiento, invención e implementación.
  • Envoltura: Cierre de los módulos, creación de una versión ejecutable con los cambios que implementas los requisitos del backlog.
  • Revisión: Reunión de todos los equipos para presentar el trabajo y revisar el progreso, identificando y resolviendo posibles cuestiones y añadiendo nuevos elementos al backlog. Se revisan los riesgos y las respuestas apropiadas.
  • Ajuste: Consolidación de la información de la revisión de los módulos afectados.

Cada sprint es seguido de una revisión cuyas características son:

  • Está presente y participa el equipo al completo.
  • La revisión puede incluir a clientes, personal de ventas y otros.
  • La revisión cubre los sistemas funcionales y ejecutables abarcados por el equipo e incluye los cambios que se han realizado para implementar los elementos del backlog.
  • En la revisión se pueden evidenciar cambios en la forma en la que se han implementado los elementos del backlog.
  • La revisión también  puede introducir elementos nuevos en el backlog, cambiando de esta forma los contenidos y dirección de las versiones previstas.
  • Se determina la fecha de la siguiente revisión en base al progreso y complejidad. La duración normal de los sprints es de 1 a 4 semanas.

Cierre

Cuando el equipo de gestión siente que las variables de tiempo, parte completada, requisitos, coste y calidad están alineadas para producir una nueva versión, declaran cerrada la versión, dando paso a esta fase.
En esta fase se prepara el producto generado para producir una nueva versión.  Entre las tareas de cierre se encuentran: integración, pruebas del sistema, documentación de usuario, preparación del material de formación y marketing.

Controles de SCRUM

Al trabajar bordeando el caos (complejidad e imprevisibilidad) se requiere la gestión de controles que eviten la caída en el caos.

La metodología SCRUM incorpora estos controles generales para evitar la pérdida de control, utilizando las técnicas de Orientación a Objetos para la construcción de las entregas.

El principal control es el del riesgo. La gestión de riesgos da lugar a cambios en los controles y respuestas del equipo.

Los controles de la metodología SCRUM Son:

  • Backlog: Requisitos que el producto en su versión actual no gestiona de forma adecuada. Errores, defectos, peticiones del cliente, incorporación de mejoras competitivas o tecnológicas son elementos del backlog.
  • Los elementos del backlog que comprenden una nueva versión comprenden variables de fechas, calidad y funcionalidad viables.
  • Paquetes: componentes del producto que deben cambiarse para implementar la nueva versión.
  • Cambios: cambios que deben producirse en un paquete para implementar una nueva versión.
  • Problemas: problemas técnicos presentes que deben resolverse para implementar un cambio.
  • Riesgos: Para lograr el éxito del proyecto se revisan de forma continua los riesgos y las respuestas previstas. La gestión de riesgos afecta a otros controles.
  • Soluciones: respuestas a problemas y riesgos, que suelen ser cambios.
  • Temas: Cuestiones generales del proyecto que no se definen en términos de paquetes.

Estos controles se emplean en diversas fases de SCRUM. La dirección los emplea para gestionar el backlog. Los equipos los usan para gestionar cambios y problemas.
Ambos, dirección y equipos,  gestionan los temas, riesgos y soluciones. Estos controles son revisados, modificados y consolidados en la revisión de cada Sprint.

Scrum Development Process
Ken Schwaber

Artículos originales:

Un comentario en “Así era la primera implementación de Scrum para Software”

Los comentarios están cerrados.