Você está na página 1de 49

Metodologías ágiles de

desarrollo de software
Sesión 2

Metodologías Ágiles de Desarrollo de Software



Domingo Gallardo, DCCIA, Univ. Alicante
Índice

Metodologías ágiles de
desarrollo de software

Metodologías Ágiles de Desarrollo de Software



2
Domingo Gallardo, DCCIA, Univ. Alicante
¿Qué es el software?

Metodologías Ágiles de Desarrollo de Software, 2013-14



Domingo Gallardo, DCCIA, Universidad de 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

Metodologías Ágiles de Desarrollo de Software



4
Domingo 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

Metodologías Ágiles de Desarrollo de Software



5
Domingo 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

Metodologías Ágiles de Desarrollo de Software



6
Domingo 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


Metodologías Ágiles de Desarrollo de Software



7
Domingo 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:

Idea

Evaluación Producto

Metodologías Ágiles de Desarrollo de Software



8
Domingo 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

Metodologías Ágiles de Desarrollo de Software



9
Domingo Gallardo, DCCIA, Univ. Alicante
Calidad del código:
WTFs/minuto

Robert C. Martin - Clean Code, 2008


Metodologías Ágiles de Desarrollo de Software

10
Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplos de aplicaciones software

Metodologías Ágiles de Desarrollo de Software



11
Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplos de aplicaciones software

Metodologías Ágiles de Desarrollo de Software



12
Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplos de aplicaciones software

Metodologías Ágiles de Desarrollo de Software



13
Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplos de aplicaciones software

Metodologías Ágiles de Desarrollo de Software



14
Domingo Gallardo, DCCIA, Univ. Alicante
¿Qué es una metodología de
desarrollo?

Metodologías Ágiles de Desarrollo de Software, 2013-14



Domingo Gallardo, DCCIA, Universidad de Alicante
Metodologías de desarrollo

Metodologías Ágiles de Desarrollo de Software



16
Domingo 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

Metodologías Ágiles de Desarrollo de Software



17
Domingo Gallardo, DCCIA, Univ. Alicante
Fases del desarrollo de un proyecto

Metodologías Ágiles de Desarrollo de Software



18
Domingo 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

Metodologías Ágiles de Desarrollo de Software



19
Domingo Gallardo, DCCIA, Univ. Alicante
Modelo V de las fases de desarrollo

Daich et. al - Software Test Technologies Report, 1994


Metodologías Ágiles de Desarrollo de Software

20
Domingo 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

Metodologías Ágiles de Desarrollo de Software



21
Domingo Gallardo, DCCIA, Univ. Alicante
Un chiste ¿o no?

Historia del chiste Metodologías Ágiles de Desarrollo de Software



22
Domingo Gallardo, DCCIA, Univ. Alicante
La propuesta ágil

Metodologías Ágiles de Desarrollo de Software



23
Domingo Gallardo, DCCIA, Univ. Alicante
Mejor

Metodologías Ágiles de Desarrollo de Software



24
Domingo Gallardo, DCCIA, Univ. Alicante
Modelo en espiral

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


Metodologías Ágiles de Desarrollo de Software

25
Domingo 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

Metodologías Ágiles de Desarrollo de Software



26
Domingo Gallardo, DCCIA, Univ. Alicante
Modelo en espiral

Metodologías Ágiles de Desarrollo de Software



27
Domingo Gallardo, DCCIA, Univ. Alicante
¿Qué es ágil?

Metodologías Ágiles de Desarrollo de Software, 2013-14



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

29
Domingo 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

Metodologías Ágiles de Desarrollo de Software



30
Domingo Gallardo, DCCIA, Univ. Alicante
La realidad de los desarrollos

Metodologías Ágiles de Desarrollo de Software



31
Domingo 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

Metodologías Ágiles de Desarrollo de Software



32
Domingo Gallardo, DCCIA, Univ. Alicante
Qué no hacer

Metodologías Ágiles de Desarrollo de Software



33
Domingo Gallardo, DCCIA, Univ. Alicante
Abrazar el cambio

Metodologías Ágiles de Desarrollo de Software



34
Domingo 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

Metodologías Ágiles de Desarrollo de Software



35
Domingo 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.

Metodologías Ágiles de Desarrollo de Software



36
Domingo 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

Desarollo

Feedback Prueba

Metodologías Ágiles de Desarrollo de Software



37
Domingo Gallardo, DCCIA, Univ. Alicante
Cómo cortar en rodajas un elefante

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

Metodologías Ágiles de Desarrollo de Software



38
Domingo Gallardo, DCCIA, Univ. Alicante
Producto mínimo viable

http://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html
Metodologías Ágiles de Desarrollo de Software

39
Domingo 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

Metodologías Ágiles de Desarrollo de Software



40
Domingo 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

Metodologías Ágiles de Desarrollo de Software



41
Domingo 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 posible

3. Mantener todo bajo el control de versiones

4. Si duele, hacerlo con más frecuencia

5. Introducir calidad en el sistema

6. Hecho significa lanzado

7. Todo el mundo es responsable del proceso de entrega

8. Mejora continua

Metodologías Ágiles de Desarrollo de Software



42
Domingo Gallardo, DCCIA, Univ. Alicante
Tubería de despliegue

Dave Farley - Continuous Delivery at LMAX, 2012


Metodologías Ágiles de Desarrollo de Software

43
Domingo 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

Metodologías Ágiles de Desarrollo de Software



44
Domingo Gallardo, DCCIA, Univ. Alicante
Resumen: métodos ágiles vs. cascada

Ágil
Cascada
© Henrik Kniberg
Metodologías Ágiles de Desarrollo de Software

45
Domingo Gallardo, DCCIA, Univ. Alicante
Una nota final para emprendedores

Metodologías Ágiles de Desarrollo de Software, 2013-14



Domingo Gallardo, DCCIA, Universidad de Alicante
Aquí se hace software

Metodologías Ágiles de Desarrollo de Software



47
Domingo Gallardo, DCCIA, Univ. Alicante
Vídeo: “A day in The Cocktail”

Metodologías Ágiles de Desarrollo de Software



48
Domingo Gallardo, DCCIA, Univ. Alicante
Lecturas

• Martin Fowler, The New Methodology (2005)

Metodologías Ágiles de Desarrollo de Software



49
Domingo Gallardo, DCCIA, Univ. Alicante

Você também pode gostar