metodologías agiles de desarrollo de software

49
Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante Metodologías ágiles de desarrollo de software Sesión 2

Upload: domingo-gallardo

Post on 03-Jul-2015

719 views

Category:

Technology


0 download

DESCRIPTION

Sesión 2 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

Page 1: Metodologías agiles de desarrollo de software

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

Metodologías ágiles de desarrollo de softwareSesión 2

Page 2: Metodologías agiles de desarrollo de software

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

Índice

Metodologías de desarrollo de

ágilessoftware

�2

Page 3: Metodologías agiles de desarrollo de software

Metodologías Ágiles de Desarrollo de Software, 2013-14Domingo Gallardo, DCCIA, Universidad de Alicante

¿Qué es el software?

Page 4: Metodologías agiles de desarrollo de software

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

Metáforas

• La analogía es un proceso de pensamiento muy potente

• Una metáfora establece una analogía entre algo que conocemos poco con algo similar que entendemos mejor

• El uso de las metáforas está en la base del modelado

• Metáforas sobre el desarrollo de software• Muchas y variadas• Todas ellas tienen algo de verdad, resaltan un aspecto importante• Ninguna es completa

�4

Page 5: Metodologías agiles de desarrollo de software

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

Metáforas para el desarrollo de software

• Software como escritura: código escrito y leído• Software como cultivo: crecimiento orgánico• Software como cultivo por acreción: niveles que esconden detalles• Software como construcción: planificación y objetivos• Software como sistema legal: relación entre componentes• Software como película: proceso creativo de múltiples profesionales

�5

Page 6: Metodologías agiles de desarrollo de software

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

El software es único

• El software, su desarrollo y su distribución es un invento único y totalmente nuevo en la historia de la humanidad• Flexible• Modificable• Reutilizable• Publicable• Desarrollo abierto y colaborativo

�6

Page 7: Metodologías agiles de desarrollo de software

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

Software como producto a entregar

• Software en 1980• Cajas llenas de CDs que se distribuyen en tiendas• Programas en mainframes con terminales

• Software en la actualidad• Servicios en Internet, interconexión de estado, procesamiento• Múltiples dispositivos con los que interactuan los usuarios

• Vídeo de Microsoft (2009)“What is Software + Services?”http://www.youtube.com/watch?v=EXS0BFS6QT4

�7

Page 8: Metodologías agiles de desarrollo de software

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

Software como producto a usar

• El software es un producto único no sólo en su proceso de desarrollo, sino en su finalidad• El objetivo final del software es ser usado• Para conseguir ese objetivo es necesario un gran trabajo de

comunicación

• Mejora continua:

Producto

Idea

Evaluación

�8

Page 9: Metodologías agiles de desarrollo de software

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

Calidad en el software

• Nuestra responsabilidad como ingenieros e ingenieras es desarrollar software de calidad, mejorando los procesos de desarrollo y el resultado final

• Software que no funciona:• Software que solo cumple parcialmente lo que necesita el usuario, con

errores y omisiones• Software con el que el usuario se tiene que “pelear”• Software lento, poco eficiente• Software poco modificable, poco entendible, con deuda técnica

�9

Page 10: Metodologías agiles de desarrollo de software

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

Calidad del código: WTFs/minuto

Robert C. Martin - Clean Code, 2008

�10

Page 11: Metodologías agiles de desarrollo de software

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

Ejemplos de aplicaciones software

�11

Page 12: Metodologías agiles de desarrollo de software

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

Ejemplos de aplicaciones software

�12

Page 13: Metodologías agiles de desarrollo de software

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

Ejemplos de aplicaciones software

�13

Page 14: Metodologías agiles de desarrollo de software

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

Ejemplos de aplicaciones software

�14

Page 15: Metodologías agiles de desarrollo de software

Metodologías Ágiles de Desarrollo de Software, 2013-14Domingo Gallardo, DCCIA, Universidad de Alicante

¿Qué es una metodología de desarrollo?

Page 16: Metodologías agiles de desarrollo de software

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

Metodologías de desarrollo

�16

Page 17: Metodologías agiles de desarrollo de software

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

Metodologías de desarrollo

• Una metodología de desarrollo del software define• Pasos a seguir• Roles y responsabilidades de los distintos actores que intervienen en

el proceso

• Una metodología es más que un conjunto de reglas• Valores• Principios• Buenas Prácticas y herramientas

�17

Page 18: Metodologías agiles de desarrollo de software

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

Fases del desarrollo de un proyecto

�18

Page 19: Metodologías agiles de desarrollo de software

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

Ciclo de vida clásico de un proyecto software

• Valoración inicial del proyecto• Toma de requisitos• Diseño• Desarrollo de componentes• Pruebas unitarias• Integración• Pruebas de integración• Despliegue• Pruebas de rendimiento y funcionales• Lanzamiento• Mantenimiento

�19

Page 20: Metodologías agiles de desarrollo de software

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

Modelo V de las fases de desarrollo

Daich et. al - Software Test Technologies Report, 1994

�20

Page 21: Metodologías agiles de desarrollo de software

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

El problema de los modelos clásicos

• Confianza excesiva en las especificaciones iniciales• Software que no satisface las necesidades del usuario

• Desarrollo monolítico• Problemas con cambios y futuro mantenimiento

• Es imposible estimar más allá de 6 meses• Proyectos que acumulan retrasos

• Exceso de documentación inútil• El objetivo final del desarrollo es software que funciona, no pilas de

documentos con diagramas UML y descripciones de APIs internas

�21

Page 22: Metodologías agiles de desarrollo de software

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

Un chiste ¿o no?

Historia del chiste�22

Page 23: Metodologías agiles de desarrollo de software

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

La propuesta ágil

�23

Page 24: Metodologías agiles de desarrollo de software

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

Mejor

�24

Page 25: Metodologías agiles de desarrollo de software

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

Modelo en espiral

Boehm - A Spiral Model of Software Development and Enhancement, 1988

�25

Page 26: Metodologías agiles de desarrollo de software

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

Modelo en espiral

• Sistema mínimo funcionando desde el principio

• Cada interación añade un conjunto de funcionalidades (incremental) y, si es necesario, refina alguna de las ya existentes (evolutivo)

• Al final de cada iteración en el modelo en espiral se obtenía un prototipo

• Hoy las mejores prácticas, lenguajes, herramientas de desarrollo y entornos de despliegue hace posible obtener un sistema totalmente funcional

�26

Page 27: Metodologías agiles de desarrollo de software

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

Modelo en espiral

�27

Page 28: Metodologías agiles de desarrollo de software

Metodologías Ágiles de Desarrollo de Software, 2013-14Domingo Gallardo, DCCIA, Universidad de Alicante

¿Qué es ágil?

Page 29: Metodologías agiles de desarrollo de software

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

Page 30: Metodologías agiles de desarrollo de software

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

El cambio es inevitable

• Cambio durante la construcción del proyecto, el • Incertidumbres• Modificaciones al ver los primeros resultados

• Cambio una vez terminado el proyecto• Mantenimiento• Modificaciones y ampliaciones debidos a cambios en el proceso de

negocio

�30

Page 31: Metodologías agiles de desarrollo de software

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

La realidad de los desarrollos

�31

Page 32: Metodologías agiles de desarrollo de software

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

La realidad de los desarrollos

• Lo que nos gustaría• Los clientes saben lo que quieren• El equipo sabe cómo construirlo• Nada cambiará en el camino• Tenemos mucho tiempo y dinero para hacerlo

• La realidad• Los clientes descubren lo que necesitan• Los desarrolladores descubren cómo hacerlo• Muchas cosas cambian en el camino• Siempre hay más cosas qué hacer que

tiempo y dinero disponible

�32

Page 33: Metodologías agiles de desarrollo de software

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

Qué no hacer

�33

Page 34: Metodologías agiles de desarrollo de software

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

Abrazar el cambio

�34

Page 35: Metodologías agiles de desarrollo de software

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

Abrazar el cambio

• Una de las características principales del software es su flexibilidad

• Los procesos, herramientas y plataformas deben aceptar sin tensiones el cambio• Por ejemplo, no es asumible que añadir nuevos campos a un modelo

obligue a revisar y modificar las consultas SQL desarrolladas

• El desarrollo debe ser robusto frente a futuros cambios• Importancia de las pruebas de regresión

�35

Page 36: Metodologías agiles de desarrollo de software

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

Desarrollo incremental

• En todas las metodologías ágiles se apuesta por un desarrollo en iteraciones cortas

• Al final de cada iteración corta debe haberse avanzado en el desarrollo del producto software y deben existir una conjunto de características (features) adicionales que antes no existían y que se integran correctamente con las existentes previamente.

• Un modelo ágil de desarrollo de software debe permitir la integración rápida de las nuevas características en el producto software existente.

�36

Page 37: Metodologías agiles de desarrollo de software

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

Algunos principios ágiles

• Satisfacer al cliente mediante la entrega rápida de software útil• Se entrega frecuentemente software que funciona (semanas en lugar

de meses)• La simplicidad es esencial: el arte de maximizar la cantidad de trabajo

no hecha• Las iteraciones cortas entregan valor al cliente y permiten obtener la

retroalimentación (feedback) para el equipo

Prueba

Desarollo

Feedback

�37

Page 38: Metodologías agiles de desarrollo de software

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

Cómo cortar en rodajas un elefante

http://blog.crisp.se/2013/07/25/henrikkniberg/elephant-carpaccio-facilitation-guide

�38

Page 39: Metodologías agiles de desarrollo de software

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

Producto mínimo viable

http://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html

�39

Page 40: Metodologías agiles de desarrollo de software

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

Producto mínimo viable

• MVP (Minimum Viable Product)• Idea para construir sturtups aplicable al desarrollo de software• Hacer primero lo que más incertidumbre genera

• Mejoras incrementales: • Conseguir futuras iteraciones cada vez más parecidas• Velocidad constante• Mejores estimaciones

�40

Page 41: Metodologías agiles de desarrollo de software

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

Continuous delivery

!

• Movimiento DevOps• Integra la agilidad en el desarrollo (Development) y la puesta en

producción (Operations)• Origen de las prácticas de entrega continua (continuous delivery)

• Entrega continua• Integrar automáticamente• Desplegar automáticamente a entornos de prueba• Probar automáticamente• Desplegar a producción automáticamente

�41

Page 42: Metodologías agiles de desarrollo de software

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

Principios de la entrega continua

1. Crear un proceso de lanzamiento (release) de software repetible y fiable

2. Automatizar todo lo que sea posible3. Mantener todo bajo el control de versiones4. Si duele, hacerlo con más frecuencia5. Introducir calidad en el sistema6. Hecho significa lanzado7. Todo el mundo es responsable del proceso de entrega8. Mejora continua

�42

Page 43: Metodologías agiles de desarrollo de software

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

Tubería de despliegue

Dave Farley - Continuous Delivery at LMAX, 2012

�43

Page 44: Metodologías agiles de desarrollo de software

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

Herramientas y plataformas ágiles

• Desarrollo• Sistemas de construcción: Maven• Sistemas de control de versiones: Git / GitHub, Mercurial / Bitbucket• Herramientas de prueba: JUnit, Selenium, Sonar• Sistemas de integración continua: Hudson

• Despliegue• Sistemas virtuales: VirtualBox, Vagrant• Sistemas en la nube (Paas, Platform As A Service): Heroku, OpenShift

�44

Page 45: Metodologías agiles de desarrollo de software

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

Resumen: métodos ágiles vs. cascada

© Henrik Kniberg

ÁgilCascada

�45

Page 46: Metodologías agiles de desarrollo de software

Metodologías Ágiles de Desarrollo de Software, 2013-14Domingo Gallardo, DCCIA, Universidad de Alicante

Una nota final para emprendedores

Page 47: Metodologías agiles de desarrollo de software

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

Aquí se hace software

�47

Page 48: Metodologías agiles de desarrollo de software

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

Vídeo: “A day in The Cocktail”

�48

Page 49: Metodologías agiles de desarrollo de software

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

Lecturas

• Martin Fowler, The New Methodology (2005)

�49