Desarrollo Ágil de Software
Extracto In Search of Methodology Alistair Cockburn, 1994 La historia que escuchamos fue casi la misma (con una excepción), independiente del tamaño, experiencia, país, década, o Estructurado vs. Objeto. Lo que encontramos fue lo siguiente: A los equipos de desarrollo les desagrada gastar tiempo en actividades de diseño que no lleven directamente al producto final. No les gusta tener que actualizar en forma manual documentos de diseño para mantenerlos al día con el producto (típicamente, simplemente no volvían a actualizarlos). Se les dan recursos y tiempo limitados para aprender nuevas técnicas, y no mucho tiempo extra para integrar dichas técnicas a sus hábitos diarios de trabajo. Los desarrolladores generalmente pueden evadir aquellos aspectos de la metodología que no les agradan.
Por qué? Metodología actual, documentada en papel, no facilita el desarrollo. Existen áreas sensibles que pueden ser mejoradas: Evaluación Preliminar v/s Concepción Construcción y Elaboración v/s Flujo Normal de Desarrollo Fomentar uso de herramientas adecuadas. Fomentar empowerment del equipo. Fomentar mentalidad de equipo.
RUP y Desarrollo Ágil Minimizar los Artefactos Intermedios Comunicación La comunicación tiene lugar entre las personas miembros del equipo, los documentos son secundarios. Simplicidad La descripción de un proceso siempre debe verse demasiado pequeña. Revisiones periódicas para remover complejidades acumuladas. Cualquier cosa que no pueda ser completamente justificada se elimina. Feedback e Iteraciones Breves Pasos pequeños, verificando exactitud de lo realizado (~ Daily Build visibilidad) Humanizar Un proceso sólo puede tener efectos de segundo orden, los efectos de primer orden se deben a las personas. Al construir un proceso debemos depender de la gente en todas las instancias donde el riesgo sea aceptable. Esfuerzo y Calendario La administración de proyectos no puede especificar ambos a la vez. Deben consultarse los actores relevantes.
MSF y Desarrollo Ágil Conceptos Clave Equipos de Pares Mentalidad enfocada al cliente Mentalidad de producto Mentalidad de cero-defectos Voluntad de Aprender Los Equipos Motivados son efectivos Clarificar la Visión de Equipo Prácticas Probadas Equipos Pequeños, Multidisciplinarios Trabajo Conjunto Participación Total en el Diseño
The Agile Manifesto Principles I Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes 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. www.agilemanifesto.org
The Agile Manifesto Principles II 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 selforganizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. www.agilemanifesto.org
De qué depende la calidad? Para lograr la calidad, conviene enfocarse en las personas involucradas en el proyecto. Los procesos y las tecnologías ayudan a las personas. Procesos Personas Calidad Tecnologías www.agileshift.cl
Principios de Desarrollo Liviano Iniciar pronto Aprender constantemente Postergar las decisiones Entregar rápidamente Eliminar pérdidas Empoderar al equipo Diseñar con integridad Evitar suboptimizaciones www.agileshift.cl Fuente: Mary Poppendieck. Lean Development & the Predictability Paradox 2003 Poppendieck LCC
Métodos de Desarrollo Ágil Extreme Programming o XP Prácticas de negocio, desarrollo y codificación. Scrum Base en la gestión del proyecto y la interacción entre sus participantes. Feature Driven Development o FDD Descubrir e implementar las funcionalidades relevantes (features). Crystal Clear Fuerte en comunicaciones, liviano en entregables, iteraciones cortas. www.agileshift.cl