DESARROLLO AGIL
AGILIDAD
PROCESO AGIL
MODELOS AGILES
ROLES
ANTECEDENTES
Creado en el 2001
Kent Beck y otros 16 desarrolladores
Firmaron el manifiesto por el desarrollo agil de software
Conformaron el grupo Alianza agil
Puede aplicarse a cualquier proceso del software
Diseñado en forma que permita la adaptacion de tareas y hacerlas directas
Cambios en el software
Equipo
Nuevas tecnologias
Facilidad de comunicacion
Entrega rápida de software funcional
Costos
Tradicional
Procesos agiles
Cambios en etapas
Cambios cualquier etapa
Principios
Suposiciones adaptables incrementalmente
prediccion de requerimientos
Diseño y construccion
Proceso
Politica
Debates
Factores humanos
Colaboración - Habilidad para tomar decisiones
Capacidad para resolver problemas difusos
Competencia-enfoque humano
Confianza y respeto mutuos - oraganizacion propia
Lider del proyecto
Equipo de desarrollo
Product Owner
Interesados
Entrenador agil
Supervisa y dirige el proyecto
asegura la comunicación del equipo
Se encarga del proceso de desarrollo
Proporcionar una retroalimentación
Ayuda en la mejora de procesos
Desarrollo impulsado por las características (DIC)
Desarrollo esbelto de software (DES)
Cristal
Modelado Ágil (MA)
Método de desarrollo de sistemas dinámicos (MDSD)
El proceso unificado ágil (PUA)
Scrum
Desarrollo adaptativo de software (DAS)
Una empresa de desarrollo de software comienza un proyecto para crear una aplicación móvil. Durante el proceso, los requisitos cambian con frecuencia debido a la retroalimentación del cliente. El equipo utiliza DAS para ajustar rápidamente el diseño y las funcionalidades de la aplicación en respuesta a estos cambios, entregando versiones incrementales cada dos semanas.
INTEGRANTES:
CHOQUE CONDORI JOHANN FABRICIO
FLORES FERNANDEZ JAIME ANTONIO IBAÑEZ CHOQUEHUANCA YERKO CRISTHIAN
HUANCO YUJRA JULIO CESAR
HERRAMIENTAS
Desarrollo Ágil de Software (DAS)
Desarrollo iterativo
Reuniones diarias
Retrospectivas
Mapeo de historias de usuario
Bucles de retroalimentación continua
SCRUM
Standup diario (reunión diaria)
Planificación de Sprint (planificación de sprint)
Revisión de Sprint (revisión de sprint)
Retrospectiva del sprint
Refinamiento del backlog de producto
Desarrollo de software basado en modelos (MDSD)
Lenguajes específicos de dominio (DSL)
Transformación del modelo
Generación de código
Validación del modelo
Diagramas UML
CRISTAL
Talleres de reflexión
Entrega incremental
Comunicación directa (cara a cara, videollamadas)
Tableros de gestión visual (e.g., Trello, Jira)
Integración frecuente
DES
Mapeo del flujo de valor
Sistemas Pull (Kanban)
Eliminación de residuos (Muda)
Mejora Continua (Kaizen)
Desarrollo justo a tiempo
Métodos Ágiles (MA)
Programación en pareja
Integración continua
Historias de usuarios
Retrospectivas ágiles
Limpieza de cartera de pedidos
Programación Extrema (PUA)
Programación en pareja
Desarrollo basado en pruebas (TDD)
Integración continua
Refactorización
Estándares de codificación
Se enfoca en la adaptabilidad y la flexibilidad durante el desarrollo de software. Su objetivo es ajustar continuamente el proyecto a medida que se presentan nuevos desafíos y oportunidades.
Es una metodología ágil que organiza el trabajo en ciclos cortos llamados sprints (generalmente de 2 a 4 semanas). Los equipos trabajan en conjunto para completar un conjunto de tareas definidas al comienzo de cada sprint.
Un equipo de desarrollo está trabajando en un software de gestión de proyectos. Dividen el trabajo en sprints de 3 semanas. Al final de cada sprint, revisan el progreso y ajustan el plan de trabajo para el próximo sprint, incorporando la retroalimentación del cliente y los aprendizajes obtenidos.
Se enfoca en la comunicación y la interacción humana, permitiendo flexibilidad en las prácticas y herramientas utilizadas.
Un pequeño equipo de 4 desarrolladores trabaja en un proyecto de software interno para una startup. Utilizan Cristal Claro, la variante más simple de Cristal, que les permite trabajar de manera flexible y mantener una comunicación constante, adaptando su enfoque según las necesidades del proyecto.
Se utiliza cuando se requiere un alto nivel de automatización en el desarrollo, permitiendo un enfoque más rápido y estructurado para sistemas complejos.
Una empresa de desarrollo necesita crear un sistema para gestionar una red de sensores IoT. Utilizan MDSD para modelar el sistema de forma abstracta y luego generar automáticamente el código necesario, reduciendo significativamente el tiempo de desarrollo.
Se enfoca en la entrega de características funcionales completas y útiles al cliente en cada iteración.
Un equipo de desarrollo está trabajando en una aplicación de comercio electrónico. Deciden implementar primero la funcionalidad de búsqueda y filtrado de productos porque es una de las características más solicitadas por los usuarios. Cada iteración se centra en completar una característica antes de pasar a la siguiente.
Se enfoca en la entrega continua de valor al cliente, minimizando los recursos y esfuerzos innecesarios.
Una empresa de software utiliza DES para desarrollar un nuevo producto. El equipo reduce la documentación innecesaria, elimina pasos redundantes en su proceso de desarrollo y se enfoca en entregar funcionalidades útiles a los clientes de manera rápida y eficiente.
Se utiliza para crear modelos y diagramas que ayuden a entender y comunicar el diseño del sistema, sin perder la agilidad del proceso.
Durante el desarrollo de un sistema de reservas en línea, un equipo utiliza MA para crear un diagrama de casos de uso que define cómo interactúan los usuarios con el sistema. Este modelo ayuda a todos los miembros del equipo a comprender el diseño sin necesidad de crear documentación extensa.
Combina los principios del Proceso Unificado con las prácticas ágiles, manteniendo la estructura del ciclo de vida del proyecto pero con un enfoque en la entrega continua de valor.
Un equipo de desarrollo está trabajando en un sistema complejo para una institución financiera. Utilizan PUA para gestionar el ciclo de vida del proyecto, combinando la disciplina del Proceso Unificado con la flexibilidad de las metodologías ágiles para asegurar entregas regulares y la satisfacción del cliente.