Post on 22-Jan-2016
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
Metodologías Ágiles
Magister en Ingeniería de SoftwareUNSL
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
El principio (sin ingeniería)
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
Contexto histórico
• Contratos multimillonarios con el DoD• Necesidad de “certificar” proveedores
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
Que se entiende por nivel Definido?
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
Agile Manifesto
• declaración de principios• muy buena aceptación (debate Bohem)
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
Individuos e Interacciones
• La suposición de los roles intercambiables
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
Debate
• UML, es Agile?• Como sé que mi proyecto tiene
suficiente/demasiada documentación?
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
Los 12 principios del Manifesto
5 - Hacer proyectos con individuos motivados6 - El medio de comunicación por excelencia es
cara a cara7 - La mejor métrica de progreso es la cantidad
de software funcionando8 - El ritmo de desarrollo es sostenible en el
tiempo
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
Los 12 principios del Manifesto
9 - Atención continua a la excelencia técnica10 - Simplicidad - Maximización del trabajo no
hecho11 - 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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
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 -UNSLiridis group
10 - Maximizar el trabajo no hecho (o Simplicidad)
• no implementar mas de lo acordado• no debe confundirse con relegar diseño y
saltar a la codificación• Refactoring• No es “good enough quality”
• Cómo se alinea este principio con la forma de ser del desarrollador argentino?
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
11 - Equipos auto-organizados
• sinergia (DeMarco & Lister)• es un principio que apunta a la organización• proceso de reclutamiento• objetivos - motivación - satisfacción con el
trabajo• preservar los equipos de un proyecto a otro
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
12 - Autoevaluación
• mejora continua del proceso• conocimiento organizacional• los cambios pueden ser un poco erráticos si no
se aplica un criterio cuantitativo
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
Práctico #1
1 - Fundamentar reducciones en el costo de cambio de requerimientos en una metodología que cumple los principios de Agile. Comenzar con la curva clásica, de cualquier libro de ingeniería de software.
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
Práctico #1
2 - Evaluar el costo de cambios desde una perspectiva del cliente. Es similar la necesidad del cliente si se usa una metodología tradicional?
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group
Práctico #1
3 - Si vemos un libro de requerimientos como una orden de trabajo, y las correspondientes estimaciones como el presupuesto, el contrato de la empresa de software con su cliente es bastante directo . Bosqueje como sería un contrato usando una metodología ágil que implemente la misma aplicación.