Calidad y Mejoramiento de Procesos Ágiles de Software M. Visconti & H. Astudillo Departamento de Informática Universidad Técnica Federico Santa María <hernan visconti at inf.utfsm.cl> Introducción Principios ágiles Principales métodos ágiles XP y Scrum Mejoramiento de procesos ágiles Temas abiertos Fuentes Agenda Page 1
Introducción Interés creciente en los métodos ágiles (inicialmente llamados ligeros, lightweight) en los últimos años enfrentamiento de requerimientos cambiantes tiempos de desarrollo escasos clientes y usuarios cada vez más exigentes Caracterizados como por defensores: antídoto a la burocracia de los métodos planificados, pesados, heavyweight por atacantes: hacking Nótese el uso deliberado de ágil para implícitamente calificar a los otros como no-ágiles el opuesto de ágil es planificado opuesto no es disciplinado porque métodos ágiles exigen mucha disciplina Algunas características de los métodos ágiles Documentación mínima Ciclos iterativos breves Reacción rápida ante los cambios Estrecha relación con el cliente Diseño simple Satisfacción de necesidades inmediatas Foco en las personas Organización libre Procesos adaptables, no predictivos Introducción Page 2
Agile Alliance Principios ágiles [1] Highest priority is to satisfy the customer through early and continuous delivery of valuable software Welcome changing requirements, even late in development. Agile process harness change for the customer s competitive advantage Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale Business people and developers must work together daily throughout the project Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done Principios ágiles [2] The most efficient and effective method of conveying information to and within a development team is face-to-face conversation Working software is the primary measure of progress Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely Continuous attention to technical excellence and good design enhances agility Simplicity the art of maximizing the amount of work not done is essential The best architectures, requirements, and designs emerge from self-organizing teams At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly Page 3
Extreme Programming (XP) el más famoso y el menos representativo Principales métodos ágiles Scrum Crystal Family no un método, sino una familia de métodos Feature-Driven Design Adaptive Software Development DSDM Otros Open Source Unified Process Extreme Programming (XP) Prácticas On-site costumer Whole team Planning game Small releases/continuous integration Sustainable pace/40-hour week Test-driven development Simple design Pair programming Collective code ownership Coding standards Metaphor Refactoring Page 4
Scrum Prácticas Scrum teams Sprints Scrum master Product backlog Product owner Sprint backlog Sprint planning meetings Daily scrums Sprint review meetings XP vs. Scrum Pueden complementarse XP tiene foco en lo técnico pero Scrum tiene foco en la gestión Ambos métodos incluyen prácticas para evaluar qué tan bien un producto se está desarrollando pero carecen de prácticas explícitas para evaluar el proceso mismo Posible mejora: agregar una práctica de restrospección (retrospective) al final de cada ciclo, con preguntas como: qué hicimos bien? qué podemos mejorar? qué nos aproblema? Page 5
Agilidad vs. planificación Últimamente, distintos trabajos han investigado la relación entre modelos de proceso y métodos ágiles, observando lo siguiente CMM y XP pueden complementarse (foco en aspectos de gestión vs. técnicos) Métodos ágiles calzan con la esencia del mejoramiento de procesos bajo interpretaciones menos literales que CMMI Métodos ágiles apuntan a gestión de proyectos, no a gestión de procesos Temas abiertos Son los métodos ágiles (XP por ejemplo) para todos? Qué otros artefactos considerar además de código? Cuánta agilidad? Cuánto proceso? Desafío: encontrar un punto de equilibrio, un balance adecuado Desarrollos potenciales Modelos ágiles balanceados para migración a la práctica industrial Mecanismos y herramientas ágiles para selección, adaptación, implantación y adopción de métodos ágiles Page 6
Fuentes de fácil acceso Agile Alliance http://www.agilealliance.com/ What is extreme programming? http://www.xprogramming.com/ Page 7