4.1 A State Controller for Kubernetes
4.1.4 Analysis and Discussion
Se trata de un grupo de metodologías de desarrollo que se basan en principios similares, combinan una filosofía con un conjunto de características de desarrollo. Esta filosofía se centra en la satisfacción del cliente y en la entrega rápida de software incremental, los equipos pequeños y muy motivados para efectuar el proyecto, los métodos informales, así como, la sencillez general en el desarrollo. En cuanto al desarrollo, se enfocan en la entrega sobre el análisis y el diseño y la comunicación activa y continua entre desarrolladores y clientes.
En un ambiente de negocios en el cual los productos de software evolucionan rápida y constante- mente, estas metodologías representan una alternativa razonable a las metodologías tradicionales.
Existe una gran variedad de métodos ágiles, entre ellos destacan Scrum, Crystal Clear, eXtreme Programming (XP).
El Manifiesto Ágil se publicó en 2001 y se encarga de definir de forma breve, una serie de doce principios y cuatro valores que rigen el ágilismo:
• Individuos e interacciones sobre procesos y herramientas. • Software operativo sobre documentación extensiva. • Colaboración con el cliente sobre negociación contractual. • Respuesta ante el cambio sobre seguimiento de un plan.
Aunque exista valor en los objetos de la derecha, se valoran más los de la izquierda.
Los objetivos de estas prácticas es dar valor, reducir el tiempo de desarrollo, aportar agilidad y flexibilidad y aumentar la fiabilidad.
52 4.1. METODOLOGÍA DE TRABAJO
También se creó la Alianza Ágil1, una organización sin ánimo de lucro cuyo objetivo es promover los conceptos relacionados con el desarrollo ágil de software y ayudar a que estos se adopten.
Scrum
Entre el gran abanico de metodologías ágil para elegir, se ha elegido Scrum.
Scrum es una metodología ágil para la gestión de proyectos relacionado con la construcción de software, es un método de desarrollo ágil de software concebido por Jeff Sutherland y su equipo de desarrollo a principios de la década de 1990 [1]. Los principios Scrum son congruentes con el manifiesto ágil y se utilizan para guiar actividades de desarrollo.
Se trata de un marco de trabajo iterativo e incremental para el desarrollo de proyectos, productos y aplicaciones estructurado en ciclos de trabajo llamados Sprints. Estos Sprints tienen una duración de entre 2 y 4 semanas, se ejecutan de forma consecutiva y tienen una fecha específica de finalización. Su objetivo principal es transformar un conjunto de requisitos en un incremento de funcionalidad operativa para el software.
Se basa en tres pilares fundamentales: la visibilidad de los procesos, la inspección periódica de los procesos y la adaptación de los procesos.
Para entender todo el proceso de desarrollo de Scrum, se describirá de forma general sus fases y roles.
Roles y responsabilidades
En los equipos de Scrum se definen una serie de roles bien diferenciados:
• El Scrum Máster es el encargado de asegurar los procesos y de comprobar que el modelo y la metodología funciona. Su objetivo es fomentar e instruir sobre los principios ágiles. Eliminará todos los inconvenientes que hagan que el proceso no fluya e interactuará con el cliente y con los gestores. Es el responsable de asegurar que Scrum es entendido y adoptado.
• El Product Owner (propietario del producto) que es la persona que toma las decisiones, el que conoce el negocio del cliente y su visión del producto, por lo tanto, es el responsable de maximizar el valor del producto y del trabajo del equipo de desarrollo. Se encarga de decidir sobre cuáles son las funcionalidades y características del producto y es la única persona responsable de gestionar el Product Backlog.
• El Development Team (equipo de desarrollo) responsable de realizar el trabajo. Se trata de un grupo multidisciplinario en el que participan programadores, diseñadores, arquitectos, así como testers. Este grupo se organiza de forma autónoma y su principal objetivo es desarrollar el producto.
Eventos y conceptos relevantes
Además de los Sprints, se celebran una serie de reuniones que tienen como propósito asegurar el cumplimiento de los objetivos establecidos. Estas reuniones son:
• Reunión de Planificación del Sprint: el propósito de esta reunión es determinar el alcance, establecer los objetivos y el trabajo que hay que realizar en cada sprint. Se lleva a cabo al principio del Sprint y se obtendrá el product backlog.
• Reunión diaria: se trata de una reunión breve que tienen lugar al comienzo de cada día por parte del Scrum Máster y los miembros del equipo. El objetivo de esta reunión es conocer los avances e impedimentos que están surgiendo en el desarrollo, de esta manera, se evalúa el avance de las tareas.
CAPÍTULO 4. MÉTODO DE TRABAJO 53
• Reunión de revisión: se trata de una revisión del incremento que se ha generado, durante esta ceremonia se presenta y explican al Product Owner las funcionalidades desarrolladas. Por parte del Product Owner se acepta o rechazan las funcionalidades construidas. Esta reunión se realiza al final del sprint.
• Reunión de retrospectiva: la finalidad de esta reunión es debatir temas relacionados con el sprint recientemente finalizado, así como analizar lo que se ha hecho y los resultados que se han conseguido con el fin de decidir qué medidas se pueden aplicar para mejorar estos resultados y ser más productivos.
Figura 4.1: Estructura de Scrum
Scrum utiliza tres artefactos:
• Product Backlog: se trata de una lista priorizada de todo lo que necesita el cliente. Es una lista dinámica y visible para todos los involucrados en el proyecto, en la cual se describen las funcionalidades o requisitos que será los que irá adquiriendo el producto en sucesivas iteraciones. Para cada ítem representado en esta lista será necesario especificar: el grado de prioridad, el esfuerzo necesario, la granularidad y los criterios de aceptación.
• Historias de usuario: son las descripciones de las funcionalidades que va a tener el software. Serán el resultado de la colaboración entre el cliente y el equipo e irán evolucionando durante toda la vida del proyecto
• Sprint Backlog: consiste en una lista de las tareas que se realizan en un sprint, son necesarias para convertir el product backlog en incremento de funcionalidad del software. Se asignan las tareas a cada persona y el tiempo que queda para terminarlas. De esta manera el proyecto se descompone en unidades más pequeñas y se puede determinar o ver en qué tareas no sé está avanzando e intentar eliminar el problema.