Sesión 3 del curso Metodologías Ágiles de Desarrollo de Software de la Universidad de Alicante (http://www.dccia.ua.es/dccia/inf/asignaturas/MADS/2013-14)
4. Año: 2001
•
El manifesto ágil no representa la invención de las metologías ágiles, sino
su presentación en sociedad
•
Muchas propuestas previas alternativas al modelo de cascada
•
•
•
•
•
Desarrollo en espiral, 1984
Rapid Aplication Development (RAD), 1991
Rational Unified Process (UP), 1994
Scrum, 1995
Extreme Programming, 1996
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
4
5. Autores
•
•
•
•
•
•
•
•
•
Kent Beck (Twitter, Web)
Mike Beedle
Arie van Bennekum
Alistair Cockburn (Web)
Ward Cunningham
Martin Fowler (Twitter, Web,
ThoughtWorks)
James Grenning
Jim Highsmith
•
•
•
•
•
•
•
•
Ron Jeffries (Twitter, Web)
Jon Kern
Brian Marick
Robert C. Martin (Twitter)
Steve Mellor
Ken Schwaber (Scrum.org)
Jeff Sutherland (Scrum.org)
Dave Thomas (Pragmatic
Programmer)
Andrew Hunt (Pragmatic
Programmer)
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
5
6. Valores, principios y prácticas
•
Las prácticas tienen sentido en el marco de un conjunto de valores y
principios
•
Las metodologías ágiles no son dogmáticas, responden a unos valores
que son los que hay que tratar de mantener
Kent Beck - Extreme Programming Explained, 2004
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
6
7. Los 4 valores del manifiesto ágil
Valoramos:
1. Individuos e interacciones sobre procesos y herramientas
2. Software que funciona sobre documentación exahustiva
3. Colaboración con el cliente frente a negociación del contrato
4. Responder al cambio frente a seguir un plan
Aunque los ítems de la derecha tienen valor, valoramos más los de la
izquierda.
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
7
8. Los 12 principios del manifiesto ágil
1. Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile
processes harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple
of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout
the project.
5. Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done.
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
8
9. Los 12 principios del manifiesto ágil
6. The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and good design
enhances agility.
10. Simplicity--the art of maximizing the amount of work not done--is
essential.
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
9
10. Los 12 principios del manifiesto ágil
11. The best architectures, requirements, and designs emerge from selforganizing teams.
12. At regular intervals, the team reflects on how to become more
effective, then tunes and adjusts its behavior accordingly.
Metodologías Ágiles de Desarrollo de Software
10
Domingo Gallardo, DCCIA, Univ. Alicante
12. ¿En qué se parece una fábrica y un
proyecto software?
Mary Poppendieck - Lean Software Development, Tutorial 2007
Metodologías Ágiles de Desarrollo de Software
12
Domingo Gallardo, DCCIA, Univ. Alicante
13. El desarrollo de software como
construcción de un producto
•
Entradas
•
•
Salida
•
•
Nuevas características (features) en forma de casos de uso, historias
de usuario, etc.
Software funcionando al que se le ha añadido las nuevas
características
Proceso
•
Cada característica debe ser analizada, desarrollada, probada,
añadida y entregada
Metodologías Ágiles de Desarrollo de Software
13
Domingo Gallardo, DCCIA, Univ. Alicante
14. Sistema de producción de Toyota y
fabricación lean
•
TPS (Toyota Production System), Taichi Ohno
• Flujo de desarrollo just-in-time
• Cultura de “parar la línea”
• Mejora continua
• Pensar en el conjunto
•
Da origen a los denominados sistemas de fabricación lean (lean =
austero, flaco)
• La idea central es la continua búsqueda y eliminación de los
desperdicios (waste) generados por el proceso
• Cuando se eliminan los desperdicios la calidad mejora, y el tiempo de
producción y los costes se reducen y la producción se vuelve fluida
(flow)
•
El término lean se ha popularizado: lean startups
Metodologías Ágiles de Desarrollo de Software
14
Domingo Gallardo, DCCIA, Univ. Alicante
15. Dos metáforas del desarollo de
software
•
Dos metáforas poderosas que nos permiten entender mejor la actividad
del desarrollo
•
•
Desarrollo software como el proceso de fabricación de un producto
Desarrollo software como el diseño de un producto que soluciona un
problema
•
Es interesante tener siempre presente ambas metáforas
•
Los principios lean se pueden aplicar a ambos aspectos
•
Fabricación: optimizar el proceso identificando y eliminando lo
innecesario
•
Diseño: extender el conocimiento y eliminar el desperdicio de reaprender
Metodologías Ágiles de Desarrollo de Software
15
Domingo Gallardo, DCCIA, Univ. Alicante
16. Eliminar los desperdicios (waste)
•
Desperdicio: cualquier cosa que no se utiliza y que no añade valor al
producto final
•
Producir sólo lo necesario y en el momento en el que se necesita
•
•
Si algo no se utiliza, no podemos darnos cuenta de sus fallos
En el desarrollo de software hay mucha sobre-producción
•
•
•
•
Demasiados requisitos para un release
Demasiada arquitectura para las necesidades actuales
Demasiado código para poder ser probado adecuadamente
Demasiadas funcionalidades para el usuario final
Metodologías Ágiles de Desarrollo de Software
16
Domingo Gallardo, DCCIA, Univ. Alicante
17. ¿Qué es valor?
Mary Poppendieck - Lean Software Development, Tutorial 2007
Metodologías Ágiles de Desarrollo de Software
17
Domingo Gallardo, DCCIA, Univ. Alicante
18. Los 7 principios del desarrollo de
software lean
•
Definidos por Mary Poppendieck ("Lean Software Development: An Agile
Toolkit", 2003 y “Implementing Lean Software Development”, 2006)
!
1. Eliminar los desperdicios (Eliminate Waste)
2. Fomentar la calidad (Build Quality In)
3. Crear conocimiento (Create Knowledge)
4. Decidir lo más tarde posible (Defer Commitment)
5. Entregar rápido (Deliver Fast)
6. Respetar a la gente (Respect People)
7. Optimizar el conjunto (Optimize the Whole)
Metodologías Ágiles de Desarrollo de Software
18
Domingo Gallardo, DCCIA, Univ. Alicante
19. Sistemas de fabricación Pull
•
Uno de los pilares de la
metodología Kanban
•
El flujo de trabajo se regula
tirando (pull) de los
materiales a transformar con
una cadencia constante
•
Un sistema pull regula el
flujo de los recursos
mediante un proceso de
fabricación reemplazando
solo lo que ha sido
consumido y lo que es
inmediatamente entregable
Metodologías Ágiles de Desarrollo de Software
19
Domingo Gallardo, DCCIA, Univ. Alicante
20. Kanban
•
•
Una de las herramientas
más importantes para
organizar el proceso de
producción son las
kanban (del japonés,
kan=visual y ban = tablero
o tarjeta)
Enfoque visual para el control de la
producción, usando herramientas
sencillas como contenedores
retornables, tarjetas o incluso espacios
vacíos para “tirar” de los productos
desde los centros de producción hacia
los centros de consumo o
transformación
!
!
!
•
Una kanban es una señal o ayuda visual
que indica que un centro de trabajo ha
finalizado un proceso, necesita trabajo o
necesita más materiales
•
Los tableros kanban permiten que los
centros de trabajo hagan un seguimiento
de las necesidades de los clientes o de
los proveedores y que respondan rápida
y adecuadamente
Metodologías Ágiles de Desarrollo de Software
20
Domingo Gallardo, DCCIA, Univ. Alicante
22. Tableros kanban en el desarrollo de
software
Henrik Kniberg - Lean from the Trenches
Metodologías Ágiles de Desarrollo de Software
22
Domingo Gallardo, DCCIA, Univ. Alicante
23. Lecturas
•
•
•
Manifiesto ágil, 2001
Ken Beck, Learning from Lean
Entrevista con Mary Poppendieck, An introduction to Lean Software
Development, 2004
Metodologías Ágiles de Desarrollo de Software
23
Domingo Gallardo, DCCIA, Univ. Alicante