Programación Extrema

48
UNIVERSIDAD DEL ISTMO Tema: Metodología Ágil - Programación Extrema (XP) Expositor: José Pablo Santiago Cabrera. Carrera: Licenciatura En Informática. 13/01/2013

Transcript of Programación Extrema

Page 1: Programación Extrema

UNIVERSIDAD DEL ISTMO

Tema: Metodología Ágil - Programación Extrema (XP)

Expositor: José Pablo Santiago Cabrera.

Carrera: Licenciatura En Informática.

13/01/2013

Page 2: Programación Extrema

Objetivos

• Introducción.

• Desarrollo. – Historia de la XP.

– Definición de la XP.

– Programacion Extrema.

– Recursos de la XP.

– Valores y principios de la XP.

– Roles en XP.

– Ciclo de vida de un proyecto XP.

– Ventajas y desventajas.

• Conclusión

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 3: Programación Extrema

Introducción

• La metodología de desarrollo de software evolucionó desde los años 90’s.

• El proceso del modelo en cascada era visto como lento, degradante y con mucho papeleo.

• Inicialmente los métodos ágiles fueron llamados de “peso liviano”.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 4: Programación Extrema

Introducción

• En una reunión celebra en febrero de 2001

en Utah – EUA, nace el término “ágil”

aplicado al desarrollo de software.

• El objetivo de esta reunión fue:

Dar a conocer los valores y principios de esta

metodología.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 5: Programación Extrema

Introducción

• Tras esta reunión se creó una organización

llamada “The Agile Alliance”.

• Todo esto genero el Manifiesto Ágil, este es

un documento que resume la filosofía “ágil”

y muestra los valores principales del

desarrollo de software ágil.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 6: Programación Extrema

Introducción

• Introducir al cliente en las interacciones del

equipo de desarrollo sobre el proceso.

• Desarrollar software que funciona más que

conseguir una buena documentación.

• La colaboración del cliente más que la

negociación de un contrato.

• Responder a los cambios más que seguir

estrictamente un plan.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 7: Programación Extrema

Introducción

METODOLOGÍA ÁGIL METODOLOGÍA TRADICIONAL

Pocos artefactos, modelos desechables. Más artefactos. El modelo es esencial.

Preparadas para cambios durante el proyecto. Cierta resistencia a los cambios.

Proceso menos controlado, pocos principios. Proceso con numerosas políticas y normas.

El cliente es parte del equipo de desarrollo. El cliente interactúa mediante reuniones.

Existe contrato flexible. Existe un contrato prefijado.

Grupos pequeños trabajando en el mismo sitio. Grupos grandes y posiblemente distribuidos.

Poco consumo de recursos. Más consumo de recursos.

Pocos roles. Mas Roles.

Menos énfasis en la arquitectura del software. La arquitectura de software es esencial.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 8: Programación Extrema

Introducción

• Ejemplos de Metodologías Ágil:

• Adaptive Software Development (ASD).

• Agile Unified Process (AUP).

• Crystal Clear.

• Essential Unified Process (EssUP).

• Feature Driven Development (FDD).

• Lean Software Development (LSD).

• Kanban.

• Open Unified Process (OpenUP).

• Programación Extrema (XP).

• Método de Desarrollo de Sistemas Dinámicos (DSDM).

• Scrum.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 9: Programación Extrema

Historia

• En 1989, Cunningham formó un equipo que usaba los principios y muchas de las prácticas que después adoptaría XP.

• Pero se reconoce a Kent Beck como el que articuló esta propuesta y le dio nombre propio con la publicación del libro “Extreme Programming Explained: embrace change” en 1999.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 10: Programación Extrema

Historia

El manifiesto ágil destaca los valores principales del desarrollo de software ágil, algunas de ellas son:

• Desarrollar software que funciona más que conseguir una buena documentación.

• La colaboración del cliente más que la negociación de un contrato.

• Responder a los cambios más que seguir estrictamente un plan.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 11: Programación Extrema

Definición

• La Programación Extrema (XP) es una

metodología de desarrollo de peso liviano o

ágil.

• La cual acepta lo que se conoce como

buenas prácticas del desarrollo de sistemas

de software y las lleva al extremo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 12: Programación Extrema

Definición

• Este modelo de programación se basa en

una serie de metodologías de desarrollo de

software en la que se da prioridad a los

trabajos que dan un resultado directo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 13: Programación Extrema

Definición

• La XP se basa de variables de control,

actividades de control, valores, principios

básicos.

• También existen algunas prácticas

esenciales que distinguen a XP de otras

metodologías de desarrollo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 14: Programación Extrema

Definición

• La XP permite controlar los problemas de riesgo en los proyectos mediante medidas o decisiones extremas, y algunas de las características de estas son:

– Se basa en retroalimentación continua entre el cliente y el equipo de desarrollo.

– Comunicación fluida entre todos los integrantes.

– Simplicidad en las soluciones implementadas.

– Coraje para enfrentar los cambios.

– La XP es adecuada para proyectos con requisitos imprecisos y muy cambiantes.

– La toma de decisiones debe ser muy rápida y efectiva.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 15: Programación Extrema

XP

• La principal diferencia entre la

metodología de desarrollo de XP y otros

tipos de metodologías de desarrollo es que

se centra a escuchar al usuario.

• Sabiendo escuchar lo que desean los

usuarios se puede calcular la cantidad de

recursos que requerirá.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 16: Programación Extrema

XP

• Por ejemplo.

– La filosofía de XP asume que si el analista determina el alcance, la calidad y el tiempo necesarios para terminar el proyecto, puede ajustar el costo.

– Si el analista determina la cantidad de tiempo, la calidad y el costo que se requieren, podría ajustar el alcance.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 17: Programación Extrema

Recursos de la

Programacion Extrema

– Las actividades básicas de la programación

extrema son:

• Codificar

• Probar

• Escuchar

• Diseñar

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 18: Programación Extrema

Recursos de la

Programacion Extrema

– Codificar.

• El proceso básicamente es esto:

– Tener un pensamiento.

– Codificarlo.

– Probarlo.

– Verificar si el pensamiento fue correcto.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 19: Programación Extrema

Recursos de la

Programacion Extrema

– Probar.

• La programación extrema realiza pruebas escritas

para verificar la codificación, la funcionalidad, el

rendimiento y la conformidad con los objetivos.

• Corto Plazo

– Si las pruebas se ejecutan perfectamente se puede seguir

adelante con la confianza renovada.

• Largo Plazo

– Mantiene vivo un sistema, y le permite hacer muchos más

cambios de los que serían posibles.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 20: Programación Extrema

Recursos de la

Programacion Extrema

– Escuchar

• En la XP, esta actividad se lleva al extremo.

• El desarrollador debe escuchar al cliente.

• Los desarrolladores asumen que no saben nada

acerca del negocio en el que están colaborando, y por

lo tanto deben escuchar cuidadosamente a los

usuarios para obtener las respuestas a sus preguntas.

• Si no escucha, no sabrá lo que debe codificar o lo que

debe probar.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 21: Programación Extrema

Recursos de la

Programacion Extrema

– Diseñar

• Diseñar es una actividad evolutiva, y por ello los

sistemas que se diseñan con un enfoque de la

programación extrema se conceptualizan como en

constante evolución, siempre diseñándose.

• Diseñar bien permite agregar extensiones al sistema

haciendo cambios en un solo lugar.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 22: Programación Extrema

Recursos de la

Programacion Extrema

– Las variables de control de recursos son:

• Calidad

• Alcance

• Tiempo

• Costo

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 23: Programación Extrema

Recursos de la

Programacion Extrema

– Calidad.

• Este recurso se divide en dos calidad interna y

externa.

• Calidad interna.

– Esta calidad se basa de probar factores del software como la

funcionalidad y la conformidad. Se recomienda que

centrarse mas a esta calidad.

• Calidad externa.

– Esta calidad se basa de la percepción del cliente al sistema.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 24: Programación Extrema

Recursos de la

Programacion Extrema

– La XP permite sacrificar algunos de los aspectos de calidad externos, para que el sistema sea liberado a tiempo. Implicando a que el cliente tenga que lidiar con algunos errores.

– Si el desarrollador desea cumplir con la fecha límite, tal vez la interfaz de usuario no sea perfecta,

– La puede refinar en una versión posterior.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 25: Programación Extrema

Recursos de la

Programacion Extrema

– Alcance.

• Supongamos que estamos desarrollando un software

para la empresa ADO.

• El cliente pide:

– Pagina web radio.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 26: Programación Extrema

Recursos de la

Programacion Extrema

• Tiempo.

– Es necesario dedicar suficiente tiempo a la elaboración de un proyecto.

– El tiempo se asigna a actividades separadas.

– La XP desafía la idea de que más tiempo le permitirá obtener los resultados que desea.

– Con frecuencia suele ocurrir que los clientes se sienten felices si parte de la funcionalidad queda lista a tiempo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 27: Programación Extrema

Recursos de la

Programacion Extrema

• Costo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 28: Programación Extrema

Valores y Principios

de la XP

• En esta metodología existen cuatro valores

que crean un entorno estable para el

desarrollo y son:

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 29: Programación Extrema

Valores y Principios

de la XP

• Comunicación. – Cada esfuerzo humano tiene la posibilidad de fallar en la

comunicación.

• Simpleza – Cuando se está trabajando en un proyecto de desarrollo de software,

la primera reacción es abrumarse por la complejidad y magnitud de la tarea.

• Retroalimentación – Una retroalimentación buena y concreta, que es útil para el

programador, analista y cliente puede ocurrir en segundos, minutos, días, semanas o meses, dependiendo de lo que se necesita, quién está comunicando y lo que se hará con dicha retroalimentación.

• Valentía – La valentía tiene que ver con un nivel de confianza que debe existir

en el equipo de desarrollo.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 30: Programación Extrema

Valores y Principios

de la XP

• 12 Principios – El juego de la planificación.

– Pequeñas versiones.

– Metáfora.

– Diseño simple.

– Recodificación.

– Programacion en parejas.

– Propiedad colectiva.

– Integración continua.

– Cuarenta Horas.

– Cliente In Situ.

– Estándares de codificación.

– Hacer pruebas

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 31: Programación Extrema

Valores y Principios

de la XP

– El juego de la planificación.

• Preguntas entre Negocio- Técnico. – Ámbito. Estimaciones.

– Prioridad. Procesos.

– Fecha de versiones. Consecuencias.

– Pequeñas versiones.

• Versiones pequeñas con los requisitos mas importantes.

– Metáfora.

• Pequeña historia que tiene los desarrolladores de como funciona el sistema.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 32: Programación Extrema

Valores y Principios

de la XP

– Diseño simple.

• Funciona con todas las pruebas, tiene el menor

numero de clases y métodos.

– Recodificación.

• O refactorizar, consiste en hacer el programa mas

simple sin perder funcionalidad.

– Programacion en parejas.

– Propiedad colectiva.

• Cualquiera que pueda aportar valor al código puede

hacer, no existe individualidad.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 33: Programación Extrema

Valores y Principios

de la XP

– Integración continua.

• Debe integrarse módulos como mínimo una vez al día y probar su totalidad en el sistema.

– Cuarenta Horas.

– Cliente In Situ.

• Un cliente debe estar presenten con el equipo de programadores.

– Estándares de codificación.

• Se debe establecer un estándar de codificación.

– Hacer pruebas

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 34: Programación Extrema

Roles en XP

– Cliente

• Escribe «Historias de usuarios» y especifica pruebas

funcionales.

• Establece prioridades.

• Puede ser o no un usuario final.

– Programador

• Hace estimaciones sobre las historias.

• Define tareas a partir de las historias y hace

estimaciones.

• Implementa las historias y las pruebas unitarias.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 35: Programación Extrema

Roles en XP

– Tutor.

• Observa todo, identifica señales de peligro, se asegura que

el proyecto se mantiene en curso.

• Ayuda en todo.

– Perseguidor (calidad)

• Monitoriza el progreso de los programadores, toma acción

si las cosas tienden a salirse del control.

– Verificador.

• Implementa y corre las pruebas funcionales.

• Presenta graficas de los resultados y se asegura de que la

gente conoce cuando los resultados empiezan a caer.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 36: Programación Extrema

Roles en XP

– Agorero.

• Se asegura que todos conocen los riesgos que existen.

• Se asegura que las malas noticias no se oculten.

– Gestor.

• Planifica las reuniones.

• Es el responsable directo del propietario de oro.

– Propietario de oro.

• La persona que paga el proyecto.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 37: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– El ciclo de vida ideal de XP consiste de seis

fases que son:

• Exploración.

• Planificación de la Entrega (Release).

• Iteraciones.

• Producción.

• Mantenimiento.

• Muerte del Proyecto.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 38: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Exploración.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 39: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Planificación de la Entrega.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 40: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Iteraciones

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 41: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Producción

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 42: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Producción

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 43: Programación Extrema

Ciclo de vida de un

proyecto en XP.

– Mantenimiento

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 44: Programación Extrema

Ciclo de vida de un

proyecto en XP.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 45: Programación Extrema

Ventajas y Desventajas

– Ventajas

• Satisfacción del cliente.

• Cumplimiento de plazos.

• El cliente tiene el control sobre las prioridades.

• Se hacen pruebas continuas durante el proyecto.

• Calidad en el trabajo.

• Es utilizada donde los requerimientos cambian

rápidamente.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 46: Programación Extrema

Ventajas y Desventajas

– Desventajas

• Es recomendado emplearlo en proyectos a corto

plazo.

• Altos costos en caso de fallar.

• Es complicado predecir costos y tiempo de desarrollo

si no se tiene un buen conocimiento de ellos.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 47: Programación Extrema

Conclusión

– En conclusión el proceso de esta metodología basada en prototipos es una técnica útil para la recopilación de información para completar el ciclo de vida del desarrollo de sistemas.

– Prácticamente la metodología ágil de programación extrema se encuentra basada en un proceso que promueve la comunicación en el equipo, la sencillez en la implementación, otra muy importante es que el cliente debe estar muy informado e implicado en el desarrollo de esta para aumentar el nivel de conformidad, que el tiempo del desarrollo sea el indicado y que la toma de decisiones se tiene que ser muy rápida pero a la vez efectiva.

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP

Page 48: Programación Extrema

Bibliografía

– http://oness.sourceforge.net/docbook/metodologia.html

– http://books.google.com.mx/books?id=G8EL4H4vf7UC&printsec=frontcover&dq=

extreme+programming+explained&hl=es&sa=X&ei=V7GiUNyoOoK9qgGGj4CYAg

&ved=0CC0Q6AEwAA#v=onepage&q=extreme%20programming%20explained&f=

false

– http://mhsaleh.persiangig.com/document/extremeprogramming/Extreme%20Prog

ramming%20Explained%20-%20Kent%20Beck;%20Addison-Wesley,%201999.pdf

13/01/2013

J. Pablo Santiago Cabrera

Calidad de Software

Programacion Extrema XP