Universidad Autónoma de Baja California. Metodología SCRUM Profesor: JOSE LUIS ALEJANDRO GOMERO PORTILLA Por : Niels Amador Cerda Matricula: 324453 Introducción. A la hora de diseñar métodos de negocios que requieran una alta efectividad al momento de ser aplicadas, el desarrollo de proyectos y software desde el punto de vista de la Ingeniería de Sistemas es sumamente importante para la organización y optimización de las actividades llevadas a cabo por una empresa, por lo cual es necesaria la aplicación de diferentes procesos ágiles de desarrollo de software y gestión de proyectos, de acuerdo a las necesidades y la actividad que sea necesario realizar. Es por esto que en el presente trabajo se abordará el tema del SCRUM. Se hablará de sus orígenes, características, estructura, roles que participan , ventajas y desventajas para el desarrollo de proyectos y software. En muchas ocasiones, los modelos de gestión tradicionales no nos sirven para afrontar un reto que hoy en día resulta fundamental: incorporar cambios con rapidez y en cualquier fase del proyecto. Se trata de evitar lo que tantas veces nos ha ocurrido: cuando el proyecto se encuentra bastante avanzado nos damos cuenta de que no vamos por el buen camino o, simplemente, el cliente decide introducir cambios sustanciales, y esos cambios nos obligan a tirar por la borda todo el trabajo realizado hasta entonces, y nos impiden acabar en el plazo previsto. Dado que los cambios nunca van a dejar de existir, lo que necesitamos es ser capaces de gestionar los proyectos de una forma más ágil. Con ese objetivo, en los años 80 los japoneses Takeuchi y Nonaka estudiaron las prácticas de empresas con buenos resultados de rapidez y flexibilidad en la producción: Xerox, Canon, Honda, NEC, Epson, Brother, 3M o Hewlett-Packard. De ahí extrajeron la base de la metodología SCRUM que, aunque nació en el ámbito tecnológico, ha ido creciendo hasta consolidarse en campos de actividad muy diferentes. Definición de la Metodología La palabra SCRUM procede del vocabulario del rugby y significa melé; es decir, esa “figura” en la que los compañeros del equipo se amontonan, forman una piña y empujan todos en la misma dirección. Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos. En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales. Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto. Características Principales. Metodología de trabajo ágil. Diseñada para acortar el ciclo de desarrollo. Conseguir una mejor aproximación entre las funcionalidades del software y los requerimientos del cliente. Evitar la burocracia innecesaria. Mayor versatilidad frente a los cambios. Comenzar el trabajo lo más rápidamente posible. Manejo más eficiente de los requerimientos cambiantes en un proyecto. Mejorar la comunicación entre el cliente y el equipo desarrollador. Aumento de la productividad y de la comunicación directa entre el cliente y el equipo desarrollador. Recomendado para equipos de trabajo pequeños (máx. 8 personas). Desarrollo incremental e iterativo producción frecuente de prototipos para evaluación del cliente. Manejo más eficiente de los requerimientos cambiantes en un proyecto mejorando la versatilidad frente a los cambios. SCRUM no dice Qué hacer sino Cómo hay que hacer las cosas. Estructura o elementos específicos de la metodología. Control de la evolución del proyecto. Scrum controla de forma empírica y adaptable la evolución del proyecto, empleando las siguientes prácticas de la gestión ágil: Revisión de las Iteraciones Al finalizar cada iteración (normalmente 30 días) se lleva a cabo una revisión con todas las personas implicadas en el proyecto. Este es el periodo máximo que se tarda en reconducir una desviación en el proyecto o en las circunstancias del producto. Desarrollo incremental Durante el proyecto, las personas implicadas no trabajan con diseños o abstracciones. El desarrollo incremental implica que al final de cada iteración se dispone de una parte del producto operativa que se puede inspeccionar y evaluar. Desarrollo evolutivo Los modelos de gestión ágil se emplean para trabajar en entornos de incertidumbre e inestabilidad de requisitos. Intentar predecir en las fases iniciales cómo será el producto final, y sobre dicha predicción desarrollar el diseño y la arquitectura del producto no es realista, porque las circunstancias obligarán a remodelarlo muchas veces. Para qué predecir los estados finales de la arquitectura o del diseño si van a estar cambiando. En Scrum se toma a la inestabilidad como una premisa, y se adoptan técnicas de trabajo para permitir esa evolución sin degradar la calidad de la arquitectura que se irá generando durante el desarrollo. El desarrollo Scrum va generando el diseño y la arquitectura final de forma evolutiva durante todo el proyecto. No los considera como productos que deban realizarse en la primera “fase” del proyecto. Auto-organización Durante el desarrollo de un proyecto son muchos los factores impredecibles que surgen en todas las áreas y niveles. La gestión predictiva confía la responsabilidad de su resolución al gestor de proyectos. En Scrum los equipos son autoorganizados (no auto-dirigidos), con margen de decisión suficiente para tomar las decisiones que consideren oportunas. Colaboración Las prácticas y el entorno de trabajo ágiles facilitan la colaboración del equipo. Ésta es necesaria, porque para que funcione la autoorganización como un control eficaz cada miembro del equipo debe colaborar de forma abierta con los demás, según sus capacidades y no según su rol o su puesto. Ciclo de vida del proyecto. El ciclo de vida de un proyecto Scrum se basa en unidades iterativas que deben tener un tiempo fijo en las cuales se planifica, desarrolla y aprueba el resultado de esa iteración. Estas unidades iterativas se llaman SPRINTS. Se sugiere que un Sprint tenga una duración mínima de una semana y una máxima de cuatro. RITUALES Se les llama rituales a las reuniones que establece SCRUM que deben ser cumplidas en esta metodología. Sprint Planning Al comenzar un nuevo Sprint se debe tomar la lista de requerimientos (Product Backlog) y a partir de la prioridad de cada uno se debe seleccionar un conjunto de estos requerimientos los cuales serán ejecutados por el Team. Este subconjunto de requerimientos deben generar valor de retorno de inversión al cliente y debe ser un producto potencialmente entregable. En esta reunión participan el SM, PO y el Team. El tiempo de duración máxima son 2 horas. Sprint Daily Meeting Diariamente el Team debe realizar una reunión en donde cada integrante tiene 2 minutos para responder a las siguientes preguntas: 1. ¿Qué tareas comprometidas realizó? 2. ¿Qué impedimientos detectó al realizar estas tareas? 3. ¿Qué tareas se compromete a realizar mañana? En esta reunión debe participar el Team y el SM. Se puede realizar en cualquier momento del día, eso lo define el Team, una vez definido no debería ser modificado. Sprint Review Al finalizar un Sprint se debe realizar una revisión del producto concebido en ese Sprint. Para ello deberán reunirse el Team, el PO y el SM. Esta reunión deberá tener como resultado una aprobación o reprobación del producto por parte del cliente. Se recomienda una duración máxima de 2 horas. Sprint Retrospective Luego de realizar el Sprint Review se deberá realizar otra reunión entre el SM y el Team. El propósito de esta es realizar un análisis para ver cómo se aplicó la metodología y realizar una evaluación del resultado en donde se deberán tener en cuenta las correcciones que se deben aplicar para la siguiente iteración. Los roles. Scrum clasifica a todas las personas que intervienen o tienen interés en el desarrollo del proyecto en: propietario del producto, equipo, gestor de Scrum (también Scrum Manager o Scrum Master) y “otros interesados”. Los tres primeros grupos (propietario, equipo y gestor) son los responsables del proyecto, los que según la comparación siguiente (y sin connotaciones peyorativas) serían los “cerdos”; mientras que el resto de interesados serían las gallinas. Cerdos y gallinas. Esta metáfora ilustra de forma muy gráfica la diferencia de implicación en el proyecto entre ambos grupos: Una gallina y un cerdo paseaban por la carretera. La gallina dijo al cerdo: “Quieres abrir un restaurante conmigo”. El cerdo consideró la propuesta y respondió: “Sí, me gustaría. ¿Y cómo lo llamaríamos?”. La gallina respondió: “Huevos con beicon”. El cerdo se detuvo, hizo una pausa y contestó: “Pensándolo mejor, creo que no voy a abrir un restaurante contigo. Yo estaría realmente comprometido, mientras que tu estarías sólo implicada”. Propietario del producto: El responsable de obtener el mayor valor de producto para los clientes, usuarios y resto de implicados. Equipo de desarrollo: grupo o grupos de trabajo que desarrollan el producto. _Scrum Manager: gestor de los equipos que es responsable del funcionamiento de la metodología Scrum y de la productividad del equipo de desarrollo. Ventajas - Se obtiene software lo más rápido posible y este cumple con los requerimientos más importantes. - Se trabaja en iteraciones cortas, de alto enfoque y total transparencia. - Se acepta que el cambio es una constante universal y se adapta el desarrollo para integrar los cambios que son importantes. - Se incentiva la creatividad de los desarrolladores haciendo que el equipo sea auto administrado. - Se mantiene la efectividad del equipo habilitando y protegiendo un entorno libre de interrupciones e interferencias. - Permite producir software de una forma consistente, sostenida y competitiva. - Las reuniones se dedican a inconvenientes recientes, evitando el estancamiento Desventajas - Requiere delegar responsabilidades al equipo, incluso permite fallar si es necesario. - Es una metodología que difiere del resto, y esto causa cierta resistencia en su aplicación para algunas personas Conclusión. Scrum por sus características no es válido para cualquier proyecto ni para cualquier persona o equipo de personas. Es más, Scrum según muchos especialistas de esta metodología, es óptima para equipos de trabajo de hasta 8 personas, aunque hay empresas que han utilizado Scrum con éxito con equipos más grandes. Se puede decir que para el 90% de los proyectos y empresas, es una metodología válida, pero no es una metodología válida al 100%. Es más, no hay metodología mejor que otra ni válida al 100% para todas las personas y empresas. Scrum es por lo tanto, una metodología más de las muchas que hay, Scrum no es ni la mejor metodología ni la única, pero es una metodología que está empujando muy fuerte por la facilidad de implantación y por su agilidad en cuanto a cambios y lo que propiamente aporta en comparación con otras metodologías. Por un lado, Scrum evita la burocracia y la generación documental. No es que con Scrum no se deba o no se pueda documentar, si no que con Scrum no se exige documentar nada para iniciar un proyecto, algo que en otras metodologías es impensable. Con Scrum por otro lado, la idea principal es la de ponerse a trabajar prácticamente desde el primer momento y empezar a sacar frutos de ese trabajo para que el cliente vaya viendo los avances y se quede satisfecho con lo que se está haciendo y cómo se está haciendo. La idea de la metodología ágil es fundamentalmente que adopte los cambios, que se pueda reconducir el proyecto en un momento dado, y que afecte lo menos posible a los costes, los tiempos y al equipo de trabajo. Bibliografía. www.scrummanager.net/files/scrum_I.pdf www.scrumalliance.org www.mountaingoatsoftware.com