Simón Hernández Cristian 3CV1 Cuadro comparativo de las metodologías Ágiles ¿Qué es? Kanban Deriva del japonés que significa “Tablero” o “Tarjeta visual”, y sirve para mejorar el cómo se gestionan las tareas. Es un tablero que refleja los estados de las actividades o tareas que se deben realizar en un flujo de trabajo determinado. Da por hecho que se está trabajando en lo que está expuesto en el tablero. Hacer reuniones diarias para discutir y encolar requerimientos. En las reuniones diarias, se busca tener a todos los empleados trabajando en el proyecto. Crystal Es una familia de metodologías agiles que se caracterizan por tener una versión dependiente de que tan crítico es el sistema que se pretende desarrollar. Estas metodologías Crystal se clasifican por colores y mientras más oscuro sea el color más pesada es la metodología, es decir, es más estricto. Se clasifica por colores, tomando como parámetros, el número de personas en el equipo y los riesgos potenciales. Entrega frecuente de software a los clientes. Entre más pequeño sea el equipo, mejor es la coordinación. Debe existir la retroalimentación y comunicación efectivas. Involucrar al cliente es la clave. Se centra en la entrega frecuente de productos. El desarrollo es iterativo e incremental. Las pruebas son realizadas durante todo el ciclo vital del proyecto. Comunicación y cooperación entre todas las partes interesadas en el proyecto. Todos los cambios durante el desarrollo son reversibles. Monitoreo constante del proyecto en desarrollo. Se obtienen resultados periódicos y tangibles. DSDM (Dynamic Systems Development Method) Es un método que provee un framework para el desarrollo ágil de software, donde el usuario apoya en un desarrollo iterativo y creciente a los requerimientos cambiantes, para desarrollar un sistema que reúna las necesidades de la empresa en tiempo y presupuesto. FDD (Feature Driven Development) Es una metodología ágil que organiza el desarrollo de software haciendo progreso en funciones, las cuales, no son necesariamente funciones del producto en el sentido de la palabra. Ingeniería de Software Características Pasos para desarrollar el Software Metodologías Ventajas Desventajas Es muy fácil de utilizar, actualizar y asumir por parte del equipo. Provee flexibilidad en la producción. El rompimiento de las barreras administrativas. Promueve el trabajo en equipo y mejora la calidad. Es el más adecuado para proyectos que se encuentran en mejora continua. No es una técnica específica del desarrollo software. Asume sistemas de producción repetitivos dada la naturaleza de su creación en el área de manufactura. Menor efectividad en situaciones de Recursos Compartidos. El sistema no tiene ninguna anticipación en caso de fluctuaciones muy grandes e imprevisibles en la demanda. Puesta en escena. Revisión. Monitoreo. Paralelismo y flujo. Estrategia de diversidad holística. Técnica de puesta a punto de la metodología. Puntos de vista de usuario. Es apropiada para entornos ligeros. Permite tener una muy útil realimentación de los usuarios. Al estar diseñada para el cambio experimenta reducción de costo. Se define en cada iteración cuales son los objetivos de la siguiente. Presenta una planificación más transparente para los clientes. Delimita el alcance del proyecto con el cliente. Como no es una metodología rígida, dejando abierta la posibilidad de agregar y suprimir fases, productos, estrategias, técnicas que puede afectar el desarrollo del sistema. Crystal Clear es más fácil de aprender e implementar, pero XP es más disciplinado. Pre-Proyecto. Ciclo de Vida del Proyecto. 2.1. Estudio de Viabilidad. 2.2. Estudio del Negocio. 2.3. Iteración de Modelo Funcional. 2.4. Iteración de Diseño y Desarrollo. 2.5. Aplicación. 3. Post-Proyecto. La calidad del producto es mejorada a través de la participación de los usuarios. Asegura desarrollos rápidos. Reduce los costos de proyectos a través de las ventajas ya mencionadas. Permite realizar cambios de forma fácil. Permite la reutilización de aplicación a través de los módulos existentes. Se necesita una alta participación de los usuarios en el desarrollo, para evitar que los desarrolladores asuman criterios que no son ciertos. No es una metodología de desarrollo común. El proceso es un tanto difícil de comprender. 1. Cada componente del producto final ha sido probado y satisface los requerimientos. Minimiza los costos frente a cambios. Falta de documentación del diseño. El código no puede tomarse como una documentación. Problemas derivados de la comunicación oral. Pueden variar dependiendo del flujo de trabajo que se tiene actualmente. Pero los generales son estos: Backlog o Ideas. To Do o Análisis. In Progress o En desarrollo. Testing o Pruebas. Done o Terminado. 1. 2. 2. 3. 4. 5. Desarrollar modelo general. Construcción de la lista de rasgos. Planeación por rasgos. Diseñar por rasgos. Construir por rasgos. Simón Hernández Cristian ASD (Adaptive Software Development) LSD (Lean Software Development) SCRUM Ingeniería de Software 3CV1 Es un modelo de implementación de patrones agiles para desarrollo de software. Su funcionamiento es cíclico y reconoce que en cada iteración se producirán cambios e incluso errores. Define claramente entregas tangibles y evaluación del progreso del proyecto. Se basa en un proceso con iteraciones cortas que produce un software funcional que el cliente y la dirección de la empresa puedan ver y monitorear. Iterativo. Orientado a los componentes software más que a las tareas. Tolerante a los cambios. Guido por los riesgos. La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo. Es una translación de los principios y prácticas de la manufacturación Lean hacia el dominio del desarrollo de software. Adaptado del sistema de producción Toyota, apoyado por una sub-cultura pro-lean que está surgiendo desde la comunidad ágil. Satisfacer al cliente es la máxima prioridad. Proporcionar siempre el mejor valor por la inversión. La necesidad determina la tecnología. El éxito depende de la activa participación del cliente. El minimalista es esencial. El crecimiento del producto es el incremento de sus prestaciones, no de su tamaño. 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. Se basa en el desarrollo iterativo de un sistema y es capaz de responder fácilmente a todos los cambios que se requieran hacer. Indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto. Requisitos son cambiantes o poco definidos. La innovación, la competitividad, la flexibilidad y la productividad son fundamentales. Es un proceso liviano. Es fácil de comprender, pero difícil de dominar. Atención continua a la excelencia técnica y al buen diseño. Mejora continua de los procesos y el equipo de desarrollo. Entrega continua y en plazos cortos de software funcional. Fuerte dependencia de las personas. Falta de reusabilidad. La falta de documentación hace difícil que pueda reutilizarse el código ágil. Inicio, para determinar la misión del proyecto. Fijación del marco temporal del proyecto. Determinación de número de iteraciones. Definición de objetivo de cada iteración. Asignación de funcionalidad de cada iteración. Se utiliza para poder aprender de los errores e iniciar nuevamente el ciclo de desarrollo. Promulga la colaboración y la interacción de personas. Utiliza información disponible acerca de todos los cambios para poder mejorar el comportamiento del software. Apunta hacia el Rapid Application Development (RAD). Los errores y cambios que no son detectados con anterioridad afectan la calidad del producto y su costo total. No permite realizar procesos que son requeridos en las metodologías tradicionales. Eliminar desperdicios. Amplificar el aprendizaje. Decidir lo más tarde posible. Reaccionar tan rápido como sea posible. Potenciar el equipo. Crear la integridad. Visualizar todo el conjunto. La eliminación de los residuos conduce a la eficiencia global del proceso de desarrollo. La entrega del producto temprana es una ventaja definitiva. 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. El proyecto depende en gran medida la cohesión del equipo. El éxito del proyecto depende de la disciplina de los miembros del equipo. El papel de un análisis de negocios es de vital importancia para garantizar la documentación. Los patrocinadores del proyecto y los clientes necesitan saber lo que quieren y tomar las decisiones pertinentes. Se ejecuta en ciclos temporales cortos y de duración fija. o Iteraciones. Cada iteración tiene que proporcionar un resultado completo, un incremento de producto final. Se parte de la lista de objetivos/requisitos priorizada del producto. Gestión de las expectativas del usuario Los usuarios pueden participar en cada una de las etapas del proceso y proponer soluciones. Cada etapa del proceso arroja una serie de resultados. Se adapta a cualquier contexto, área o sector de la gestión. Gestión sistemática de riesgo. Funciona más que nada con equipos reducidos. Requiere una exhaustiva definición de las tareas y sus plazos. Exige que quienes la utilicen cuenten con una alta cualificación o formación.