Metodologías Ágiles: Scrum y técnicas de estimación ágil PreparaTIC - Junio 2009 Jorge Manrubia Díez jorge.manrubia@giss.seg-social.es ¿Por qué? Hacer un programa es cómo... Can you get a design that is capable of turning the coding into a predictable construction activity? And if so, is cost of doing this sufficiently small to make this approach worthwhile? Martin Fowler, “The new methodology” (2005) They were amazed that my industry (software development) was trying to do its work using a completely inappropriate process control model. (...) They said that all complex processes that weren’t completely understood required the emprical model (not the defined process control model) Conclusiones de expertos en teoría de control de procesos liderados por Babatunde Organnaike tras analizar los procesos de desarrollo software. Ken Schwaber, “Agile Software Development with Scrum” (2001) Diseño del Sistema de Información © Ministerio de Administraciones Públicas DISEÑO DEL SISTEMA DE INFORMACIÓN (ORIENTACIÓN A OBJETOS) Resultados del Análisis Resultados del Análisis de deSistema Sistemade de Información Información (Orientación a Objetos) (Orientación a Objetos) - Catálogo de Requisitos - Catálogo de Requisitos - Contexto del Sistema - Contexto del Sistema - Modelo de Casos de Uso - Modelo de Casos de Uso - Modelo de Clases de - Modelo de Clases de Análisis Análisis - Modelo de Procesos - Modelo de Procesos - Descripción de - Descripción de subsistemas subsistemas - Resultado del Análisis de - Resultado del Análisis de Consistencia Consistencia - Interfaz de usuario - Interfaz de usuario - Plan de Pruebas - Plan de Pruebas Especificación de Especificación de Requisitos Software (ERS) Requisitos Software (ERS) DSI 1 DSI 2 DSI 8 DSI 3 DSI 7 DSI 4 DSI 10 DSI 6 Metodología MÉTRICA Versión 3 Entradas EntradasExternas Externas - -Estándares Estándaresyy normativas de la normativas de la instalación instalación - Características - Características Específicas del SGBD Específicas del SGBD o Sistemas de Ficheros o Sistemas de Ficheros a Utilizar a Utilizar - Estructura de Datos del - Estructura de Datos del Sistema Origen Sistema Origen DSI 9 DSI 11 DSI 12 - Diseño de la Arquitectura - Diseño de la Arquitectura del Sistema del Sistema - Entorno Tecnológico, - Entorno Tecnológico, Seguridad, Operación y Seguridad, Operación y Administración Administración - Diseño Detallado de - Diseño Detallado de Subsistemas Subsistemas - Diseño de la Realización - Diseño de la Realización de Casos de Uso de Casos de Uso - Diseño de la Interfaz de - Diseño de la Interfaz de Usuario Usuario - Modelos de Clases de - Modelos de Clases de Diseño Diseño - Modelo Físico de Datos - Modelo Físico de Datos - Resultado Análisis de - Resultado Análisis de Consistencia Consistencia - Especificaciones de - Especificaciones de Construcción Construcción - Plan de Migración y - Plan de Migración y Carga inicial Carga inicial - Especificación del - Especificación del Entorno, Niveles y Entorno, Niveles y Planificación de las Planificación de las Pruebas Pruebas - Requisitos de - Requisitos de Implantación Implantación CONSTRUCCIÓN CONSTRUCCIÓN DEL SISTEMA DE DEL SISTEMA DE INFORMACIÓN INFORMACIÓN 6 Adaptación continua del proceso + Excelencia técnica Desarrollo ágil: lo que no es Ágil Esfuerzo de planificación Tradicional Tiempo El propio proceso se adapta durante el desarrollo • Liberación temprana y continua del software de software funcional • Integración total de la gente de negocio en los equipos de desarrollo • Excelencia técnica, buenos diseños y simplicidad • • Reuniones cara a cara, comunicación oral Autoorganización de los equipos de desarrollo ... http://agilemanifesto.org/principles.html SCRUM y Técnicas de Estimación Ágil Scrum • Creada por Ken Schawber, Mike Beedle y Jeff Sutherland (mediados de los 90) • Equipos de ~7 personas • Iteraciones (sprints) de 30 días Roles • Product Owner: representa al cliente • Scrum Master (50% desarrollador) • Scrum Team • Chicken (otros) DESARROLLO (CICLO DE SPRINTS) PREGAME POSTGAME - Documentación - Product Backlog de usuario Inicial - Material de Daily Meeting - Release Backlog formación - Diseño alto nivel/arquitectura - ... 1 día Product Backlog Sprint: 1 mes Sprint Backlog DEFINIDO Sprint Planning Sprint Review Meeting Meeting EMPÍRICO DEFINIDO Backlogs Descripción Lista priorizada de Product funcionalidades de negocio Backlog y técnicas a desarrollar Items Estimación •User stories •Características •Bugs Story points Sprint Selección de items del PB y Tareas • Backlog tareas para desarrollarlos Horas Historias de usuario Descripción escrita de una funcionalidad concreta a desarrollar Como <tipo de usuario> quiero <poder hacer algo> Como desarrollador quiero poder transformar un modelo físico obtenido de ADABAS a un modelo lógico Como desarrollador quiero poder transformar un modelo físico obtenido de ADABAS a un modelo logico epic Como desarrollador quiero poder transformar un modelo físico obtenido de ADABAS traduciendo sólo las estructuras relacionales Como desarrollador quiero poder transformar un modelo físico obtenido de ADABAS admitiendo campos múltiples Como desarrollador quiero poder transformar un modelo físico obtenido de ADABAS admitiendo campos periódicos theme Estimación de Tamaño ≠ Estimación de Duración Story Point = Esfuerzo necesario + complejidad + riesgo ... ¿Cuánto miden? ¿Quién es más alto? 1, 2, 3, 5, 8, 13, 20, 30, 50, 100 Escala de estimación Planning Poker • La historia se presenta y se discute sobre ella • Los miembros del equipo escogen carta con la estimación • Todos dan la vuelta a la carta a la vez • Los miembros con la estimación más baja y más alta exponen sus razones, y se repite el proceso de estimación Velocidad del equipo = Story points / iteración Estimación de Tamaño Velocidad Estimación de Duración Características Deseadas Estimar tamaño Estimar duración PLANIFICACIÓN 2 Historia 2 3 Historia 3 3 Historia 4 2 Historia 5 5 Historia 6 2 Historia 7 1 Historia 8 8 2 Historia 2 3 Historia 3 3 Sprint Backlog 1 Historia 4 2 Historia 5 5 Historia 6 2 Sprint Backlog 2 Product Backlog Velocidad = 8 story points / iteración Historia 7 1 HIstoria 8 8 Sprint Backlog 3 Tiempo Historia 1 Historia 1 Las historias seleccionadas para el sprint se desglosan en tareas (estimación en horas) Diariamente los desarrolladores actualizan su estimación de esfuerzo restante Realidad Story Points Ideal (predictivo) Tiempo Gráfico de avance del proyecto (Release Burndown Chart) Gráfico de avance del sprint (Iteration Burndown Chart) Daily meeting • ¿Qué has hecho desde ayer? • ¿Qué vas a hacer hoy? • ¿Qué problemas tienes? 15 min. máximo Excelencia técnica Pruebas • • Exhaustivas Automáticas Pruebas automáticas ¿Cuánto? → Herramientas de cobertura de código (code coverage) Refactoring = mejora continua y temprana del diseño del código Integración continua Acomete cambios eMac Supervisa Desarrollador 1 Construye Acomete Cambios G4 Servidor SCM Servidor de G3 integración (CVS) Continua (Hudson) eMac Desarrollador 2 Feedback Construcción = Construcción + Tests + Despliegue Y para el cuarto... ¡¡¡Yo nunca usaría Métrica!!! Diferenciarse ↓ No aburrir Sin pasarse Proceso de Desarrollo Elemento Ejemplos •Iteraciones cortas, completas •Niveles de planificación: de lanzamiento, Descripción del proceso Configuración del equipo de desarrollo de iteración, diario •Planificación priorizada •Historias de usuario, story points, velocidad •Implicación del cliente Aspectos técnicos Elemento Ejemplos Uso de un servidor de integración continua •Detección temprana de errores •Software siempre listo para desplegar Pruebas automáticas •Exhaustividad •Automatización de tests de aceptación Uso de herramienta de cobertura de código Uso de herramientas de análisis de código •Definición de umbrales de cobertura a exigir: ejemplo, 90% código cubierto •Detección de código sin documentar •Nombres de identificadores con tamaño suficiente •Detección de métodos demasiado largos Referencias Agile Estimating and Planning. Mike Cohn. Prentice Hall, 2005 Agile Software Development with Scrum. Ken Schwaber. Prentice Hall, 2001 The art of Agile Development. James Shore and Shane Warden. Prentice Hall, 2007 User Stories Applied: For Agile Software Development. Mike Cohn. Addison-Wesley Professional, 2004