Fundamentos de las metodologías ágiles

23
Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante Fundamentos de las metodologías ágiles Sesión 3

description

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)

Transcript of Fundamentos de las metodologías ágiles

Page 1: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Fundamentos de las metodologías ágilesSesión 3

Page 2: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Manifiesto ágil

Page 3: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Manifiesto ágil

Page 4: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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

�4

Page 5: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Autores

• Kent Beck (Twitter, Web)• Mike Beedle• Arie van Bennekum• Alistair Cockburn (Web)• Ward Cunningham

• Martin Fowler (Twitter, Web, ThoughtWorks)

• James Grenning• Jim Highsmith• Andrew Hunt (Pragmatic

Programmer)

• 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)

�5

Page 6: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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

�6

Page 7: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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.

�7

Page 8: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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.

�8

Page 9: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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.

�9

Page 10: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Los 12 principios del manifiesto ágil

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

�10

Page 11: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Principios Lean

Page 12: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

¿En qué se parece una fábrica y un proyecto software?

�12

Mary Poppendieck - Lean Software Development, Tutorial 2007

Page 13: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

El desarrollo de software como construcción de un producto• Entradas

• Nuevas características (features) en forma de casos de uso, historias de usuario, etc.

• Salida• 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

�13

Page 14: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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�14

Page 15: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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 re-

aprender

�15

Page 16: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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

�16

Page 17: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

¿Qué es valor?

Mary Poppendieck - Lean Software Development, Tutorial 2007

�17

Page 18: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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)

�18

Page 19: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

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

�19

Page 20: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Kanban

• Una de las herramientas más importantes para organizar el proceso de producción son laskanban (del japonés,kan=visual y ban = tableroo 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

�20

Page 21: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Kanban

Toyota Just-in-Time Kanban System

�21

Page 22: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Tableros kanban en el desarrollo de software

Henrik Kniberg - Lean from the Trenches

�22

Page 23: Fundamentos de las metodologías ágiles

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Lecturas

• Manifiesto ágil, 2001• Ken Beck, Learning from Lean• Entrevista con Mary Poppendieck, An introduction to Lean Software

Development, 2004

�23