UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL I. PORTADA UNIVERSIDAD TÉCNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial “Ingeniería del Software II” Título: Metodologías Ágiles de Desarrollo de Software. Carrera: Ingeniería en Sistemas Computacionales e Informáticos Área Académica: Ingeniería del Software II. Ciclo Académico Séptimo “A” y Paralelo: Estudiante: • Torres Bastidas Jefferson Patricio. Módulo y Ingeniería del Software II. Docente Ing. Hernán Naranjo. II. INFORME 1. PPYY 2.1 Título Metodologías Ágiles de Desarrollo de Software. 2.2 Objetivos General: • Definir e Investigar a profundidad acerca de algunas metodologías de desarrollo ágil de software. Específico: • Enumerar 6 tipos de metodologías de desarrollo ágil para software. • Establecer ventajas y desventajas de cada una de dichas metodologías. • Comprender la aplicabilidad de cada una de las 6 metodologías. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL 1. SCRUM • Definición: Scrum es una metodología ágil fantástica para desarrolladores. Consiste en un modelo de asignación de tareas diarias basado en reuniones rápidas y control de la evolución de los procesos. Es muy bueno para llevar un seguimiento de las tareas que se están llevando a cabo y saber en qué puntos se ha atascado el equipo. Además, la profundidad de las tareas que se asignan en SCRUM tiende a ser incremental, y esto coincide exactamente con el devenir normal de un desarrollo. Es genial para empresas de desarrollo de software orientadas a varios clientes. • Características: Sus principales características se pueden resumir en tres. El desarrollo de software se realiza mediante iteraciones, denominadas sprints, con una duración de 30 días. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente. Las reuniones a lo largo proyecto. Éstas son las verdaderas protagonistas, especialmente la reunión diaria de 15 minutos del equipo de desarrollo para coordinación e integración. También tenemos las demás características que son: Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Los roles principales en Scrum son el ScrumMaster, que mantiene los procesos y trabaja de forma similar al director de proyecto, el ProductOwner, que representa a los stakeholders (clientes externos o internos), y el Team que incluye a los desarrolladores. Durante cada sprint, un periodo entre 15 y 30 días (la magnitud es definida por el equipo), el equipo crea un incremento de software potencialmente entregable (utilizable). El conjunto de características que forma parte de cada sprint viene del Product Backlog, que es un conjunto de requisitos de alto nivel priorizados que definen el trabajo a realizar. Los elementos del Product Backlog que forman parte del sprint se determinan durante la reunión de Sprint Planning. Durante esta reunión, el Product Owner identifica los elementos del Product Backlog que quiere ver completados y los hace del conocimiento del equipo. Entonces, el equipo determina la cantidad de ese trabajo que UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL puede comprometerse a completar durante el siguiente sprint. Durante el sprint, nadie puede cambiar el Sprint Backlog, lo que significa que los requisitos están congelados durante el sprint. Scrum permite la creación de equipos autoorganizados impulsando la colocalización de todos los miembros del equipo, y la comunicación verbal entre todos los miembros y disciplinas involucrados en el proyecto. Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan (a menudo llamado requirements churn), y que los desafíos impredecibles no pueden ser fácilmente enfrentados de una forma predictiva y planificada. Por lo tanto, Scrum adopta una aproximación pragmática, aceptando que el problema no puede ser completamente entendido o definido, y centrándose en maximizar la capacidad del equipo de entregar rápidamente y responder a requisitos emergentes. Existen varias implementaciones de sistemas para gestionar el proceso de Scrum, que van desde notas amarillas "post-it" y pizarras hasta paquetes de software. Una de las mayores ventajas de Scrum es que es muy fácil de aprender, y requiere muy poco esfuerzo para comenzarse a utilizar. • Ventajas y Desventajas: Ventajas: • • • • Entregables en tiempo y forma, puedes ir enviando entregables al cliente mientras vas atacando los objetivos más sencillos, eso te hace ganar tiempo para atacar los objetivos más complejos. el ScrumMaster tiene el conocimiento necesario para lograr el objetivo primario y secundario por lo cual puede ir controlando el proyecto y delegando roles. Cada persona sabe que es lo que tiene que hacer y no es necesario estar reorganizando una y otra vez los Tracks de cada persona. Se involucra desde un principio y se da un rol a todos los stakeholders (personas que van a participar en el proyecto incluyendo cliente final, QA, Testers, etc.). Desventajas: • • Algunos miembros de tu equipo pueden saltar pasos importantes en el camino rápido para llegar al “sprint” final. El cliente siempre va a esperar los informes con la fecha exacta, y muchas veces los va a pedir antes, cuando capaz no pudiste avanzar en nada. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • • Demasiadas Reuniones para poco avance, a veces es muy cansado y estresante reunirse demasiadas veces por el mismo tema, algunos van perdiendo el interés en el proyecto. Si una persona renuncia o hay algún cambio es complicado remplazar ese rol ya que es la persona que se lleva el conocimiento especifico y afecta a todo el proyecto. No es aplicable a grandes escalas o cuando el sector IT es variado. • Roles: • En Scrum se definen varios roles, estos están divididos en dos grupos: cerdos y gallinas. El nombre de los grupos está inspirados en el chiste sobre un cerdo y una gallina que se relata a continuación. Un cerdo y una gallina se encuentran en la calle. La gallina mira al cerdo y dice: "Hey, ¿por qué no abrimos un restaurante?" El cerdo mira a la gallina y le dice: "Buena idea, ¿cómo se llamaría el restaurante?" La gallina piensa un poco y contesta: "¿Por qué no lo llamamos "Huevos con jamón?" "Lo siento, pero no", dice el cerdo, "Tú sólo estarías involucrada mientras que yo estaría comprometido". De esta forma, los 'cerdos' están comprometidos a través de sus aportes 'directos' en la construcción de software, mientras que las 'gallinas' están involucradas a través de sus aportes 'indirectos'. Las necesidades, deseos, ideas e influencias de los roles 'gallina' se tienen en cuenta, pero no de forma que pueda afectar, distorsionar o entorpecer el proyecto Scrum. • Roles "Cerdo" Los Cerdos son los que están comprometidos con el proyecto y el proceso Scrum; ellos son los que "ponen el jamón en el plato". • Product Owner El Product Owner representa la voz del cliente. Se asegura de que el equipo Scrum trabaja de forma adecuada desde la perspectiva del negocio. El Product Owner escribe historias de usuario, las prioriza, y las coloca en el Product Backlog. • ScrumMaster (o Facilitador) El Scrum es facilitado por un ScrumMaster, cuyo trabajo primario es eliminar los obstáculos que impiden que el equipo alcance el objetivo del sprint. El ScrumMaster no es el líder del equipo (porque ellos se auto-organizan), sino que actúa como una protección entre el equipo y cualquier influencia que le UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL distraiga. El ScrumMaster se asegura de que el proceso Scrum se utiliza como es debido. El ScrumMaster es el que hace que las reglas se cumplan. • Equipo El equipo tiene la responsabilidad de entregar el producto. Un pequeño equipo de 5 a 9 personas con las habilidades transversales necesarias para realizar el trabajo (diseñador, desarrollador, etc). • Roles "Gallina" Los roles gallina en realidad no son parte del proceso Scrum, pero deben tenerse en cuenta. Un aspecto importante de una aproximación ágil es la práctica de involucrar en el proceso a los usuarios, expertos del negocio y otros interesados (stakeholders). Es importante que esa gente participe y entregue retroalimentación con respecto a la salida del proceso a fin de revisar y planear cada sprint. Análisis de la frase "Rol gallina": La gallina alimenta al proyecto "poniendo huevos", no se ve comprometida como el cerdo que va al matadero. • Usuarios Es el destinatario final del producto. Como bien lo dice la paradoja, El árbol cae en el bosque cuando no hay nadie ¿Hace ruido? Aquí la definición sería Si el software no es usado ¿fue alguna vez escrito?. Stakeholders (Clientes, Proveedores, Inversores) Se refiere a la gente que hace posible el proyecto y para quienes el proyecto producirá el beneficio acordado que lo justifica. Sólo participan directamente durante las revisiones del sprint. Managers Es la gente que establece el ambiente para el desarrollo del producto. • • • Artefactos Pila del producto: (product backlog) lista de requisitos de usuario, que a partir de la visión inicial del producto crece y evoluciona durante el desarrollo. Pila del sprint: (sprint backlog) lista de los trabajos que debe realizar el equipo durante el sprint para generar el incremento previsto. Sprint: nombre que recibe cada iteración de desarrollo. Es el núcleo central que genera el pulso de avance por tiempos prefijados (time boxing). Incremento: resultado de cada sprint. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL 2. PROGRAMACIÓN EXTREMA XP • Definición: Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico. • Características: Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos con el objetivo de detectar futuros errores Re-fabricación: se basa en la reutilización de código, para lo cual se crean patrones o modelos estándares, siendo más flexible al cambio. Programación en pares: una particularidad de esta metodología es que propone la programación en pares, la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento. Lo fundamental en este tipo de metodología es: La comunicación, entre los usuarios y los desarrolladores La simplicidad, al desarrollar y codificar los módulos del sistema La retroalimentación, concreta y frecuente del equipo de desarrollo, el cliente y los usuarios finales. • Ventajas y Desventajas: Ventajas: • • • • • • Da lugar a una programación sumamente organizada. Ocasiona eficiencias en el proceso de planificación y pruebas. Propicia la satisfacción del programador. Fomenta la comunicación entre los clientes y los desarrolladores. Facilita los cambios. Permite ahorrar mucho tiempo y dinero. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • • • • Puede ser aplicada a cualquier lenguaje de programación. El cliente tiene el control sobre las prioridades. Se hacen pruebas continuas durante el proyecto. La XP es mejor utilizada en la implementación de nuevas tecnologías. Desventajas: • • • • Es recomendable emplearla solo en proyectos a corto plazo. En caso de fallar, las comisiones son muy altas. Requiere de un rígido ajuste a los principios de XP. Puede no siempre ser más fácil que el desarrollo tradicional. • Roles: Como todo equipo de trabajo se deben asignar o tener roles y en extreme programming existen varios roles tantos los que deben estar presentes siempre en un proyecto o algunos opcionales. • Programador Escribe las pruebas unitarias y produce el código del sistema. Define las tareas que conlleva cada historia de usuario, y estima el tiempo que requerirá cada una. • 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 (Encargado de pruebas) 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(Encargado de seguimiento) 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) UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL Es responsable del proceso global. Experto en XP, provee de las guías a los miembros del equipo para que se apliquen las prácticas XP y se siga el proceso correctamente. Determina la tecnología y metodologías a usar por el equipo de desarrollo. • Gestor (Big boss) Es el dueño del equipo y sus problemas. Experto en tecnología y labores de gestión. Construye el plantel del equipo, obtiene los recursos necesarios y maneja los problemas que se generan. Administra a su vez las reuniones (planes de iteración, agenda de compromisos, etc). No le dice al grupo lo que tiene que hacer, cuando hacerlo, ni verifica el avance de las tareas. • 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. 3. KANBAN • Definición: “Sistema de información que controla de modo armónico la fabricación de los productos necesarios en la cantidad y tiempo necesarios en cada uno de los procesos.” Kanban no es una técnica específica del desarrollo software, su objetivo es gestionar de manera general como se van completando tareas, pero en los últimos años se ha utilizado en la gestión de proyectos de desarrollo software, a menudo con Scrum (lo que se conoce como Scrumban). • Características: Visualizar el flujo de trabajo. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL Debes dividir tu trabajo en fases de forma que podamos tener un mapa visual de los que sería el flujo de trabajo dividido en columnas. Este flujo de trabajo podrá ser diferente según el proyecto de que se trate. Determinar el límite de “trabajo en curso”. En trabajo en curso (WIP: Work in Progress) debe estar limitado para que se conozca cuál es el número máximo de tareas que se pueden realizar en cada una de las fases. Medir el tiempo en completar una tarea El tiempo que se tarda en terminar cada tarea (desde que se solicita hasta que se entrega), es el “Lead time”. La visualización de tareas implica que la mejor forma de aplicar la metodología KANBAN sea a través de un tablero (puede ser digital o físico) Mover tarjetas dentro de una lista o trasladar de una lista a otra. En cada tarjeta viene definida una tarea. Cuanto más alto se sitúe en una etapa, mayor será su importancia. Hay un flujo continuo en el que estas tarjetas avanzan de una etapa a otra según su grado de realización. En la mayoría de aplicaciones de Kanban se puede cambiar la colocación de una tarjeta y moverla dentro de una lista según su importancia o trasladar de una lista a otra. Asignar personas a tarjetas. Las aplicaciones de Kanban son herramientas colaborativas en las que se invita a distintos miembros e, incluso, a clientes. Se puede invitar a unirse a una tarjeta específica o al tablero general. De este modo, los participantes podrán editar y dejar comentarios en las tarjetas y moverlas a otra etapa. Añadir notas y comentarios en las tarjetas. Las aplicaciones de Kanban para la gestión de proyectos cuentan con espacio ilimitado para añadir notas en cada tarjeta. La mayoría incluye un campo de descripción y permite adjuntar archivos relacionados. Esto facilita las conversaciones con los compañeros de equipo. Incluir listas de control. Cada tarjeta puede tener una o más listas de verificación. Las tarjetas pueden mostrar el porcentaje de verificación completado, lo que permite observar dónde se encuentra en un proceso. Establecer límites para el avance del proyecto. Algunas aplicaciones de Kanban permiten restringir la cantidad de tareas que se pueden incluir en una lista. De esta manera, se puede limitar el número de tarjetas por columna. Esta restricción persigue el avance del proyecto, en el que el aviso de demasiadas tareas advierte de que hay muchas cosas por hacer. Etiquetado de tarjetas. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL Las etiquetas pueden ser de utilidad para apuntar estados específicos de una tarjeta, como el nivel de dificultad o el requerimiento de la ayuda de algunos miembros concretos. Colocar fechas de vencimiento en las tarjetas. El establecimiento de plazos en las tarjetas de Kanban para su realización conlleva a la elaboración de esta tarea en el periodo establecido. Muchas aplicaciones envían notificaciones y recordatorios de fechas. Ver las tarjetas como un calendario. Muchas aplicaciones de Kanban ofrecen la posibilidad de activar una vista de calendario. Esto refleja la visualización de los plazos de desarrollo o de las fechas de entrega/vencimiento. • • • • • • Ventajas y Desventajas: Ventajas: Facilidad de entendimiento y exposición de información a todos los miembros involucrados. Facilidad de integración con metodologías ágiles (Scrumban). El más adecuado para proyectos que se encuentran en mejora contínua. No todas las desventajas de Kanban surgidas en manufactura aplican en la industria del software puesto que la implementación interna es diferente. Acepta el ingreso de cambios a último momento con facilidad. Desventajas: • • • • Menor efectividad en situaciones de Recursos Compartidos: Las órdenes no frecuentes vuelven ineficientes a kanban ya que se tiene que asegurar una producción suficiente por parte de un proceso mientras que a su vez el proceso que es no-frecuente es ejecutado. Kanban asume sistemas de producción repetitivos dada la naturaleza de su creación en el área de manufactura. Posiblemente Kanban pueda arrojar productos de baja calidad que requieren de ser retrabajados. Kanban funciona a manera de semáforo para administrar el tráfico y así cumplir con las necesidades del cliente indicando cuando empezar, cuando bajar el ritmo y cuando parar. Cualquier variabilidad o evento no esperado puede afectar el funcionamiento del sistema provocando que se generen señales confusas. Calidad: El sistema Kanban lleva los niveles de inventario cerca de 0 lo que en caso de alta incertidumbre e interrupciones en la red de transporte representa un peligro ya que eso significa que los clientes se quedan sin suministro de partes. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • Roles: • Service request Manager Se encarga de gestionar la demanda y los requisitos dentro del sistema Kanban, manejando las relaciones con los stakeholders y fomentando la transparencia dentro del sistema en torno a la priorización del trabajo. Alternativamente, este rol se puede llamar Product Manager, Product Owner o Service Manager. • Service Delivery Manager Es responsable del flujo de trabajo dentro de un sistema Kanban y/o determinados ítems de trabajo y facilita el Kanban Meeting y el Delivery Planning. Algunos nombres alternativos son Flow Manager, Delivery Manager o incluso Flow Máster. Kanban a diferencia de Scrum, no preescribe roles o reuniones. Éstos han sido destilados a partir de la observación en organizaciones que han adoptado el método y lo han evolucionado de forma colaborativa. • Artefactos No prescribe artefactos. 4. DESARROLLO LEAN • Definición: Lean Software Development, también conocido como Lean Programming es un conjunto de técnicas que engloban una metodología de desarrollo ágil de software orientado a conseguir exactamente lo que necesita el cliente. Es una evolución del Método Toyota de Producción aplicado al desarrollo y que está muy de moda entre los equipos de desarrollo en startups. Principalmente consiste en ciclos de evolución de software incrementales en los que se posponen las decisiones lo más posible hasta haber obtenido un feedback del cliente y así reaccionar lo más rápido y eficazmente posible a sus necesidades. Se fundamenta en tener un equipo potente y comprometido y el principio de aprendizaje continuo sobre el producto. El Desarrollo Lean una metodología fantástica para startups que están desarrollando un software orientado a tener éxito en el mercado, como desarrolladores de videojuegos o aplicaciones para móviles. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • Características: Se sostenía que para ser verdaderamente ágil se debía conocer además el negocio de punta a punta. LD se inspira en doce valores centrados en estrategias de gestión Satisfacer al cliente es la máxima prioridad. Proporcionar siempre el mejor valor por la inversión. El éxito depende de la activa participación del cliente. Cada proyecto LD es un esfuerzo de equipo. Todo se puede cambiar. Soluciones de dominio, no puntos. Completar, no construir. Una solución al 80% hoy, en vez de una al 100% mañana. El minimalismo es esencial. La necesidad determina la tecnología. El crecimiento del producto es el incremento de sus prestaciones, no de su tamaño. Nunca empujes LD más allá de sus límites. • • • • Ventajas y Desventajas: Ventajas: La eliminación de los residuos conduce a la eficiencia global del proceso de desarrollo. Esto a su vez acelera el proceso de desarrollo de software que reduce el tiempo y el costo del proyecto. Lo que es absolutamente vital en el entorno actual. Cualquier cosa que permite a las organizaciones para entregar más proyectos en el mismo periodo de tiempo que va a ser popular. La entrega del producto temprana es una ventaja definitiva. Esto significa que su equipo de desarrollo puede ofrecer mayor funcionalidad en un corto periodo de tiempo, por lo tanto, permitir que más proyectos para ser entregados. Esto sólo va a satisfacer tanto su departamento de finanzas, como a los clientes finales. El empoderamiento del equipo de desarrollo ayuda a desarrollar la capacidad de decisión de los miembros del equipo que a su vez, crea un equipo más motivado. Este beneficio realmente no se puede insistir demasiado suficiente. Los desarrolladores no aborreces nada más que ser micro-administrado y que las decisiones impuestas sobre ellos. De esta manera se puede determinar la mejor forma para desarrollar la funcionalidad que dará lugar generalmente a un producto final mucho mejor. Desventajas: UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • • • • • • • • El proyecto depende en gran medida la cohesión del equipo y los compromisos individuales de los miembros del equipo. En la mayoría de las profesiones que esto podría ser un factor muy importante, pero en él largas horas de trabajo y poco sociable es la norma por lo que no debería ser una gran desventaja. Y, por supuesto, si usted no darse cuenta de que los desarrolladores y probadores de trabajar largas horas, largos entonces usted está en para un rudo despertar. El éxito del proyecto depende de la disciplina de los miembros del equipo son y cómo son excepcionales sus habilidades técnicas. Si usted no tiene un equipo de personas con buenas habilidades que se complementan entre sí, entonces usted tiene un problema inmediato. Los patrocinadores del proyecto y los clientes necesitan saber lo que quieren y tomar las decisiones pertinentes. En desarrollo ágil de software estas decisiones pueden ser tomadas más adelante que, por ejemplo cuando se utilizan metodologías de cascada, que debería ser una ventaja. Pero el problema es que los promotores de proyectos tienden a ser paralizado por el miedo a la hora de tomar las decisiones difíciles. El papel de un analista de negocios es de vital importancia para garantizar la documentación de los requerimientos del negocio (BRD) se entiende correctamente. Si usted no tiene una persona con las habilidades correctas analista de negocios, entonces rápidamente podría encontrar esta convertido en una de las causas de la corrupción del alcance. En magra que permite la especificación de requisitos software (SRS) para evolucionar. Sin embargo, esto causa problemas de su propia. La flexibilidad es grande, pero demasiado pronto dará lugar a un desarrollo que pierde de vista su objetivo original y que nunca termina. Roles: El Scrum Master es el que hace que se cumplan las reglas establecidas para la gestión del proyecto, y como tal ha de aportar su conocimiento y esfuerzo para que el proyecto se gestione siguiendo las pautas de la metodología LPM. No debemos confundir esta figura con la del director del proyecto tradicional, sino que su labor es la de coordinación del proyecto. De hecho, la persona que ejerce esta función es también un miembro del Team y tiene su rol técnico en el desarrollo del proyecto. Además, el Director de Proyectos clásico es el referente jerárquico del equipo de trabajo y es también el interlocutor directo con el cliente, y es por causa de las gestiones que le comportan este nivel jerárquico que también se lo conoce UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL como “El solventa marrones” o “El come marrones” o “El pasa marrones”… según como consiga resolver las situaciones que tiene que ir sorteando. • Artefactos Como artefactos entendemos las distintas herramientas que deberemos manejar a lo largo de la gestión del proyecto y que nos han de servir de apoyo y facilitación. Empezaremos por la pareja de backlogs: el Product Backlog y el Sprint Backlog. Entendemos backlog como listado o relación de trabajos pendientes. 5. CRYSTAL METHODOLOGIES • Definición: El método Crystal es un enfoque de desarrollo de software ágil que se centra en las personas y sus interacciones cuando se trabaja en un proyecto en lugar de en procesos y herramientas. Alistair en creador de esta metodología creía que las habilidades y talentos de las personas, así como la forma en que se comunican, tienen el mayor impacto en el resultado del proyecto. • Características: Una de sus características principales es la vital importancia que se les da a los desarrolladores que componen el grupo de trabajo, por lo cual sus puntos de estudio están destinados a: Aspecto humano del equipo Tamaño de un equipo Comunicación entre los desarrolladores Políticas a seguir. Espacio físico de trabajo. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • Ventajas y Desventajas: • • • • • Ventajas: Son apropiadas para entornos ligeros Al estar diseñada para el cambio experimenta reducción de costo. Presenta una planificación más transparente para los clientes. Se definen en cada iteración cuales son los objetivos de la siguiente. Permite tener una muy útil realimentación de los usuarios. Desventajas: • Delimita el alcance del proyecto con el cliente. • • Roles: Diseñador Principal. Produce la Descripción Arquitectónica. Se supone que debe ser al menos un profesional de Nivel 3. En Metodologías Ágiles se definen tres niveles de experiencia: Nivel 1 es capaz de “seguir los procedimientos”. Nivel 2 es capaz de “apartarse de los procedimientos específicos” y encontrar otros distintos Nivel 3 es capaz de manejar con fluidez, mezclar e inventar procedimientos. El Diseñador Principal tiene roles de coordinador, arquitecto, mentor y programador más experto. Diseñador-Programador. Produce, roles-niños-codependientes-300x300junto con el Diseñador Principal, los Borradores de Pantallas, el Modelo Común de Dominio, las Notas y Diagramas de Diseño, el Código Fuente, el Código de Migración, las Pruebas y el Sistema Empaquetado. • • Experto en Negocios. Junto con el Usuario Experto produce la Lista de Actores-Objetivos y el Archivo de Casos de Uso y Requerimientos. Debe conocer las reglas y políticas del negocio. • • Coordinador. Con la ayuda del equipo, produce el Mapa de Proyecto, el Plan de Entrega, el Estado del Proyecto, la Lista de Riesgos, el Plan y Estado de Iteración y la Agenda de Visualización. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL • Verificador. Produce el Reporte de Bugs. Puede ser un programador en tiempo parcial, o un equipo de varias personas. • Escritor. Produce el Manual de Usuario. El Equipo como Grupo es responsable de producir la Estructura y Convenciones del Equipo y los Resultados del Taller de Reflexión. • Artefactos Crystal Methodologies Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo y la reducción al máximo del número de artefactos producidos. 6. ADAPTIVE SOFTWARE DEVELOPMENT (ASD) • Definición: El método ágil ASD (Adaptive Software Development) traducido en español significa Desarrollo Adaptable de Software es un modelo de implementación de patrones ágiles para desarrollo de software. Al igual que otras metodologías ágiles, su funcionamiento es cíclico y reconoce que en cada iteración se producirán cambios e incluso errores. El desarrollo de software adaptable (Adaptive Software Development - ASD) es una metodología de desarrollo que hace énfasis en aplicar las ideas que se originaron en el mundo de los sistemas complejos, adaptación continua del proceso al trabajo. • Características: Sus principales características del ASD son: Iterativo. Orientado a los componentes de software (la funcionalidad que el producto va a tener, características, etc.) más que a las tareas en las que se va a alcanzar dicho objetivo. Tolerante a los cambios. Guiado por los riesgos. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo. • Ventajas y Desventajas: Ventajas: • • • • • La tercera fase del ciclo de vida, revisión de los componentes, sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo. Apunta hacia el Rapid Application Development (RAD), el cual enfatiza velocidad de desarrollo para crear un producto de alta calidad, bajo mantenimiento involucrando al usuario lo más posible. Utiliza información disponible acerca de cambios para mejorar el comportamiento del software. Promulga colaboración, la interacción de personas. Anticipa cambios y trata automáticamente con ellos dentro de un programa en ejecución, sin la necesidad de un programador. Desventajas: • • • Aunque el ciclo entre el aprendizaje y la especulación es bueno permitiéndonos entregar productos con alta calidad, la prolongación de dicho ciclo por errores o cambios que no son detectados en reuniones anteriores afecta tanto a la calidad del producto como a su costo total. Dado a que es una metodología ágil implica no realizar procesos que son requeridos en las metodologías tradicionales o por lo menos no realizarlos en procesos diferentes, lo cual implica que empresas grandes las cuales necesitan llevar un mayor control a procesos y personas, tener tareas asignadas a un estado o proceso especifico. Artefactos No prescribe artefactos. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL Análisis Crítico: Todas las metodologías de desarrollo ágil son de mucha ayuda dependiendo del proyecto que estemos por realizar, SCRUM para mi es la metodología que más documentación presento al momento de investigar scrum tiene más roles y muchas más características en comparación a las demás metodologías pero como dije anteriormente depende del proyecto que vamos a realizar para nosotros ser decisivos en que metodología utilizar, Adaptative Software development es una metodología que está surgiendo y es muy interesante investigarla. Bibliografía: [1] I. d. Sotware, «Ingenieria de Software,» [En línea]. Available: http://ingenieriadesoftware.mex.tl/61154_ASD.html. [2] EcuRed, «Metodología Scrum,» [En línea]. Available: https://www.ecured.cu/Metodolog%C3%ADa_Scrum. [3] EcuRed, «EXtreme Programming,» [En línea]. Available: https://www.ecured.cu/EXtreme_Programming. [4] ScrumManager. [En línea]. Available: https://www.scrummanager.net/bok/index.php?title=Artefactos.