560 likes | 807 Views
Metodologías Ágiles. Magister en Ingeniería de Software UNSL. Este curso. Se basa en el análisis critico de metodologías y procesos de desarrollo Trata detalladamente dos metodologías Ágiles
E N D
Metodologías Ágiles Magister en Ingeniería de Software UNSL Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Este curso • Se basa en el análisis critico de metodologías y procesos de desarrollo • Trata detalladamente dos metodologías Ágiles • Quizas el mayor desafío que Ustedes tienen es formar una opinión basada en evidencia acerca de las metodologías ágiles y rigurosas Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Aprobación • 15 % : Participación en clase • 25 % : Trabajos Prácticos • 60% : Trabajo de investigación + Presentación Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Objetivos de este modulo • Tener una interpretación propia basada en evidencia acerca de por qué surgieron las metodologías ágiles • Identificar fortalezas, debilidades, tendencias y preferencias en las metodologías robustas y ágiles Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Contenidos • Los inicios de la ingeniería de software • La crisis del software • Los procesos y modelos robustos • Los procesos y modelos ágiles • La gente Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Advertencia • Algunos puntos estarán interpretados, y Uds. son libres de tener una visión diferente • Esta presentación no es “completa” • La forma en que algunos temas se presentan pueden cuestionar algunos dogmas de la ingeniería de software Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
El principio (sin ingeniería) Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Contexto histórico • La NATO declara la crisis del software en 1968, luego de crear el término Ingeniería de Software un año antes • Deming, procesos, calidad en el resto de la industria • Bill Curtis sobre variación entre programadores • Fred Brooks “The mythical man-month” • Gerald Weinberg “The psichology og programming” Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Contexto histórico • Evidencia de sectores no-software de una relación directa entre mejore procesos - mejores productos • Clean-pipe & Dirty water • Una de las premisas de CMM Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Contexto histórico • Contratos multimillonarios con el DoD • Necesidad de “certificar” proveedores Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Breve paréntesis • Durante Semana Santa, escuché una excelente interpretación del Requiem, de Mozart por parte de la Sinfónica de Córdoba. • Obviamente, la variación de cada uno de los individuos, o algunos en particular, con miembros de la Sinfónica de Londres, eran notables Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Breve paréntesis • El resultado final, sin embargo, era altamente comparable. Las diferencias se fundían en una excelente presentación, que dejó satisfechos a los aún mas exigentes • Era tan descabellado pensar que un equipo de desarrollo de 400 personas podía funcionar como una orquesta? Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
CMM • Carneggie Mellon (por qué no el MIT? O Cal Tech?) • Bill Curtis • Mark Paulk • Watts Humphrey Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
El modelo del SEI • Modelo IDEAL de process improvement • Ciclo clásico al estilo Demming, con una fase inicial de diagnóstico contra un modelo de referencia • CMM es el modelo de referencia • Los niveles, y el término madurez, son extraídos de Crosby (“Quality is Free”) Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Quality is free • La calidad se mide por el costo de reparar errores • Niveles de Crosby: • Uncertainty • Awakening • Enlightment • Wisdom • Certainty Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Estructura de CMM • Se pueden encontrar muchos tutoriales • 500 páginas de recomendaciones, aunque el modelo podría explicarse en 20 • Breve debate: El nombre de los niveles (Inicial, Repetible, Definido, Gerenciado, Optimizado) • Assessments de CMM (no auditorías, ni certificaciones) Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Otros modelos • Bajo la sombrilla de SPI (software process improvement) surgieron otros modelos • SPICE • ISO 9001 • El espíritu de CMM se desmerece en una certificación. Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Que se entiende por nivel Definido? Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Seriamente • CMM no es normativo, pero... • Características de un proceso robusto • Upfront planning • Requirements Management, en un sentido tradicional • Ciclos de vida waterfall, V-model • Métricas Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
CMM y Producción en masa • Stock • Hand-off • Proceso con nivel decreciente en la necesidad de habilidades de los desarrolladores • Responsabilidad diluida en la organización Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Estructura de un Proceso de SW • Pipeline de fases ETVX • Cada fase tiene un entregable físico: documento de análisis, documento de diseño, etc • Planes detallados para las actividades de cada fase Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los problemas de las metodologías rigurosas • Tolvanen, 1998 • overhead de proceso • métodos difíciles de usar y aprender • ambigüedad Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los problemas de las metodologías rigurosas • Baskerville, Travis &Treux, 1992 • métodos orientados a proyectos grandes (realmente grandes) • falta de adaptabilidad Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los problemas de las metodologías rigurosas • DeMarco & Lister, 1987 • la gente puede centrarse mas en la documentación que en el desarrollo real • no se asigna suficiente responsabilidad a los desarrolladores • falta de motivación Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los problemas de las metodologías rigurosas • Bohem (2002) • enfoques rigurosos mas apropiados para sistemas críticos. La “inercia” de un enfoque rigurosos no es apropiada para ambientes de cambio y velocidad. Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Desarrollo ágil de SW (Agile) • Un compromiso útil entre nada de proceso y demasiado proceso (Fowler, 2001) Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Lean thinking • El modelo de manufactura en el que se baso Crosby, y luego inspirara CMM y otros procesos rigurososos, evolucionó • Conceptos como: • Just in time • Satisfacción del cliente • Eliminación de pasos innecesarios Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Ejemplo de empresas “Lean” • Toyota • Los trabajadores pueden detener la línea si detectan un defecto • eBay, Amazon, FedEx • Eliminación de las órdenes y tracking innecesario. Just-in-time. Envíos sin stock. • Chrysler • Acuerdos de colaboración con proveedores Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Principios de producción Lean • Toda tarea debe agregar valor al producto • Focalizarse en la gente que agrega valor • Agregar valor basado en demanda • Optimizar entre organizaciones Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Gastos en producción Lean • Producción en exceso • Stock • Pasos extra en el proceso • Búsqueda de información • Defectos • Esperas • Transportes Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Agile Alliance • 17 representantes de metodologías alternativas (XP, Scrum, Crystal...) reunidos en un hotel de Utah en 2001 • Companías que competían en un mismo mercado, intentando una “suma positiva” Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Agile Manifesto • declaración de principios • muy buena aceptación (debate Bohem) Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los cuatro valores • Individuos e interacciones por sobre procesos y herramientas • Software funcionando por sobre documentación detallada • Colaboración por sobre negociación con el cliente • Responder a cambios por sobre seguir un plan Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Individuos e Interacciones • La suposición de los roles intercambiables Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Software por sobre documentación • foco en la implementación por sobre el modelado • no significa que no se documenten requerimientos, diseño, etc. Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Debate • UML, es Agile? • Como sé que mi proyecto tiene suficiente/demasiada documentación? Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Colaboración del Cliente • algunas metodologías un poco extremas • el espíritu es no “extorsionar” al cliente con un contrato. Estar dispuesto al cambio, y cerca del cliente para predecirlo. Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Responder al cambio • requirements emergence • cambios a los requerimientos originales pueden tener mayor valor que los relevados inicialmente Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los 12 principios del Manifesto 1 - La prioridad es satisfacer al cliente a través de releases tempranos y frecuentes 2 - Recibir cambios de requerimientos, aun en etapas finales 3 - Releases frecuentes (2 semanas a un mes) 4 - Técnicos y no técnicos trabajando juntos TODO el proyecto Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los 12 principios del Manifesto 5 - Hacer proyectos con individuos motivados 6 - El medio de comunicación por excelencia es cara a cara 7 - La mejor métrica de progreso es la cantidad de software funcionando 8 - El ritmo de desarrollo es sostenible en el tiempo Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Los 12 principios del Manifesto 9 - Atención continua a la excelencia técnica 10 - Simplicidad - Maximización del trabajo no hecho 11 - Las mejores arquitecturas, diseños y requerimientos emergen de equipos auto-organizados 12 - A intervalos regulares, el equipo evalúa su desempeño y ajusta la manera de trabajar Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
1. Satisfacción del cliente como prioridad uno • Basado en los releases frecuentes y en etapas tempranas • Glass (2001) Cuidado con el manejo de expectativas del cliente Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
2 - Cambios son bienvenidos • Brooks (1987) ya identificó el problema • “stabilize and synchronize” de Microsoft • requiremennts emergence • Como se factura esto? Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
3 - Entregas frecuentes • la psicología del programador (Weinberg): Objetivos próximos y distantes • mejor manejo de requerimientos (Cockburn, 2000) • evolución del modelo en espiral Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
4 - Técnicos y desarrolladores trabajando juntos “En mi trabajo, tengo los usuarios mas estúpidos del mundo” • Microsoft: managers escriben código • Reducción del gap comunicacional Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
5 - Motivación • people factor • la gente es la mejor oportunidad para mejorar la productividad (Bohem, 1981) • el Principio de Dilbert Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
6 - Comunicación cara a cara • No es necesariamente informal • el espacio físico debe favorecer la comunicación • frecuentemente confundido con una reducción en la documentación Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
7 - Software es la mejor medida de progreso • no significa que las metodologías ágiles no colecten otras métricas • no confundir funcionalidad con “cantidad de software” • la mayoría de las métricas tradicionales son un epifenómeno de software entregado Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
8 - Ritmo de desarrollo sostenible • DeMarco & Lister (1987) : Mas de 40 horas por semana no es sostenible en el tiempo • responsabilidad social + efectividad ($) • una de las características de “venta” de CMM a desarrolladores es, de hecho, la disminución del overtime Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
9 - Excelencia técnica • revisión continua de la arquitectura/diseño • mejora continua del producto • peer reviews Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL