• No se han encontrado resultados

Metodologías ágiles de desarrollo de software

N/A
N/A
Protected

Academic year: 2022

Share "Metodologías ágiles de desarrollo de software"

Copied!
59
0
0

Texto completo

(1)

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

Metodologías ágiles de desarrollo de software

Sesión 2

(2)

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

Índice

Metodologías de desarrollo de

ágiles

software

2

(3)

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

¿Qué es el software?

(4)

Metodologías Ágiles de Desarrollo de Software Domingo 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

(5)

Metodologías Ágiles de Desarrollo de Software 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

5

(6)

Metodologías Ágiles de Desarrollo de Software 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

6

(7)

Metodologías Ágiles de Desarrollo de Software 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

7

(8)

Metodologías Ágiles de Desarrollo de Software 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:

Producto Idea

Evaluación

8

(9)

Metodologías Ágiles de Desarrollo de Software 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

9

(10)

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

Calidad del código:

WTFs/minuto

Robert C. Martin - Clean Code, 2008

10

(11)

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

Ejemplos de aplicaciones software

11

(12)

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

Ejemplos de aplicaciones software

12

(13)

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

Ejemplos de aplicaciones software

13

(14)

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

Ejemplos de aplicaciones software

14

(15)

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

Ejemplos de aplicaciones software

15

(16)

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

Ejemplos de aplicaciones software

16

(17)

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

Ejemplos de aplicaciones software

17

(18)

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

Ejemplos de aplicaciones software

18

(19)

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

Ejemplos de aplicaciones software

19

(20)

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

Ejemplos de aplicaciones software

20

(21)

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

¿Qué es una metodología de

desarrollo?

(22)

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

Metodologías de desarrollo

22

(23)

Metodologías Ágiles de Desarrollo de Software 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

23

(24)

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

Fases del desarrollo de un proyecto

24

(25)

Metodologías Ágiles de Desarrollo de Software 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

25

(26)

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

Modelo V de las fases de desarrollo

Daich et. al - Software Test Technologies Report, 1994

26

(27)

Metodologías Ágiles de Desarrollo de Software 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

27

(28)

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

Un chiste ¿o no?

Historia del chiste

28

(29)

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

La propuesta ágil

29

(30)

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

Mejor

30

(31)

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

Modelo en espiral

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

31

(32)

Metodologías Ágiles de Desarrollo de Software 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

32

(33)

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

Modelo en espiral

33

(34)

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

¿Qué es ágil?

(35)

Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 35

(36)

Metodologías Ágiles de Desarrollo de Software 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

36

(37)

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

La realidad de los desarrollos

37

(38)

Metodologías Ágiles de Desarrollo de Software 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

38

(39)

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

Qué no hacer

39

(40)

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

Abrazar el cambio

40

(41)

Metodologías Ágiles de Desarrollo de Software 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

41

(42)

Metodologías Ágiles de Desarrollo de Software 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.

42

(43)

Metodologías Ágiles de Desarrollo de Software 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

Prueba Desarollo

Feedback

43

(44)

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

Cómo cortar en rodajas un elefante

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

44

(45)

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

Producto mínimo viable

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

45

(46)

Metodologías Ágiles de Desarrollo de Software 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

46

(47)

Metodologías Ágiles de Desarrollo de Software 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

47

(48)

Metodologías Ágiles de Desarrollo de Software 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

48

(49)

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

Tubería de despliegue

Dave Farley - Continuous Delivery at LMAX, 2012

49

(50)

Metodologías Ágiles de Desarrollo de Software 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

50

(51)

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

SalesForce como ejemplo de éxito

51

(52)

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

SalesForce como ejemplo de éxito

52

(53)

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

SalesForce como ejemplo de éxito

53

(54)

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

Resumen: métodos ágiles vs. cascada

© Henrik Kniberg

Ágil Cascada

54

(55)

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

Una nota final para emprendedores

(56)

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

Aquí se hace software

56

(57)

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

Vídeo: “A day in The Cocktail”

57

(58)

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

(59)

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

Lecturas

Martin Fowler, The New Methodology (2005)

59

Referencias

Documento similar

Se tuvo en cuenta además criterios importantes sobre la gestión de proyectos, para lograr una mejor organización del personal; las metodologías de desarrollo de software que jugaron

Durante el transcurso de esta investigación se ha abordado temas relacionados con el estado actual de las metodologías ágiles de desarrollo como han sido sus características

Estudio y análisis de algunas de las metodologías de desarrollo del software, algunos gestores de base de datos que pueden ser utilizados para el

Diseño de una herramienta de Autor de Objetos de Aprendizaje 13 Por otra parte se encuentran las llamadas metodologías ágiles que se centran más en la obtención del sistema sin

XP: Extreme Programming (Programación Extrema), es la más destacada de los procesos ágiles de desarrollo de software. Utilizada para proyectos de corto

Se ha podido constatar mediante el estudio de las tesis ubicadas en la biblioteca de la UCI que ninguno de los modelos existente en el mundo pueden ser aplicados a la UCI, incluso los

Para ello, se deben tener en cuenta m´ ultiples principios dentro de los que se incluyen: in- volucrar al cliente y a los usuarios durante todo el proceso tanto de dise˜ no as´ı como

García-Holgado, "Introducción a la Ingeniería del Software," Recursos docentes de la asignatura Ingeniería de Software I. Grado en