metodologÍas Ágiles de desarrolloisis... · mediante la entrega temprana y continua de software...

37
METODOLOGÍAS ÁGILES DE DESARROLLO Rubby Casallas Departamento de Ingeniería de Sistemas y Computación Universidad de los Andes 1

Upload: others

Post on 22-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

METODOLOGÍAS ÁGILES

DE DESARROLLORubby Casallas

Departamento de Ingeniería de Sistemas y Computación

Universidad de los Andes

1

Page 2: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Principios del Manifiesto Ágil

Nuestra mayor prioridad es satisfacer al cliente

mediante la entrega temprana y continua de software con

valor

Aceptamos que los requisitos cambien, incluso en

etapas tardías del desarrollo. Los procesos Ágiles

aprovechan el cambio para proporcionar ventaja

competitiva al cliente

Entregamos software funcional frecuentemente, entre dos

semanas y dos meses, con preferencia al periodo de tiempo

más corto posible

2

Page 3: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Principios del Manifiesto Ágil (2)

Los responsables de negocio y los desarrolladores

trabajamos juntos de forma cotidiana durante todo el

proyecto

Los proyectos se desarrollan en torno a

individuos motivados. Hay que darles el entorno y el apoyo

que necesitan, y confiarles la ejecución del trabajo

El método más eficiente y efectivo de comunicar información

al equipo de desarrollo y entre sus miembros es la

conversación cara a cara

El software funcionando es la medida principal de progreso

3

Page 4: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Principios del Manifiesto Ágil (3)

Los procesos Ágiles promueven el desarrollo

sostenible. Los promotores, desarrolladores y usuarios

debemos ser capaces de mantener un ritmo constante de

forma indefinida

La atención continua a la excelencia técnica y al

buen diseño mejora la agilidad

La simplicidad, o el arte de maximizar la cantidad de

trabajo no realizado, es esencial

Las mejores arquitecturas, requisitos y diseños

emergen de equipos auto-organizados

4

Page 5: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Principios del Manifiesto Ágil (4)

A intervalos regulares el equipo reflexiona sobre

cómo ser más efectivo para a continuación ajustar y

perfeccionar su comportamiento en consecuencia

5

Page 6: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

The Paradox of Process

“An agile process creates plans as needed and allows

teams to self organize directly around a problem. We

must trust our process to keep our project on track,

but there is a paradox associated with any process: If

you don't use your process it can't help you; if your

process doesn't help, you won„t use it.”

Tomado de: http://www.agile-process.org/process.html

6

Page 7: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

XP- EXTREME

PROGRAMMINGRubby Casallas

Departamento de Ingeniería de Sistemas y Computación

Universidad de los Andes

7

Page 8: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Agenda

¿Qué es XP?

12 Prácticas

Actividades Principales:

Planeación

Diseño

Codificación

Testing

Conclusiones

Referencias

8

Page 9: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

¿Qué es XP?

Extreme Programming, o XP, es un proceso de

software liviano (lightweight process) (pocas reglas,

pocas prácticas)

Basado en los siguientes principios:

Simplicidad: buenos diseñadores (eXtreme good

designers)

Comunicación: Trabajo en equipo (eXtreme teamwork)

Feedback: Participación del cliente (eXtreme customer

participation)

Coraje: Iteraciones, Refactoring, Testing (eXtreme

iterations, eXtreme refactoring, eXtreme testing)

9

Page 10: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

¿Qué es XP? (2)

XP está diseñado para ser usado en pequeños

equipos de desarrollo.

10

Page 11: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

12 Prácticas11

Diseño simple.

Un programa construido con XP debe ser el más

simple que satisfaga los requerimientos.

No se desarrolla “para el futuro”. Se hace énfasis en lo

que tiene valor para el cliente.

Testing.

Programadores desarrollan software escribiendo

primero las pruebas.

Clientes proveen pruebas de aceptación para

asegurarse que los aspectos que ellos requieren son

provistos por el software.

Refactoring.

Equipos XP mejoran constantemente el diseño del

sistema haciendo refactoring.

Esfuerzo por mantener el sistema sin código

duplicado, simple, cohesivo, etc.

Pair Programming.

Codificación en parejas, dos programadores en la

misma máquina.

Page 12: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Testing

Es más fácil y más rápido escribir el código si

primero se han hecho las pruebas unitarias

Esto ayuda al desarrollador a escribir el código

que realmente se necesita

Esto ayuda a tener inmediata retroalimentación

12

Page 13: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Testing

Todo el código debe tener pruebas unitarias

Todo el código debe pasar las pruebas unitarias

antes de que sea liberado

Se deben crear nuevas pruebas cuando un

defecto es encontrado

Las pruebas de aceptación se ejecutan

frecuentemente

13

Page 14: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Testing: Unit Test Framework

http://xprogramming.com

http://www.junit.org/

14

Page 15: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Diseño Simple

Usar cartas CRC para las sesiones de diseño

Crear soluciones prototipo para reducir riesgo

La funcionalidad se adiciona sólo cuando se

necesite no pensando en el futuro

Nunca adicionar funcionalidad antes de que sea

requerida

15

Page 16: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Diseño: CRC16

Class: Collaborates with ..

Responsibilities

Page 17: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Refactoring

Remover redundancia,

Eliminar funcionalidad no utilizada, y

Rejuvenecer diseños obsoletos

Mantener el código claro y conciso

17

Page 18: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Pair programming

Un equipo es más flexible si todos saben lo

suficiente de todas las partes del sistema y

pueden trabajar sobre ellas

La estrategia es rotar los desarrolladores para

evitar perdidas de conocimiento y cuellos de

botella

18

Page 19: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Pair programming

Todo el código que será incluido en producción

debe ser producido por dos personas que

trabajan juntas en un computador:

Una persona escribe u piensa tácticamente sobre el

método que se está creando

Mientras que la otra persona piensa

estratégicamente sobre cómo el método se integra

con el resto de la clase y chequea que:

sea correcto

se entienda

uso de estándares

19

Page 20: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

12 Prácticas20

Page 21: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Metáfora del sistema

Usar un sistema de nombres y una descripción

común.

Vocabulario común

21

Page 22: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Estándar de codificación

Todos los programadores deben escribir y

documentar el código en la misma manera.

22

Page 23: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Propiedad colectiva del código

Integración continua

Equipos XP integran y construyen el sistema múltiples

veces por día.

23

Page 24: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Integración continua

Equipos XP integran y construyen el sistema múltiples

veces por día.

24

Page 25: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Construcción de équipo sostenible

40-horas por semana

Programadores cansados cometen más errores.

Programadores XP no trabajan tiempo excesivo durante

largos periodos, ellos se mantienen frescos, saludables y

efectivos.

El cliente en el sitio de trabajo de los

desarrolladores

EL cliente trabaja a la par con los desarrolladores

determinando los requerimientos, prioridades y

respondiendo preguntas.

25

Page 26: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

12 Prácticas26

Page 27: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Pruebas de Aceptación (Customer Test)

Las pruebas de aceptación son pruebas de caja

negra

Cada prueba representa algún aspecto

esperado del sistema

Clientes son responsables por verificar si la

prueba falló o no

Las pruebas de aceptación también se deben

ejecutar cuando se hacen pruebas de regresión

antes de liberar un nuevo release

27

Page 28: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Codificación : Integración secuencial

frecuente

Problemas de integración:

Solución XP: integración estrictamente secuencial

realizada por los mismos desarrolladores

Sólo integra un par a la vez, prueba y libera el

depósito del código

29

Page 29: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Diseño: Soluciones prototipo

Programación simple para explorar soluciones

Propósito:

Reducir riesgos

Refinar estimaciones

Estas soluciones pueden echar a la basura

31

Page 30: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Planeación

El proyecto está dividido en iteraciones

El resultado de una iteración es un pequeño release

Cada iteración tiene su propio plan

El calendario para el release está basado en:

Historias de usuario

velocidad del proyecto

32

Page 31: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Planeación : Historias de usuario

Son escritas por los clientes y usuarios como cosas

que ellos necesitan que el sistema haga

Propósito:

Crear estimados de tiempo de desarrollo

Conducir la creación de las pruebas de aceptación

33

Page 32: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Planeación: Reunión de la planeación

del release

El propósito es crear el plan del release

El plan del release se usa para crear el plan de

la iteración

El plan del release tiene un conjunto de reglas

para negociar el cronograma de cada individuo

y negociar los compromisos.

Los estimados para el desarrollo de cada

historia, se hacen en términos de semanas ideales

de trabajo

34

Page 33: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Planeación: Reunión de la planeación

del release

Hay cuatro variables para cuantificar el

proyecto:

Alcance: cuánto será hecho

Recursos: cuánta gente hay disponible

Tiempo: cuanto tiempo se tiene disponible para el

release

Calidad: qué tan bueno se requiere que sea el

software y que tantas pruebas debe tener.

35

Page 34: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Planeación: Reunión de la planeación

del release

Los clientes definen las prioridades

Se define el alcance de la iteración

Se detalla el cronograma

Se estima el tiempo de desarrollo usando la

métrica de velocidad del proyecto

36

Page 35: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Conclusiones

Principales suposiciones:

participación del cliente y negociación

iteraciones

Pequeños incrementos

Testing

integración

Buenos diseñadores (Simplicidad)

Trabajo en equipo

37

Page 36: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Conclusiones

XP es un proceso: actividades, entregables,

responsables, métodos, …

Principales actividades: Planeación, diseño,

codificación, pruebas

XP no es para hackers

XP no es sinónimo de “Programación Heroica”

XP requiere disciplina

38

Page 37: METODOLOGÍAS ÁGILES DE DESARROLLOisis... · mediante la entrega temprana y continua de software con valor Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo

Referencias

Beck, Extreme Programming Explained, Addison Wesley, 1999,

ISBN 0- 201- 61641- 6

Beck & Fowler, Planning Extreme Programming, Addison

Wesley, 20001, ISBN 0- 201- 71091- 9

Fowler, Refactoring, Addison Wesley, 1999, ISBN 0- 201

48567- 2

Jeffries, Anderson & Hendrickson, Extreme Programming

Installed, Addison Wesley, 2001, ISBN 0- 201- 70842- 6.31

http:// www. extremeprogramming.org/

http:// www. xprogramming. com/

http:// www. martinfowler. com/

39