Metodologías Ágiles
Magister en Ingeniería de Software
UNSL
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
El principio (sin ingeniería)
iridis group
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”
iridis group
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
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Contexto histórico
• Contratos multimillonarios con el DoD
• Necesidad de “certificar” proveedores
iridis group
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
iridis group
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?
iridis group
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
iridis group
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”)
iridis group
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
iridis group
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)
iridis group
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.
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Que se entiende por nivel
Definido?
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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.
iridis group
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)
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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”
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Agile Manifesto
• declaración de principios
• muy buena aceptación (debate Bohem)
iridis group
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
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Individuos e Interacciones
• La suposición de los roles intercambiables
iridis group
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.
iridis group
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?
iridis group
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.
iridis group
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
iridis group
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
iridis group
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
iridis group
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 autoorganizados
12 - A intervalos regulares, el equipo evalúa su
desempeño y ajusta la manera de trabajar
iridis group
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
iridis group
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?
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
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
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
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?
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
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
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
12 - Autoevaluación
• mejora continua del proceso
• conocimiento organizacional
• los cambios pueden ser un poco erráticos si no
se aplica un criterio cuantitativo
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
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.
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
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?
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
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.
iridis group
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL
Descargar

Objetivos de este modulo